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 menggunakan Converse API untuk mengimplementasikan pesan dalam aplikasi Anda. Converse API menyediakan serangkaian parameter terpadu yang bekerja di semua model yang mendukung pesan. Untuk informasi selengkapnya, lihat Lakukan percakapan dengan operasi Converse 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 masukan 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 API untuk 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" }
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 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 cara 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()