Menggunakan panggilan fungsi SAP dengan Gemini

Dokumen ini menjelaskan cara menggunakan panggilan fungsi SAP dengan Gemini, menggunakan Vertex AI SDK untuk ABAP.

Anda dapat menentukan fungsi kustom dan menyediakannya ke model Gemini menggunakan fitur Panggilan Fungsi. Model tidak langsung memanggil fungsi kustom, tetapi menghasilkan output data terstruktur yang menentukan nama fungsi dan argumen yang disarankan. Output ini memungkinkan Anda menulis aplikasi yang mengambil output terstruktur dan memanggil API eksternal. Output API yang dihasilkan kemudian dapat digabungkan ke perintah model lebih lanjut, sehingga memungkinkan respons kueri yang lebih komprehensif.

Vertex AI SDK untuk ABAP menyederhanakan pemanggilan fungsi bagi developer ABAP dengan memberi mereka peluang untuk memanggil logika kustom yang ditulis dalam modul fungsi SAP dengan:

  • Meneruskan nama modul fungsi SAP ke model sebagai deklarasi fungsi, yang menjelaskan nama fungsi, tujuannya, dan parameter terkait.
  • Menetapkan pemanggilan otomatis modul fungsi SAP secara implisit saat memanggil model.

Berikut adalah perjalanan developer ABAP yang khas untuk memanggil panggilan fungsi SAP:

  1. Pengguna memberikan perintah input.
  2. SDK meneruskan perintah input dan deklarasi fungsi ke model.
  3. Model meninjau perintah dan fungsi yang dideklarasikan untuk mendapatkan fungsi yang akan dipanggil dan menyarankan nilai parameter untuk memanggil fungsi.
  4. Jika pemanggilan otomatis ditetapkan, SDK akan memanggil modul fungsi SAP.
  5. SDK kemudian memanggil model dengan output fungsi yang dipanggil.
  6. Model merespons dengan jawaban yang andal untuk perintah akhir yang diperkaya dengan output fungsi yang dipanggil.
  7. SDK menampilkan respons kepada pengguna.

Panggilan fungsi SAP dengan Gemini

Jika Anda memilih untuk tidak memanggil modul fungsi SAP secara otomatis, SDK akan memungkinkan Anda menggunakan fitur panggilan fungsi tanpa pemanggilan modul fungsi SAP. Dalam hal ini, Anda dapat mengikuti alur kerja panggilan fungsi standar untuk menggunakan alat eksternal seperti API dan fungsi.

Sebelum memulai

Sebelum menggunakan Vertex AI SDK for ABAP untuk panggilan fungsi SAP dengan Gemini, pastikan Anda atau administrator Anda telah menyelesaikan prasyarat berikut:

Memperkaya konteks model AI Gemini dengan data SAP

Bagian ini menjelaskan cara memperkaya konteks model Gemini AI dengan data SAP menggunakan Vertex AI SDK untuk ABAP.

Membuat instance class pemanggil multimodal Gemini

Untuk memanggil panggilan fungsi di SAP, Anda menggunakan class /GOOG/CL_GENERATIVE_MODEL. Anda membuat instance class dengan meneruskan kunci model yang dikonfigurasi dalam parameter pembuatan model.

DATA(lo_model) = NEW /goog/cl_generative_model( iv_model_key = 'MODEL_KEY' ).

Ganti MODEL_KEY dengan nama kunci model, yang dikonfigurasi dalam parameter pembuatan model.

Membuat modul fungsi SAP

Untuk membuat modul fungsi SAP untuk pemanggilan otomatis oleh SDK, ikuti skema yang disediakan:

Kategori Nama parameter Jenis terkait
Mengimpor IT_FUNCTION_PARAMETERS /GOOG/T_FUNCTION_PARAMETERS
Mengekspor EV_FUNCTION_RESPONSE STRING
Mengubah CV_PROMPT STRING
Pengecualian /GOOG/CX_SDK Exception Class

Berdasarkan parameter impor, tulis logika kustom Anda dalam modul fungsi, yang dapat mengambil data SAP melalui kueri SELECT, atau memanggil API atau modul eksternal untuk mendapatkan informasi yang hilang.

Tetapkan parameter ekspor EV_FUNCTION_RESPONSE dengan informasi untuk memberikan masukan ke konteks LLM. Anda juga dapat mengubah atau memodifikasi teks perintah di CV_PROMPT berdasarkan logika kustom dan persyaratan bisnis Anda untuk memberi petunjuk lebih lanjut kepada LLM berdasarkan berbagai skenario bisnis.

Menambahkan deklarasi fungsi

Untuk menambahkan deklarasi fungsi ke konteks LLM, Anda dapat menggunakan metode ADD_FUNCTION_DECLARATION. Panggil metode ADD_FUNCTION_DECLARATION setiap kali Anda perlu menambahkan fungsi ke konteks.

DATA lt_parameters TYPE /goog/cl_generative_model=>tt_parameter_properties.
APPEND VALUE #( parameter_name = 'PARAMETER_NAME'
                type           = 'PARAMETER_TYPE'
                description    = 'PARAMETER_DESCRIPTION'
                is_required    = 'PARAMETER_IS_REQUIRED' ) TO lt_parameters.
lo_model->add_function_declaration( iv_name        = 'FUNCTION_MODULE_NAME'
                                    iv_description = 'FUNCTION_MODULE_DESCRIPTION'
                                    it_parameters  = lt_parameters ).

