Dokumen ini menjelaskan cara memanggil model Claude Anthropic untuk membuat respons bagi input teks dan multimodal, dengan menggunakan Vertex AI SDK untuk ABAP. Model Claude dapat menerima beberapa mode input, termasuk teks, gambar, dan dokumen. Anda dapat menggunakan model Claude untuk kasus penggunaan seperti berikut:
- Meringkas teks bentuk bebas
- Mendeskripsikan atau menafsirkan aset media
- Menerjemahkan antarbahasa
Penggunaan model generatif untuk membangun fitur yang berfokus pada AI tidak memerlukan keahlian machine learning (ML). Anda tidak perlu mengumpulkan set data besar atau melatih model. Untuk memulai program pertama Anda, cukup deskripsikan apa yang Anda inginkan dari model dalam beberapa kalimat. Vertex AI SDK untuk ABAP menyediakan class dan metode ABAP untuk mengakses model Claude dari lingkungan SAP Anda.
Sebelum memulai
Sebelum menggunakan Vertex AI SDK for ABAP dengan model Claude, pastikan Anda atau administrator Anda telah menyelesaikan prasyarat berikut:
- Mengaktifkan Vertex AI API di project Google Cloud Anda.
- Mengaktifkan model Claude yang didukung dari Model Garden 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 Claude
Bagian ini menjelaskan cara mengirim permintaan ke model Claude melalui Vertex AI API menggunakan Vertex AI SDK untuk ABAP.
Buat instance class pemanggil multimodal Claude
Untuk memanggil model multimodal dan teks Claude menggunakan perintah multimodal atau teks, Anda dapat menggunakan class /GOOG/CL_MODEL_CLAUDE
.
Anda membuat instance class
dengan meneruskan kunci model yang dikonfigurasi dalam parameter pembuatan model:
DATA(lo_model) = NEW /goog/cl_model_claude( 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 kepada 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.
Menetapkan konfigurasi pembuatan untuk model
Anda mengelola 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_temperature = 'TEMPERATURE'
iv_top_p = 'TOP_P'
iv_top_k = 'TOP_K'
iv_max_output_tokens = 'MAX_OUTPUT_TOKENS' ).
Ganti kode berikut:
TEMPERATURE
: Suhu keacakan.TOP_P
: Sampling Top-P.TOP_K
: Sampling Top-K.MAX_OUTPUT_TOKENS
: Jumlah maksimum token output per pesan
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, atau dokumen. Anda dapat meneruskan input untuk gambar dan PDF sebagai data mentah. Untuk PDF, Anda juga dapat memberikan URI jika PDF dapat diakses secara publik.
Tabel berikut mencantumkan jenis MIME yang didukung:
Jenis media | Jenis MIME yang didukung |
---|---|
Gambar |
|
Dokumen |
|
Menetapkan data mentah
Untuk memberikan data mentah file sebagai input ke model,
bersama dengan jenis MIME-nya, Anda dapat menggunakan metode SET_INLINE_DATA
:
lo_model->set_inline_data( iv_mime_type = 'MIME_TYPE'
iv_data = 'RAW_DATA'
iv_type = 'base64' ).
Ganti kode berikut:
MIME_TYPE
: Jenis MIME standar IANA dari data mentah. Secara default, jenis MIME disetel keimage/jpeg
.RAW_DATA
: Data mentah berenkode base64 dari gambar atau PDF untuk disertakan secara inline dalam perintah.
Untuk menghapus data mentah file dari input model dengan instance class /GOOG/CL_MODEL_CLAUDE
yang sama, Anda dapat menggunakan metode CLEAR_INLINE_DATA
:
lo_model->clear_inline_data( ).
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( ).
Ganti kode berikut:
PROMPT
: Perintah teks Anda.SYSTEM_INSTRUCTIONS
: Petunjuk sistem Anda untuk model.
Menambahkan urutan pemberhentian
stop_sequence
adalah sekumpulan string yang menginstruksikan Claude untuk menghentikan pembuatan
saat menemukan salah satu string ini dalam responsnya. Pada dasarnya, ini adalah perintah yang memberi tahu Claude, "Jika Anda membuat urutan ini, segera hentikan pembuatan!"
Contoh kode berikut tidak menyertakan stop_sequence
:
lv_prompt = 'Generate a JSON object representing a person with a name, email, and phone number'.
lv_response = lo_model->generate_content( lv_prompt )->get_text( ).
Contoh kode ini menampilkan respons berikut:
{
"name": "Dana A",
"email": "dana@example.com",
"phoneNumber": "800-555-0199"
}
Contoh kode berikut menyertakan stop_sequence
:
DATA: lt_stop_sequences TYPE TABLE OF STRING.
lv_prompt = 'Generate a JSON object representing a person with a name, email, and phone number'.
APPEND '}' to lt_stop_sequences.
lv_response = lo_model->set_stop_sequence( lt_stop_sequences
)->generate_content( lv_prompt
)->get_text( ).
Contoh kode ini menampilkan respons berikut:
Berikut adalah objek JSON yang merepresentasikan seseorang dengan nama, email, dan nomor telepon:
{
"name": "Dana A",
"email": "dana@example.com",
"phoneNumber": "800-555-0199"
Perhatikan bahwa output tidak menyertakan urutan perhentian }
. Untuk menguraikannya sebagai JSON,
Anda perlu menambahkan }
penutup.
Saat model Claude memberikan respons, properti stop_reason
-nya menunjukkan
alasan model berhenti menghasilkan teks.
Untuk mendapatkan alasan penghentian, Anda dapat menggunakan contoh kode berikut:
lv_stop_reason = lo_model->set_stop_sequence( lt_stop_sequences
)->generate_content( lv_prompt
)->get_stop_reason( ).
Menambahkan contoh
Few-shot prompting adalah strategi efektif yang memberikan serangkaian kecil contoh kepada model untuk memandu outputnya. Anda dapat melakukannya dengan menggunakan histori percakapan untuk memberikan contoh ini kepada Claude.
Misalnya, untuk menganalisis sentimen tweet menggunakan Claude, Anda dapat memulai dengan bertanya, "Analisis sentimen dalam tweet ini: ", lalu mengamati output yang dihasilkan.
lv_prompt = 'The Burger was delicious and my taste buds were on fire, too yummy!'
lv_system_instruction = 'Please do the sentiment analysis of the review'.
lv_response = lo_model->set_system_instructions( lv_system_instructions
)->generate_text( lv_prompt
)->get_text( ).
Output:
# Sentiment Analysis
This tweet expresses a strongly positive sentiment:
- Words like "delicious" and "yummy" directly convey enjoyment
- The phrase "taste buds were on fire" is used positively to indicate intense flavor enjoyment
- The exclamation mark adds enthusiasm
- "too yummy" emphasizes the exceptional quality
Overall, this is a very positive tweet expressing high satisfaction with the burger.
Meskipun respons yang komprehensif sangat berharga, untuk analisis sentimen otomatis dari banyak tweet, output yang lebih ringkas dari Claude lebih disukai. Anda dapat menstandardisasi respons Claude menjadi satu kata seperti POSITIF, NETRAL, NEGATIF, atau nilai numerik seperti 1, 0, -1.
lv_prompt = 'The Burger was delicious and my taste buds were on fire, too yummy!'.
lv_response = lo_model->add_examples( iv_input = |Unpopular opinion: Pickles are disgusting. Don't hate me|
iv_output = |NEGATIVE|
)->add_examples( iv_input = |I think my love for burgers might be getting out of hand. I just bought a burger sticker for my crocs|
iv_output = |POSITIVE|
)->add_examples( iv_input = |Seriously why would anyone ever eat a brugers? Those things are unhealthy!|
iv_output = |NEGATIVE|
)->generate_content( lv_prompt
)->get_text( ).
Output:
POSITIVE
Menyetel teks asisten
Strategi umum lainnya untuk mendapatkan output yang sangat spesifik adalah dengan
"menaruh kata-kata di mulut Claude". Selain hanya memberikan pesan user
kepada Claude, Anda juga dapat memberikan pesan assistant
yang digunakan Claude
saat membuat output.
Jika Anda memberikan pesan assistant
, Claude akan melanjutkan percakapan dari
token assistant
terakhir. Ingat saja bahwa Anda harus memulai dengan pesan user
.
lv_prompt = 'The fourth nearest planet to sun is: A) Mercury B) Venus C) Mars D ) Andromeda'.
lv_assistant_text = 'The answer is:'.
lv_response = lo_model->set_assistant_text( lv_instruction
)->generate_content( lv_prompt
)->get_text( ).
Cuplikan kode ini menampilkan output berikut: C) Mars
.
Menetapkan versi Anthropic
Anda dapat menetapkan parameter anthropic_version
.
Secara default, vertex-2023-10-16
adalah nilai yang ditetapkan untuk parameter ini. Anda hanya
perlu mengubah nilainya jika ingin mengakses versi Anthropic lain yang didukung.
Jika Anda perlu mengubah versi Anthropic, Anda dapat menggunakan metode SET_ANTHROPIC_VERSION
:
lo_model->set_anthropic_version( 'ANTHROPIC_VERSION' ).
Ganti ANTHROPIC_VERSION
dengan versi Anthropic yang akan digunakan.
Untuk mengetahui informasi selengkapnya, lihat dokumentasi Anthropic.
Menerima respons dari Claude
Untuk menerima respons yang diproses dari model dan menampilkannya dengan cara yang bermakna bagi developer ABAP, SDK menyediakan class /GOOG/CL_RESPONSE_CLAUDE
.
Respons yang diambil oleh class /GOOG/CL_RESPONSE_CLAUDE
dirantai ke
permintaan yang dibuat melalui metode class /GOOG/CL_MODEL_CLAUDE
, sehingga
Anda dapat langsung mengakses respons dalam satu pernyataan tanpa memerlukan
variabel untuk menyimpan hasil sementara.
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 jumlah token dalam prompt 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 jumlah total token (permintaan dan respons)
Untuk memastikan jumlah token gabungan, yang mencakup permintaan dan respons,
Anda dapat menggunakan metode GET_TOTAL_TOKEN_COUNT
:
DATA(lv_stop_reason) = lo_model->generate_content( 'PROMPT'
)->get_total_token_count( ).
Ganti PROMPT
dengan perintah teks Anda.
Mendapatkan alasan penghentian
Untuk menerima alasan model memblokir pembuatan respons, Anda dapat
menggunakan metode GET_STOP_REASON
:
DATA(lv_stop_reason) = lo_model->generate_content( 'PROMPT'
)->get_stop_reason( ).
Replace PROMPT with your text prompt.
Ganti PROMPT
dengan perintah teks Anda.
Contoh kode
Contoh kode berikut menunjukkan cara memanggil model claude untuk membuat respons untuk berbagai jenis input.
Pembuatan berbasis teks
Contoh kode berikut menunjukkan cara membuat respons dari perintah teks bersama dengan petunjuk sistem. 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_model_claude( 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 dalam parameter pembuatan model.PROMPT
: Perintah teks Anda.SYSTEM_INSTRUCTIONS
: Petunjuk sistem Anda untuk model.
Pembuatan multimodal
Contoh kode berikut menunjukkan cara membuat respons dari input multimodal, seperti teks dan gambar. Anda memberikan input sebagai string berenkode base64. 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_model_claude( iv_model_key = 'MODEL_KEY' ).
DATA(lv_response) = lo_model->set_system_instructions( lv_instruction
)->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 dalam parameter pembuatan model.PROMPT
: Perintah teks Anda.SYSTEM_INSTRUCTIONS
: Petunjuk sistem Anda untuk model.MIME_TYPE
: Jenis MIME standar IANA dari data file. Secara default, jenis MIME disetel keapplication/pdf
.INLINE_DATA
: Data mentah berenkode base64 dari gambar atau PDF yang akan disertakan secara inline dalam perintah.
Menemukan jumlah token dan karakter yang dapat ditagih dalam perintah
Sebelum memanggil model dengan perintah, sebaiknya periksa jumlah token dalam perintah Anda.
Hal ini membantu Anda membuat keputusan yang tepat terkait perintah dan penggunaan Anda. Tidak ada biaya untuk endpoint count-tokens. Contoh kode berikut menunjukkan cara menemukan angka ini sebelum benar-benar memanggil API:
Contoh kode
DATA:
lv_prompt TYPE string.
lv_prompt = 'PROMPT'.
TRY.
DATA(lo_model) = NEW /goog/cl_model_claude( iv_model_key = 'MODEL_KEY' ).
DATA(lv_total_tokens) = lo_model->count_tokens( lv_prompt
)->get_total_tokens( ).
IF lv_total_tokens IS NOT INITIAL.
cl_demo_output=>display( 'Total Tokens -' && lv_total_tokens ).
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 berikutnya
- Pelajari pengembangan aplikasi dengan edisi ABAP SDK untuk Google Cloud di cloud atau lokal.
- Ajukan pertanyaan dan diskusikan Vertex AI SDK untuk ABAP dengan komunitas di Forum Cloud.