Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Anthropic Claude Pesan API
Bagian ini memberikan parameter inferensi dan contoh kode untuk menggunakan Anthropic Claude PesanAPI.
Anthropic Claude APIIkhtisar pesan
Anda dapat menggunakan Pesan API untuk membuat bot obrolan atau aplikasi asisten virtual. APIMengelola pertukaran percakapan antara pengguna dan Anthropic Claude model (asisten).
Tip
Topik ini menunjukkan cara menggunakan Anthropic Claude pesan API dengan operasi inferensi dasar (InvokeModelatau InvokeModelWithResponseStream). Namun, kami menyarankan Anda untuk menggunakan Converse APIuntuk mengimplementasikan pesan dalam aplikasi Anda. Bagian Converse APImenyediakan satu set parameter terpadu yang bekerja di semua model yang mendukung pesan. Untuk informasi selengkapnya, lihat Lakukan percakapan dengan Converse Operasi API.
Anthropic melatih model Claude untuk beroperasi pada giliran percakapan pengguna dan asisten yang bergantian. Saat membuat pesan baru, Anda menentukan giliran percakapan sebelumnya dengan parameter pesan. Model kemudian menghasilkan Pesan berikutnya dalam percakapan.
Setiap pesan input harus berupa objek dengan peran dan konten. Anda dapat menentukan satu pesan peran pengguna, atau Anda dapat menyertakan beberapa pesan pengguna dan asisten. Pesan pertama harus selalu menggunakan peran pengguna.
Jika Anda menggunakan teknik prefilling respon dari Claude (mengisi awal tanggapan Claude dengan menggunakan peran asisten akhir Pesan), Claude akan merespons dengan mengambil dari tempat Anda tinggalkan. Dengan teknik ini, Claude masih akan mengembalikan respons dengan peran asisten.
Jika pesan terakhir menggunakan peran asisten, konten respons akan langsung dilanjutkan dari konten dalam pesan tersebut. Anda dapat menggunakan ini untuk membatasi bagian dari respons model.
Contoh dengan pesan pengguna tunggal:
[{"role": "user", "content": "Hello, Claude"}]
Contoh dengan beberapa putaran percakapan:
[ {"role": "user", "content": "Hello there."}, {"role": "assistant", "content": "Hi, I'm Claude. How can I help you?"}, {"role": "user", "content": "Can you explain LLMs in plain English?"}, ]
Contoh dengan respons yang diisi sebagian dari Claude:
[ {"role": "user", "content": "Please describe yourself using only JSON"}, {"role": "assistant", "content": "Here is my JSON description:\n{"}, ]
Setiap konten pesan input dapat berupa string tunggal atau array blok konten, di mana setiap blok memiliki tipe tertentu. Menggunakan string adalah singkatan untuk array dari satu blok konten tipe “teks”. Pesan masukan berikut setara:
{"role": "user", "content": "Hello, Claude"}
{"role": "user", "content": [{"type": "text", "text": "Hello, Claude"}]}
Untuk informasi tentang membuat prompt untuk Anthropic Claude model, lihat Pengantar petunjuk di
Permintaan sistem
Anda juga dapat menyertakan prompt sistem dalam permintaan. Prompt sistem memungkinkan Anda memberikan konteks dan instruksi Anthropic Claude, seperti menentukan tujuan atau peran tertentu. Tentukan prompt sistem di system
lapangan, seperti yang ditunjukkan pada contoh berikut.
"system": "You are Claude, an AI assistant created by Anthropic to be helpful, harmless, and honest. Your goal is to provide informative and substantive responses to queries while avoiding potential harms."
Untuk informasi selengkapnya, lihat Permintaan sistem
Permintaan multimodal
Prompt multimodal menggabungkan beberapa modalitas (gambar dan teks) dalam satu prompt. Anda menentukan modalitas di bidang content
input. Contoh berikut menunjukkan bagaimana Anda bisa bertanya Anthropic Claude untuk menggambarkan isi dari gambar yang disediakan. Untuk kode sampel, lihat Contoh kode multimodal.
{ "anthropic_version": "bedrock-2023-05-31", "max_tokens": 1024, "messages": [ { "role": "user", "content": [ { "type": "image", "source": { "type": "base64", "media_type": "image/jpeg", "data": "iVBORw..." } }, { "type": "text", "text": "What's in these images?" } ] } ] }
catatan
Pembatasan berikut berkaitan dengan content
bidang:
-
Anda dapat menyertakan hingga 20 gambar. Ukuran, tinggi, dan lebar setiap gambar harus tidak lebih dari 3,75 MB, 8.000 px, dan 8.000 px, masing-masing.
-
Anda dapat memasukkan hingga lima dokumen. Ukuran setiap dokumen harus tidak lebih dari 4,5 MB.
-
Anda hanya dapat menyertakan gambar dan dokumen jika
role
adauser
.
Setiap gambar yang Anda sertakan dalam permintaan dihitung terhadap penggunaan token Anda. Untuk informasi selengkapnya, lihat Biaya gambar
Penggunaan alat (panggilan fungsi)
Dengan Anthropic Claude 3 model, Anda dapat menentukan alat yang dapat digunakan model untuk menjawab pesan. Misalnya, Anda dapat menentukan alat yang mendapatkan lagu paling populer di stasiun radio. Jika pengguna meneruskan pesan Lagu apa yang paling populerWZPZ? , model menentukan bahwa alat yang Anda tentukan dapat membantu menjawab pertanyaan. Dalam tanggapannya, model meminta Anda menjalankan alat atas namanya. Anda kemudian menjalankan alat dan meneruskan hasil alat ke model, yang kemudian menghasilkan respons untuk pesan asli. Untuk informasi selengkapnya, lihat Penggunaan alat (pemanggilan fungsi)
Tip
Kami menyarankan Anda menggunakan Converse APIuntuk mengintegrasikan penggunaan alat ke dalam aplikasi Anda. Untuk informasi selengkapnya, lihat Gunakan alat untuk menyelesaikan respons model Amazon Bedrock.
Anda menentukan alat yang ingin Anda sediakan untuk model di tools
bidang. Contoh berikut adalah untuk alat yang mendapatkan lagu paling populer di stasiun radio.
[ { "name": "top_song", "description": "Get the most popular song played on a radio station.", "input_schema": { "type": "object", "properties": { "sign": { "type": "string", "description": "The call sign for the radio station for which you want the most popular song. Example calls signs are WZPZ and WKRP." } }, "required": [ "sign" ] } } ]
Ketika model membutuhkan alat untuk menghasilkan respons terhadap pesan, ia mengembalikan informasi tentang alat yang diminta, dan input ke alat, di content
bidang pesan. Ini juga menetapkan alasan berhenti untuk menanggapitool_use
.
{ "id": "msg_bdrk_01USsY5m3XRUF4FCppHP8KBx", "type": "message", "role": "assistant", "model": "claude-3-sonnet-20240229", "stop_sequence": null, "usage": { "input_tokens": 375, "output_tokens": 36 }, "content": [ { "type": "tool_use", "id": "toolu_bdrk_01SnXQc6YVWD8Dom5jz7KhHy", "name": "top_song", "input": { "sign": "WZPZ" } } ], "stop_reason": "tool_use" }
Dalam kode Anda, Anda memanggil alat atas nama alat. Anda kemudian meneruskan hasil alat (tool_result
) dalam pesan pengguna ke model.
{ "role": "user", "content": [ { "type": "tool_result", "tool_use_id": "toolu_bdrk_01SnXQc6YVWD8Dom5jz7KhHy", "content": "Elemental Hotel" } ] }
Dalam tanggapannya, model menggunakan hasil alat untuk menghasilkan respons untuk pesan asli.
{ "id": "msg_bdrk_012AaqvTiKuUSc6WadhUkDLP", "type": "message", "role": "assistant", "model": "claude-3-sonnet-20240229", "content": [ { "type": "text", "text": "According to the tool, the most popular song played on radio station WZPZ is \"Elemental Hotel\"." } ], "stop_reason": "end_turn" }
Penggunaan komputer (Beta)
Penggunaan komputer adalah hal baru Anthropic Claude kemampuan model (dalam versi beta) hanya tersedia dengan Claude 3.5 Sonnet v2. Dengan menggunakan komputer, Claude dapat membantu Anda mengotomatiskan tugas melalui GUI tindakan dasar.
Awas
Fitur penggunaan komputer tersedia untuk Anda sebagai 'Layanan Beta' sebagaimana didefinisikan dalam Ketentuan AWS Layanan. Hal ini tunduk pada Perjanjian Anda dengan AWS dan Ketentuan AWS Layanan, dan model yang berlakuEULA. Perlu diketahui bahwa Penggunaan Komputer API menimbulkan risiko unik yang berbeda dari API fitur standar atau antarmuka obrolan. Risiko ini meningkat ketika menggunakan Penggunaan Komputer API untuk berinteraksi dengan Internet. Untuk meminimalkan risiko, pertimbangkan untuk mengambil tindakan pencegahan seperti:
Mengoperasikan fungsionalitas penggunaan komputer dalam Mesin Virtual khusus atau wadah dengan hak istimewa minimal untuk mencegah serangan sistem langsung atau kecelakaan.
Untuk mencegah pencurian informasi, hindari memberikan API akses Penggunaan Komputer ke akun atau data sensitif.
Membatasi akses internet penggunaan API komputer ke domain yang diperlukan untuk mengurangi paparan konten berbahaya.
Untuk memastikan pengawasan yang tepat, pertahankan manusia dalam lingkaran untuk tugas-tugas sensitif (seperti membuat keputusan yang dapat memiliki konsekuensi dunia nyata yang berarti) dan untuk apa pun yang memerlukan persetujuan afirmatif (seperti menerima cookie, melaksanakan transaksi keuangan, atau menyetujui persyaratan layanan).
Konten apa pun yang Anda aktifkan Claude untuk melihat atau mengakses berpotensi mengesampingkan instruksi atau penyebab Claude untuk membuat kesalahan atau melakukan tindakan yang tidak diinginkan. Mengambil tindakan pencegahan yang tepat, seperti mengisolasi Claude dari permukaan sensitif, sangat penting - termasuk untuk menghindari risiko yang terkait dengan injeksi segera. Sebelum mengaktifkan atau meminta izin yang diperlukan untuk mengaktifkan fitur penggunaan komputer dalam produk Anda sendiri, harap beri tahu pengguna akhir tentang risiko yang relevan, dan dapatkan persetujuan mereka sebagaimana mestinya.
Penggunaan komputer API menawarkan beberapa alat penggunaan komputer yang telah ditentukan sebelumnya (computer_20241022, bash_20241022, dan text_editor_20241022) untuk Anda gunakan. Anda kemudian dapat membuat prompt dengan permintaan Anda, seperti “kirim email ke Ben dengan catatan dari pertemuan terakhir saya” dan tangkapan layar (bila diperlukan). Respons berisi daftar tool_use
tindakan dalam JSON format (misalnya, scroll_down, left_button_press, screenshot). Kode Anda menjalankan tindakan komputer dan menyediakan Claude dengan tangkapan layar yang menampilkan output (saat diminta).
Parameter alat telah diperbarui untuk menerima jenis alat polimorfik; tool.type
properti baru sedang ditambahkan untuk membedakannya. type
bersifat opsional; jika dihilangkan, alat ini diasumsikan sebagai alat khusus (sebelumnya satu-satunya jenis alat yang didukung). Selain itu, parameter baru,anthropic_beta
, telah ditambahkan, dengan nilai enum yang sesuai:computer-use-2024-10-22
. Hanya permintaan yang dibuat dengan parameter ini dan enum yang dapat menggunakan alat penggunaan komputer baru. Hal ini dapat ditentukan sebagai berikut:"anthropic_beta":
["computer-use-2024-10-22"]
.
Untuk informasi selengkapnya, lihat Penggunaan komputer (beta)
Berikut ini adalah contoh respons yang mengasumsikan permintaan berisi tangkapan layar desktop Anda dengan ikon Firefox.
{ "id": "msg_123", "type": "message", "role": "assistant", "model": "anthropic.claude-3-5-sonnet-20241022-v2:0", "content": [ { "type": "text", "text": "I see the Firefox icon. Let me click on it and then navigate to a weather website." }, { "type": "tool_use", "id": "toolu_123", "name": "computer", "input": { "action": "mouse_move", "coordinate": [ 708, 736 ] } }, { "type": "tool_use", "id": "toolu_234", "name": "computer", "input": { "action": "left_click" } } ], "stop_reason": "tool_use", "stop_sequence": null, "usage": { "input_tokens": 3391, "output_tokens": 132 } }
Model yang didukung
Anda dapat menggunakan Pesan API dengan berikut Anthropic Claude model.
Anthropic Claude Instant v1.2
Anthropic Claude 2 v2
Anthropic Claude 2 v2.1
Anthropic Claude 3 Sonnet
Anthropic Claude 3.5 Sonnet
Anthropic Claude 3.5 Sonnet v2
Anthropic Claude 3 Haiku
Anthropic Claude 3 Opus
Permintaan dan Tanggapan
Badan permintaan diteruskan di body
bidang permintaan ke InvokeModelatau InvokeModelWithResponseStream. Ukuran maksimum muatan yang dapat Anda kirim dalam permintaan adalah 20MB.
Untuk informasi selengkapnya, lihat https://docs.anthropic.com/claude/referensi/messages_post
Contoh kode
Contoh kode berikut menunjukkan cara menggunakan pesanAPI.
Contoh kode pesan
Contoh ini menunjukkan cara mengirim pesan pengguna giliran tunggal dan giliran pengguna dengan pesan asisten yang telah diisi sebelumnya ke Anthropic Claude 3 Sonnet model.
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 """ Shows how to generate a message with Anthropic Claude (on demand). """ import boto3 import json import logging from botocore.exceptions import ClientError logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) def generate_message(bedrock_runtime, model_id, system_prompt, messages, max_tokens): body=json.dumps( { "anthropic_version": "bedrock-2023-05-31", "max_tokens": max_tokens, "system": system_prompt, "messages": messages } ) response = bedrock_runtime.invoke_model(body=body, modelId=model_id) response_body = json.loads(response.get('body').read()) return response_body def main(): """ Entrypoint for Anthropic Claude message example. """ try: bedrock_runtime = boto3.client(service_name='bedrock-runtime') model_id = 'anthropic.claude-3-sonnet-20240229-v1:0' system_prompt = "Please respond only with emoji." max_tokens = 1000 # Prompt with user turn only. user_message = {"role": "user", "content": "Hello World"} messages = [user_message] response = generate_message (bedrock_runtime, model_id, system_prompt, messages, max_tokens) print("User turn only.") print(json.dumps(response, indent=4)) # Prompt with both user turn and prefilled assistant response. #Anthropic Claude continues by using the prefilled assistant text. assistant_message = {"role": "assistant", "content": "<emoji>"} messages = [user_message, assistant_message] response = generate_message(bedrock_runtime, model_id,system_prompt, messages, max_tokens) print("User turn and prefilled assistant response.") print(json.dumps(response, indent=4)) except ClientError as err: message=err.response["Error"]["Message"] logger.error("A client error occurred: %s", message) print("A client error occured: " + format(message)) if __name__ == "__main__": main()
Contoh kode multimodal
Contoh berikut menunjukkan bagaimana untuk meneruskan gambar dan teks prompt dalam pesan multimodal ke Anthropic Claude 3 Sonnet model.
Topik
Prompt multimodal dengan InvokeModel
Contoh berikut menunjukkan cara mengirim prompt multimodal ke Anthropic Claude 3 Sonnet dengan InvokeModel.
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 """ Shows how to run a multimodal prompt with Anthropic Claude (on demand) and InvokeModel. """ import json import logging import base64 import boto3 from botocore.exceptions import ClientError logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) def run_multi_modal_prompt(bedrock_runtime, model_id, messages, max_tokens): """ Invokes a model with a multimodal prompt. Args: bedrock_runtime: The Amazon Bedrock boto3 client. model_id (str): The model ID to use. messages (JSON) : The messages to send to the model. max_tokens (int) : The maximum number of tokens to generate. Returns: None. """ body = json.dumps( { "anthropic_version": "bedrock-2023-05-31", "max_tokens": max_tokens, "messages": messages } ) response = bedrock_runtime.invoke_model( body=body, modelId=model_id) response_body = json.loads(response.get('body').read()) return response_body def main(): """ Entrypoint for Anthropic Claude multimodal prompt example. """ try: bedrock_runtime = boto3.client(service_name='bedrock-runtime') model_id = 'anthropic.claude-3-sonnet-20240229-v1:0' max_tokens = 1000 input_image = "/path/to/image" input_text = "What's in this image?" # Read reference image from file and encode as base64 strings. with open(input_image, "rb") as image_file: content_image = base64.b64encode(image_file.read()).decode('utf8') message = {"role": "user", "content": [ {"type": "image", "source": {"type": "base64", "media_type": "image/jpeg", "data": content_image}}, {"type": "text", "text": input_text} ]} messages = [message] response = run_multi_modal_prompt( bedrock_runtime, model_id, messages, max_tokens) print(json.dumps(response, indent=4)) except ClientError as err: message = err.response["Error"]["Message"] logger.error("A client error occurred: %s", message) print("A client error occured: " + format(message)) if __name__ == "__main__": main()
Streaming prompt multimodal dengan InvokeModelWithResponseStream
Contoh berikut menunjukkan cara mengalirkan respons dari prompt multimodal yang dikirim ke Anthropic Claude 3 Sonnet dengan InvokeModelWithResponseStream.
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 """ Shows how to stream the response from Anthropic Claude Sonnet (on demand) for a multimodal request. """ import json import base64 import logging import boto3 from botocore.exceptions import ClientError logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) def stream_multi_modal_prompt(bedrock_runtime, model_id, input_text, image, max_tokens): """ Streams the response from a multimodal prompt. Args: bedrock_runtime: The Amazon Bedrock boto3 client. model_id (str): The model ID to use. input_text (str) : The prompt text image (str) : The path to an image that you want in the prompt. max_tokens (int) : The maximum number of tokens to generate. Returns: None. """ with open(image, "rb") as image_file: encoded_string = base64.b64encode(image_file.read()) body = json.dumps({ "anthropic_version": "bedrock-2023-05-31", "max_tokens": max_tokens, "messages": [ { "role": "user", "content": [ {"type": "text", "text": input_text}, {"type": "image", "source": {"type": "base64", "media_type": "image/jpeg", "data": encoded_string.decode('utf-8')}} ] } ] }) response = bedrock_runtime.invoke_model_with_response_stream( body=body, modelId=model_id) for event in response.get("body"): chunk = json.loads(event["chunk"]["bytes"]) if chunk['type'] == 'message_delta': print(f"\nStop reason: {chunk['delta']['stop_reason']}") print(f"Stop sequence: {chunk['delta']['stop_sequence']}") print(f"Output tokens: {chunk['usage']['output_tokens']}") if chunk['type'] == 'content_block_delta': if chunk['delta']['type'] == 'text_delta': print(chunk['delta']['text'], end="") def main(): """ Entrypoint for Anthropic Claude Sonnet multimodal prompt example. """ model_id = "anthropic.claude-3-sonnet-20240229-v1:0" input_text = "What can you tell me about this image?" image = "/path/to/image" max_tokens = 100 try: bedrock_runtime = boto3.client('bedrock-runtime') stream_multi_modal_prompt( bedrock_runtime, model_id, input_text, image, max_tokens) except ClientError as err: message = err.response["Error"]["Message"] logger.error("A client error occurred: %s", message) print("A client error occured: " + format(message)) if __name__ == "__main__": main()