Dokumen ini menjelaskan cara memanggil model Gemini untuk menghasilkan respons untuk input teks dan multimodal, menggunakan Vertex AI SDK untuk ABAP. Model Gemini dapat menerima beberapa mode input, termasuk teks, gambar, video, audio, dan dokumen. Anda dapat menggunakan model Gemini untuk kasus penggunaan seperti berikut:
- Meringkas teks bentuk bebas
- Menjelaskan atau menafsirkan aset media
- Menerjemahkan antarbahasa
Menggunakan model generatif untuk membuat fitur yang berfokus pada AI tidak memerlukan keahlian machine learning (ML). Anda tidak perlu mengumpulkan set data besar atau melatih model. Yang diperlukan untuk memulai program pertama adalah menjelaskan apa yang Anda inginkan dari model dalam beberapa kalimat. Vertex AI SDK untuk ABAP menyediakan class dan metode ABAP untuk mengakses model Gemini dari lingkungan SAP Anda. Untuk memulai, lihat contoh kode ini.
Sebelum memulai
Sebelum menggunakan Vertex AI SDK untuk ABAP dengan model Gemini, pastikan Anda atau administrator Anda telah menyelesaikan prasyarat berikut:
- Mengaktifkan Vertex AI API di project Google Cloud Anda.
- Menginstal Vertex AI SDK untuk ABAP di lingkungan SAP Anda.
- Siapkan autentikasi untuk mengakses Vertex AI API.
- Mengonfigurasi parameter pembuatan model.
Mengirim permintaan ke Gemini
Bagian ini menjelaskan cara mengirim permintaan ke model Gemini melalui Vertex AI API menggunakan Vertex AI SDK for ABAP.
Membuat instance class pemanggil multimodal Gemini
Untuk memanggil teks Gemini dan
model multimodal menggunakan perintah teks atau multimodal, Anda dapat 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 konten dengan perintah
Untuk membuat konten dengan memberikan
perintah teks ke model, Anda dapat menggunakan
metode GENERATE_CONTENT
.
lo_model->generate_content( 'PROMPT' ).
Ganti PROMPT
dengan perintah teks Anda.
Memberikan petunjuk sistem ke model
Untuk meneruskan petunjuk sistem berbasis teks ke model,
Anda dapat menggunakan metode SET_SYSTEM_INSTRUCTIONS
.
lo_model->set_system_instructions( 'SYSTEM_INSTRUCTIONS' ).
Ganti SYSTEM_INSTRUCTIONS
dengan petunjuk sistem Anda ke model.
Menambahkan setelan keamanan
Untuk menambahkan setelan keamanan agar model dapat menghasilkan respons, Anda dapat menggunakan
metode ADD_SAFETY_SETTINGS
.
Fitur ini digunakan untuk menerapkan pedoman keamanan pada model untuk memblokir
konten yang tidak aman.
lo_model->add_safety_settings( iv_harm_category = 'HARM_CATEGORY'
iv_harm_block_threshold = 'HARM_BLOCK_THRESHOLD'
iv_harm_block_method = 'HARM_BLOCK_METHOD' ).
Ganti kode berikut:
HARM_CATEGORY
: Kategori bahaya yang ingin Anda terapkan.HARM_BLOCK_THRESHOLD
: Tingkat nilai minimum berbasis probabilitas yang ingin Anda terapkan.HARM_BLOCK_METHOD
: Metode pemblokiran konten berbahaya yang ingin Anda terapkan.
Dengan setiap panggilan metode, metode ADD_SAFETY_SETTINGS
akan menambahkan setelan keamanan yang ditentukan ke input model.
Menetapkan konfigurasi pembuatan untuk model
Anda mempertahankan konfigurasi pembuatan untuk model di
tabel /GOOG/AI_CONFIG
.
Untuk mengganti konfigurasi pembuatan untuk panggilan tertentu, Anda dapat menggunakan
metode SET_GENERATION_CONFIG
.
Jika parameter impor untuk properti pembuatan ditetapkan, nilai parameter yang diteruskan akan diterapkan.
lo_model->set_generation_config( iv_response_mime_type = 'RESPONSE_MIME_TYPE'
iv_temperature = 'TEMPERATURE'
iv_top_p = 'TOP_P'
iv_top_k = 'TOP_K'
iv_candidate_count = 'CANDIDATE_COUNT'
iv_max_output_tokens = 'MAX_OUTPUT_TOKENS'
iv_presence_penalty = 'PRESENCE_PENALTY'
iv_frequency_penalty = 'FREQUENCY_PENALTY' ).
Ganti kode berikut:
RESPONSE_MIME_TYPE
: Jenis MIME respons untuk model.TEMPERATURE
: Suhu acak.TOP_P
: Sampling Top-P.TOP_K
: Sampling Top-K.CANDIDATE_COUNT
: Jumlah kandidat yang akan dibuat.MAX_OUTPUT_TOKENS
: Jumlah maksimum token output per pesanPRESENCE_PENALTY
: Sanksi positif.FREQUENCY_PENALTY
: Penalti frekuensi.
Untuk mengetahui informasi selengkapnya tentang parameter ini, lihat Mengonfigurasi parameter pembuatan model.
Meneruskan input multimodal ke model
Anda dapat memanggil model Gemini menggunakan input multimodal, yang dapat berupa teks, gambar, video, dokumen, atau kombinasi dari semuanya. Anda dapat meneruskan input dalam bentuk data mentah atau dengan memberikan URI Cloud Storage objek file.
Menetapkan data mentah
Untuk memberikan data mentah file sebagai input ke model,
beserta jenis MIME-nya, Anda dapat menggunakan metode SET_INLINE_DATA
.
Untuk input video, agar hanya mempertimbangkan bagian tertentu dari video,
Anda dapat menetapkan waktu mulai dan waktu berakhir menggunakan parameter impor
opsional IV_VIDEO_START_OFFSET
dan IV_VIDEO_END_OFFSET
.
lo_model->set_inline_data( iv_mime_type = 'MIME_TYPE'
iv_data = 'RAW_DATA' ).
Ganti kode berikut:
MIME_TYPE
: Jenis MIME standar IANA dari data mentah. Secara default, jenis MIME disetel keapplication/pdf
.RAW_DATA
: Data mentah gambar, PDF, atau video yang dienkode base64 untuk disertakan secara inline dalam perintah.
Untuk menghapus data mentah file dari input model dengan instance class /GOOG/CL_GENERATIVE_MODEL
yang sama, Anda dapat menggunakan metode CLEAR_INLINE_DATA
.
lo_model->clear_inline_data( ).
Menetapkan objek dari Cloud Storage
Untuk memberikan URI objek file yang disimpan di
bucket Cloud Storage sebagai input ke model, beserta jenis MIME-nya,
Anda dapat menggunakan metode SET_FILE_DATA
.
Untuk input video, agar hanya mempertimbangkan bagian tertentu dari video,
Anda dapat menetapkan waktu mulai dan waktu berakhir menggunakan parameter impor
opsional IV_VIDEO_START_OFFSET
dan IV_VIDEO_END_OFFSET
.
lo_model->set_file_data( iv_mime_type = 'MIME_TYPE'
iv_file_uri = 'FILE_URI' ).
Ganti kode berikut:
MIME_TYPE
: Jenis MIME standar IANA dari data file. Secara default, jenis MIME disetel keapplication/pdf
.FILE_URI
: URI file yang disimpan di bucket Cloud Storage.
Jika Anda ingin meneruskan semua file yang ada di bucket Cloud Storage sebagai input ke model, gunakan metode SET_FILES_FROM_GCS
untuk menentukan nama bucket Cloud Storage target.
lo_model->set_files_from_gcs( iv_storage_bucket_name = 'STORAGE_BUCKET_NAME').
Ganti STORAGE_BUCKET_NAME
dengan nama bucket Cloud Storage yang berisi file.
Jika Anda memiliki kunci klien terpisah untuk memanggil Cloud Storage API melalui ABAP SDK untuk Google Cloud, teruskan nama kunci klien dalam mengimpor parameter IV_KEY_NAME
.
Untuk menghapus objek yang ditetapkan melalui URI Cloud Storage dari input
model dengan instance class /GOOG/CL_GENERATIVE_MODEL
yang sama,
Anda dapat menggunakan metode CLEAR_FILE_DATA
.
lo_model->clear_file_data( ).
Menetapkan jenis MIME respons
Untuk menetapkan jenis MIME respons
yang direspons model, Anda dapat menggunakan metode SET_RESPONSE_MIME_TYPE
.
Jika tidak ditetapkan, model akan menggunakan text/plain
sebagai jenis MIME respons secara default.
lo_model->set_response_mime_type( iv_mime_type = 'RESPONSE_MIME_TYPE' ).
Ganti RESPONSE_MIME_TYPE
dengan jenis MIME respons dari konten yang dihasilkan.
Menghitung jumlah token dalam perintah teks
Untuk menghitung jumlah token dalam perintah teks sebelum memanggil
model dengan perintah, Anda dapat menggunakan metode COUNT_TOKENS
.
DATA(lv_total_tokens) = lo_model->count_tokens( iv_prompt_text = 'PROMPT'
iv_system_instructions = 'SYSTEM_INSTRUCTIONS'
)->get_total_tokens( ).
DATA(lv_total_billable_characters) = lo_model->count_tokens(
iv_prompt_text = 'PROMPT'
iv_system_instructions = 'SYSTEM_INSTRUCTIONS'
)->get_total_billable_characters( ).
Ganti kode berikut:
PROMPT
: Perintah teks Anda.SYSTEM_INSTRUCTIONS
: Petunjuk sistem Anda ke model.
Menerima respons dari Gemini
Untuk menerima respons yang diproses dari model dan menampilkannya dengan cara yang bermakna bagi developer ABAP, SDK menyediakan class /GOOG/CL_MODEL_RESPONSE
.
Respons yang diambil oleh class /GOOG/CL_MODEL_RESPONSE
dirantai ke
permintaan yang dibuat melalui metode class /GOOG/CL_GENERATIVE_MODEL
, sehingga
Anda dapat langsung mengakses respons dalam satu pernyataan tanpa memerlukan
variabel untuk menyimpan hasil perantara.
Mendapatkan respons teks
Untuk menerima respons teks dari model, Anda dapat menggunakan metode GET_TEXT
.
DATA(lv_response_text) = lo_model->generate_content( 'PROMPT'
)->get_text( ).
Ganti PROMPT
dengan perintah teks Anda.
Mendapatkan rating keselamatan
Untuk menerima daftar rating keamanan respons model,
Anda dapat menggunakan metode GET_SAFETY_RATING
.
DATA(lt_safety_ratings) = lo_model->generate_content( 'PROMPT'
)->get_safety_rating( ).
Ganti PROMPT
dengan perintah teks Anda.
Mendapatkan jumlah token dalam perintah permintaan
Untuk menerima jumlah token dalam perintah input ke model,
Anda dapat menggunakan metode GET_PROMPT_TOKEN_COUNT
.
DATA(lv_prompt_token_count) = lo_model->generate_content( 'PROMPT'
)->get_prompt_token_count( ).
Ganti PROMPT
dengan perintah teks Anda.
Mendapatkan jumlah token dalam respons model
Untuk menerima jumlah token dalam respons dari model,
Anda dapat menggunakan metode GET_CANDIDATES_TOKEN_COUNT
.
DATA(lv_candidates_token_count) = lo_model->generate_content( 'PROMPT'
)->get_candidates_token_count( ).
Ganti PROMPT
dengan perintah teks Anda.
Mendapatkan alasan pemblokiran
Untuk menerima alasan model memblokir pembuatan respons,
Anda dapat menggunakan metode GET_BLOCK_REASON
.
DATA(lv_block_reason) = lo_model->generate_content( 'PROMPT'
)->get_block_reason( ).
Ganti PROMPT
dengan perintah teks Anda.
Mendapatkan pesan alasan pemblokiran
Untuk menerima pesan alasan yang dapat dibaca karena pemblokiran pembuatan respons oleh model,
Anda dapat menggunakan metode GET_BLOCK_REASON_MESSAGE
.
DATA(lv_block_reason_message) = lo_model->generate_content( 'PROMPT'
)->get_block_reason_message( ).
Ganti PROMPT
dengan perintah teks Anda.
Contoh kode
Contoh kode berikut menunjukkan cara memanggil model Gemini untuk menghasilkan respons untuk berbagai jenis input.
Pembuatan berbasis teks
Contoh kode berikut menunjukkan cara membuat respons dari perintah teks beserta petunjuk sistem. Instruksi sistem bersifat opsional dan dapat diteruskan bersama perintah untuk menginstruksikan model agar berperilaku dengan cara tertentu.
Contoh kode
DATA:
lv_instruction TYPE string,
lv_prompt TYPE string.
lv_instruction = 'SYSTEM_INSTRUCTIONS'.
lv_prompt = 'PROMPT'.
TRY.
DATA(lo_model) = NEW /goog/cl_generative_model( iv_model_key = 'MODEL_KEY' ).
DATA(lv_response) = lo_model->set_system_instructions( lv_instruction
)->generate_content( lv_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.PROMPT
: Perintah teks Anda.SYSTEM_INSTRUCTIONS
: Petunjuk sistem Anda ke model.
Generasi multimodal
Contoh kode berikut menunjukkan cara membuat respons dari input multimodal, seperti teks dan gambar. Anda dapat menyebutkan URI Cloud Storage atau data file mentah dari gambar, video, atau dokumen beserta perintah teks. Petunjuk sistem bersifat opsional dan dapat diteruskan bersama dengan perintah untuk menginstruksikan model agar berperilaku dengan cara tertentu.
Contoh kode
DATA:
lv_instruction TYPE string,
lv_prompt TYPE string.
lv_instruction = 'SYSTEM_INSTRUCTIONS'.
lv_prompt = 'PROMPT'.
TRY.
DATA(lo_model) = NEW /goog/cl_generative_model( iv_model_key = 'MODEL_KEY' ).
DATA(lv_response) = lo_model->set_system_instructions( lv_instruction
)->set_file_data( iv_mime_type = 'MIME_TYPE'
iv_file_uri = 'FILE_URI'
)->set_inline_data( iv_mime_type = 'MIME_TYPE'
iv_data = 'INLINE_DATA'
)->generate_content( lv_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.PROMPT
: Perintah teks Anda.SYSTEM_INSTRUCTIONS
: Petunjuk sistem Anda ke model.MIME_TYPE
: Jenis MIME standar IANA dari data file. Secara default, jenis MIME disetel keapplication/pdf
.FILE_URI
: URI file yang disimpan di bucket Cloud Storage.INLINE_DATA
: Data mentah gambar, PDF, atau video yang dienkode base64 untuk disertakan secara inline dalam perintah.
Menambahkan setelan keamanan untuk model
Contoh kode berikut menunjukkan cara menambahkan setelan keamanan agar model dapat menghasilkan respons.
Contoh kode
DATA:
lv_instruction TYPE string,
lv_prompt TYPE string.
lv_instruction = 'SYSTEM_INSTRUCTIONS'.
lv_prompt = 'PROMPT'.
TRY.
DATA(lo_model) = NEW /goog/cl_generative_model( iv_model_key = 'MODEL_KEY' ).
DATA(lv_response) = lo_model->set_system_instructions( lv_instruction
)->set_file_data( iv_mime_type = 'MIME_TYPE'
iv_file_uri = 'FILE_URI'
)->set_inline_data( iv_mime_type = 'MIME_TYPE'
iv_data = 'INLINE_DATA'
)->add_safety_settings( iv_harm_category = 'HARM_CATEGORY'
iv_harm_block_threshold = 'HARM_BLOCK_THRESHOLD'
iv_harm_block_method = 'HARM_BLOCK_METHOD'
)->generate_content( lv_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.PROMPT
: Perintah teks Anda.SYSTEM_INSTRUCTIONS
: Petunjuk sistem Anda ke model.MIME_TYPE
: Jenis MIME standar IANA dari data file. Secara default, jenis MIME disetel keapplication/pdf
.FILE_URI
: URI file yang disimpan di bucket Cloud Storage.INLINE_DATA
: Data mentah gambar, PDF, atau video yang dienkode base64 untuk disertakan secara inline dalam perintah.HARM_CATEGORY
: Kategori bahaya yang ingin Anda terapkan.HARM_BLOCK_THRESHOLD
: Tingkat nilai minimum berbasis probabilitas yang ingin Anda terapkan.HARM_BLOCK_METHOD
: Metode pemblokiran konten berbahaya yang ingin Anda terapkan.
Menemukan jumlah token dan karakter yang dapat ditagih dalam perintah
Sebelum memanggil model dengan perintah, sebaiknya periksa jumlah token dalam perintah dan jumlah karakter yang dapat ditagih dalam token untuk merencanakan penagihan project Google Cloud Anda. Contoh kode berikut menunjukkan cara menemukan angka ini dan mengevaluasi penagihan Anda untuk panggilan model serupa.
Contoh kode
DATA:
lv_prompt TYPE string.
lv_prompt = 'PROMPT'.
TRY.
DATA(lo_model) = NEW /goog/cl_generative_model( iv_model_key = 'MODEL_KEY' ).
DATA(lv_total_tokens) = lo_model->count_tokens( lv_prompt
)->get_total_tokens( ).
DATA(lv_total_billable_characters) = lo_model->count_tokens( lv_prompt
)->get_total_billable_characters( ).
IF lv_total_tokens IS NOT INITIAL.
cl_demo_output=>display( 'Total Tokens -' && lv_total_tokens ).
ENDIF.
IF lv_total_billable_characters IS NOT INITIAL.
cl_demo_output=>display( 'Total Billable Characters -' && lv_total_billable_characters ).
ENDIF.
CATCH /goog/cx_sdk INTO DATA(lo_cx_sdk).
cl_demo_output=>display( lo_cx_sdk->get_text( ) ).
ENDTRY.
Ganti kode berikut:
PROMPT
: Perintah teks Anda.MODEL_KEY
: Nama kunci model, yang dikonfigurasi di parameter pembuatan model.
Langkah selanjutnya
Pelajari pengembangan aplikasi dengan ABAP SDK untuk Google Cloud edisi cloud atau on-premise.
Ajukan pertanyaan dan diskusikan Vertex AI SDK untuk ABAP dengan komunitas di Cloud Forums.