Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
AnthropicClaudeNachrichten-API
Dieser Abschnitt enthält Inferenzparameter und Codebeispiele für die Verwendung der Anthropic Claude Nachrichten-API.
Themen
AnthropicClaudeÜberblick über die Nachrichten-API
Sie können die Nachrichten-API verwenden, um Chat-Bots oder virtuelle Assistentenanwendungen zu erstellen. Die API verwaltet den Konversationsaustausch zwischen einem Benutzer und einem Anthropic Claude Model (Assistent).
Anthropictrainiert Claude-Modelle so, dass sie abwechselnd zwischen Benutzer und Assistent kommunizieren. Wenn Sie eine neue Nachricht erstellen, geben Sie mit dem Parameter Nachrichten die vorherigen Gesprächsrunden an. Das Modell generiert dann die nächste Nachricht in der Konversation.
Jede Eingabenachricht muss ein Objekt mit einer Rolle und einem Inhalt sein. Sie können eine einzelne Benutzerrollennachricht angeben, oder Sie können mehrere Benutzer- und Assistentennachrichten einbeziehen. Die erste Nachricht muss immer die Benutzerrolle verwenden.
Wenn Sie die Technik verwenden, die Antwort von vorab auszufüllen Claude (indem Sie den Anfang von Claudes Antwort mithilfe einer letzten Assistentenrolle ausfüllen), antwortet ich, indem Claude Sie dort weitermachen, wo Sie aufgehört haben. Bei dieser Technik Claude wird immer noch eine Antwort mit der Assistentenrolle zurückgegeben.
Wenn für die endgültige Nachricht die Assistentenrolle verwendet wird, wird der Inhalt der Antwort sofort mit dem Inhalt dieser Nachricht fortgesetzt. Sie können dies verwenden, um einen Teil der Antwort des Modells einzuschränken.
Beispiel mit einer einzigen Benutzernachricht:
[{"role": "user", "content": "Hello, Claude"}]
Beispiel mit mehreren Konversationswechseln:
[ {"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?"}, ]
Beispiel mit einer teilweise ausgefüllten Antwort von Claude:
[ {"role": "user", "content": "Please describe yourself using only JSON"}, {"role": "assistant", "content": "Here is my JSON description:\n{"}, ]
Der Inhalt jeder Eingangsnachricht kann entweder eine einzelne Zeichenfolge oder ein Array von Inhaltsblöcken sein, wobei jeder Block einen bestimmten Typ hat. Die Verwendung einer Zeichenfolge ist eine Abkürzung für ein Array aus einem Inhaltsblock vom Typ „Text“. Die folgenden Eingabemeldungen sind gleichwertig:
{"role": "user", "content": "Hello, Claude"}
{"role": "user", "content": [{"type": "text", "text": "Hello, Claude"}]}
Informationen zum Erstellen von Prompts für Anthropic Claude Modelle finden Sie in der Dokumentation unter Intro to Prompting
Systemaufforderungen
Sie können der Anfrage auch eine Systemaufforderung hinzufügen. Mit einer Systemaufforderung können Sie Kontext und Anweisungen angeben AnthropicClaude, z. B. ein bestimmtes Ziel oder eine bestimmte Rolle angeben. Geben Sie in dem system
Feld eine Systemaufforderung an, wie im folgenden Beispiel gezeigt.
"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."
Weitere Informationen finden Sie in der Anthropic Dokumentation unter Systemaufforderungen
Multimodale Eingabeaufforderungen
Eine multimodale Aufforderung kombiniert mehrere Modalitäten (Bilder und Text) in einer einzigen Aufforderung. Sie geben die Modalitäten im Eingabefeld ancontent
. Das folgende Beispiel zeigt, wie Sie den Inhalt eines bereitgestellten Bildes beschreiben könnten. Anthropic Claude Beispielcode finden Sie unter Beispiele für multimodalen Code.
{ "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?" } ] } ] }
Sie können dem Modell bis zu 20 Bilder zur Verfügung stellen. Sie können der Assistentenrolle keine Bilder zuweisen.
Jedes Bild, das Sie in eine Anfrage aufnehmen, wird auf Ihre Token-Nutzung angerechnet. Weitere Informationen finden Sie in der Anthropic Dokumentation unter Kosten für Bilder
Unterstützte Modelle
Sie können die Nachrichten-API mit den folgenden Anthropic Claude Modellen verwenden.
AnthropicClaudeInstantv1.2
AnthropicClaude2 v2
AnthropicClaude2 v2.1
Anthropic Claude 3 Sonnet
Anthropic Claude 3 Haiku
Anthropic Claude 3 Opus
Anforderung und Antwort
Der Text der Anfrage wird im body
Feld einer Anfrage an InvokeModeloder InvokeModelWithResponseStreamübergeben. Die maximale Größe der Nutzdaten, die Sie in einer Anfrage senden können, beträgt 20 MB.
Weitere Informationen finden Sie unter https://docs.anthropic.com/claude/reference/messages_post.
Codebeispiele
Die folgenden Codebeispiele zeigen, wie die Nachrichten-API verwendet wird.
Beispiel für einen Nachrichtencode
Dieses Beispiel zeigt, wie eine Benutzernachricht mit einer einzigen Runde und eine Benutzerabfolge mit einer vorausgefüllten Assistentennachricht an ein Anthropic Claude 3 Sonnet Modell gesendet werden.
# 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()
Beispiele für multimodalen Code
Die folgenden Beispiele zeigen, wie ein Bild und ein Aufforderungstext in einer multimodalen Nachricht an ein Modell übergeben werden. Anthropic Claude 3 Sonnet
Themen
Multimodale Eingabeaufforderung mit InvokeModel
Das folgende Beispiel zeigt, wie eine multimodale Aufforderung an with gesendet wird. Anthropic Claude 3 Sonnet 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()
Multimodale Eingabeaufforderung streamen mit InvokeModelWithResponseStream
Das folgende Beispiel zeigt, wie die Antwort von einer multimodalen Aufforderung gestreamt wird, die an Anthropic Claude 3 Sonnet with gesendet wurde. 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()