Generative AI в ABAP Cloud
Generative AI в ABAP Cloud — механізм викликати large language models (LLM) з ABAP-коду через released API. Головний фреймворк — ABAP AI SDK, інтегрований з Intelligent Scenario Lifecycle Management (ISLM). Ти не конфігуруєш LLM-ключ у ABAP — замість цього адміністратор створює intelligent scenario (ABAP репо-обʼєкт) та intelligent scenario model (прив’язку до конкретного LLM), а ти у коді посилаєшся на імʼя сценарію і викликаєш LLM через фабрику.
Сторінка актуальна тільки для ABAP Cloud (BTP ABAP Environment + S/4HANA Cloud). У Standard ABAP цих released API немає.
Передумови
Section titled “Передумови”- Адмін-частина (її робить базис, не розробник):
- Підключити генеративний сервіс на BTP.
- Створити intelligent scenario (ABAP репо-обʼєкт).
- Створити intelligent scenario model — прив’язку сценарію до конкретної моделі LLM.
- Розробницька частина:
- Створити або використати існуючий prompt template (включений в intelligent scenario model).
- Викликати completion API з коду.
У прикладах використовуються демо-імена ZDEMO_ABAP_INT_SCEN (сценарій), ZDEMO_ABAP_INT_SCEN_MODEL (модель) і ZDEMO_PROMPT_TEMPLATE (template).
Найкоротший виклик
Section titled “Найкоротший виклик”TRY. FINAL(ai_api) = cl_aic_islm_compl_api_factory=>get( )->create_instance( 'ZDEMO_ABAP_INT_SCEN' ). FINAL(result) = ai_api->execute_for_string( `Розкажи анекдот.` ). FINAL(completion) = result->get_completion( ). CATCH cx_aic_api_factory cx_aic_completion_api INTO FINAL(error). FINAL(error_text) = error->get_text( ).ENDTRY.Три кроки: фабрика → створення instance → виклик з промптом. Результат — обʼєкт IF_AIC_COMPLETION_API_RESULT з методами get_completion, get_prompt_token_count, тощо.
Налаштування параметрів
Section titled “Налаштування параметрів”Температура, max tokens, інші параметри — через get_parameter_setter( ):
FINAL(params) = ai_api->get_parameter_setter( ).params->set_maximum_tokens( 500 ).params->set_temperature( '0.5' ). " значення від 0 до 1
FINAL(result) = ai_api->execute_for_string( `Що таке ABAP?` ).Message-based виклик (chat-style)
Section titled “Message-based виклик (chat-style)”Коли треба кілька повідомлень у контексті (system + user + assistant + user) — через message container:
FINAL(messages) = ai_api->create_message_container( ).
messages->set_system_role( `Ти професійний перекладач.` ).messages->add_user_message( `Можеш перекладати з німецької англійською?` ).messages->add_assistant_message( `Так.` ).messages->add_user_message( `Переклади: "Entschuldigung, wie komme ich zum Bahnhof?"` ).
FINAL(answer) = ai_api->execute_for_messages( messages )->get_completion( ).Це дозволяє few-shot prompting і підтримку ролі системного промпту.
Prompt template
Section titled “Prompt template”Коли prompt централізується через intelligent scenario model (для перекладу, governance, повторного використання):
FINAL(tpl) = cl_aic_islm_prompt_tpl_factory=>get( )->create_instance( islm_scenario = 'ZDEMO_ABAP_INT_SCEN' template_id = 'ZDEMO_PROMPT_TEMPLATE' ).
FINAL(prompt) = tpl->get_prompt( ). " підставляє параметри, якщо є
FINAL(msgs) = ai_api->create_message_container( ).msgs->set_system_role( prompt ).msgs->add_user_message( `... user input ...` ).
FINAL(answer) = ai_api->execute_for_messages( msgs )->get_completion( ).Якщо template приймає параметри — передавай їх через get_prompt( parameters = ... ).
Метадані результату
Section titled “Метадані результату”IF_AIC_COMPLETION_API_RESULT дає не тільки текст:
FINAL(result) = ai_api->execute_for_string( `...` ).
DATA(completion) = result->get_completion( ).DATA(prompt_tokens) = result->get_prompt_token_count( ).DATA(output_tokens) = result->get_completion_token_count( ).DATA(total_tokens) = result->get_total_token_count( ).DATA(runtime_ms) = result->get_runtime_ms( ).Використовуй для моніторингу вартості і швидкості.
Exception handling
Section titled “Exception handling”Три типові exception-класи:
| Exception | Коли |
|---|---|
CX_AIC_API_FACTORY | Сценарій не існує, модель не активована, немає прав |
CX_AIC_COMPLETION_API | Помилка під час виклику LLM (timeout, rate limit, provider error) |
CX_AIC_PROMPT_TEMPLATE | Template не знайдено або проблеми з параметрами |
Завжди обгортай у TRY/CATCH — мережеві/квотні помилки неминучі.
Ще ABAP + AI
Section titled “Ще ABAP + AI”Окрема гілка — Joule for Developers (AI-асистент всередині ADT для генерації CDS, BDL, класів з тексту). Це не runtime, а dev-time інструмент, на відміну від ABAP AI SDK, який викликається з коду.
Посилання
Section titled “Посилання”- Generative AI in ABAP Cloud — SAP Help.
- Joule for Developers, ABAP AI Capabilities.
- Developing Your Own AI-Enabled Applications.
- ABAP AI Strategy FAQ.
- Tutorial RAP120 — Build SAP Fiori Apps with ABAP Cloud and Joule.
Адаптовано з 30_Generative_AI.md (Apache 2.0). Повний перелік нюансів — в оригіналі.