Ganti kode berikut:

  • PARAMETER_NAME: Nama parameter.
  • PARAMETER_TYPE: Jenis data parameter, seperti string, integer, atau boolean.
  • PARAMETER_DESCRIPTION: Penjelasan yang jelas tentang tujuan parameter dan format yang diharapkan.
  • PARAMETER_IS_REQUIRED: Jika parameter ini wajib agar fungsi dapat beroperasi, tetapkan nilai ke ABAP_TRUE.
  • FUNCTION_MODULE_NAME: Nama modul fungsi SAP.
  • FUNCTION_MODULE_DESCRIPTION: Deskripsi modul fungsi SAP.

Anda juga dapat mendeklarasikan fungsi tanpa parameter, yang dapat berfungsi sebagai fungsi penggantian atau cadangan. Jika perintah pengguna tidak memberikan informasi yang memadai untuk memanggil fungsi tertentu, Anda dapat menginstruksikan Gemini untuk memilih fungsi penggantian ini.

Menetapkan pemanggilan otomatis modul fungsi SAP

Untuk menetapkan pemanggilan otomatis fungsi SAP yang dipilih oleh model, Anda dapat menggunakan metode SET_AUTO_INVOKE_SAP_FUNCTION. Jika ABAP_TRUE diteruskan dalam parameter impor IV_AUTO_INVOKE, modul fungsi akan dipanggil oleh SDK dan responsnya disertakan dengan konteks LLM untuk menghasilkan respons akhir.

Anda harus menentukan modul fungsi dengan mengikuti skema yang dijelaskan di bagian Membuat modul fungsi SAP.

lo_model->set_auto_invoke_sap_function( abap_true ).

Membuat konten dengan panggilan fungsi

Untuk meneruskan teks perintah ke model Gemini, Anda dapat menggunakan metode GENERATE_CONTENT. Untuk mendapatkan respons yang dihasilkan oleh Gemini dengan konteks tambahan yang ditambahkan dari modul fungsi SAP melalui panggilan fungsi, gunakan metode GET_TEXT.

DATA(lv_response) = lo_model->generate_content( iv_prompt_text ='PROMPT'
                           )->get_text( ).

Ganti PROMPT dengan perintah teks Anda.

Mendapatkan nama fungsi dan nilai parameter yang dipilih

Untuk mendapatkan fungsi yang dipilih oleh Gemini (dari antara fungsi yang dideklarasikan) dan parameter yang disarankannya, gunakan metode GET_FUNCTION_CALL.

DATA(lo_response) = lo_model_key->set_auto_invoke_sap_function( abap_true
                               )->generate_content( iv_prompt_text = 'PROMPT' ).
lo_response->get_function_call( IMPORTING ev_function_name       = DATA(lv_function_name)
                                          et_function_parameters = DATA(lt_function_parameters) ).

Ganti PROMPT dengan perintah teks Anda.

Anda bisa mendapatkan nama fungsi yang dipilih Gemini dari LV_FUNCTION_NAME dan parameter yang disarankan dari LT_FUNCTION_PARAMETERS. Anda dapat menggunakan informasi ini untuk memvalidasi, melacak, dan mencatat tindakan Gemini sesuai dengan panduan informasi keamanan dan pengelolaan peristiwa perusahaan Anda.

Contoh kode

Contoh kode berikut mengilustrasikan cara menggunakan panggilan fungsi SAP untuk menerima respons akhir dari model.

DATA lt_parameters TYPE /goog/cl_generative_model=>tt_parameter_properties.
TRY.
  DATA(lo_model) = NEW /goog/cl_generative_model( iv_model_key = 'MODEL_KEY' ).
  APPEND VALUE #( parameter_name = 'PARAMETER_NAME'
                  type           = 'PARAMETER_TYPE'
                  description    = 'PARAMETER_DESCRIPTION'
                  is_required    = 'PARAMETER_IS_REQUIRED' ) TO lt_parameters.
  DATA(lv_response) = lo_model->add_function_declaration(
                                    iv_name        = 'FUNCTION_MODULE_NAME'
                                    iv_description = 'FUNCTION_MODULE_DESCRIPTION'
                                    it_parameters  = lt_parameters
                              )->set_auto_invoke_sap_function( abap_true
                              )->generate_content( iv_prompt_text ='PROMPT'
                              )->get_text( ).
  IF lv_response IS NOT INITIAL.
      cl_demo_output=>display( lv_response ).

  ENDIF.
 CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
  cl_demo_output=>display( lo_cx_sdk->get_text( ) ).

ENDTRY.

Ganti kode berikut:

  • MODEL_KEY: Nama kunci model, yang dikonfigurasi di parameter pembuatan model.
  • PARAMETER_NAME: Nama parameter.
  • PARAMETER_TYPE: Jenis data parameter, seperti string, integer, atau boolean.
  • PARAMETER_DESCRIPTION: Penjelasan yang jelas tentang tujuan parameter dan format yang diharapkan.
  • PARAMETER_IS_REQUIRED: Jika parameter ini wajib agar fungsi dapat beroperasi, tetapkan nilai ke ABAP_TRUE.
  • FUNCTION_MODULE_NAME: Nama modul fungsi SAP.
  • FUNCTION_MODULE_DESCRIPTION: Deskripsi modul fungsi SAP.
  • PROMPT: Perintah teks Anda.

Langkah selanjutnya