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.
DeepSeekModelle
DeepSeekDas R1-Modell ist ein text-to-text Modell, das für die Invoke-API (InvokeModel,) und die Converse-API (Converse und InvokeModelWithResponseStream) für die Invoke-API verwendet werden kann. ConverseStream
Wenn Sie Inferenzaufrufe mit den Modellen ausführen, müssen Sie eine DeepSeek Eingabeaufforderung für das Modell angeben. Allgemeine Informationen zum Erstellen von Eingabeaufforderungen für die DeepSeek Modelle, die Amazon Bedrock unterstützt, finden Sie in der Anleitung zur DeepSeekEingabeaufforderung
Anmerkung
Sie können den Anforderungszugriff nicht von den Modellen Amazon Titan, Amazon Nova, DeepSeek -R1, Mistral AI und Meta Llama 3 Instruct entfernen. Sie können verhindern, dass Benutzer Inferenzrufe für diese Modelle tätigen, indem Sie eine IAM-Richtlinie verwenden und die Modell-ID angeben. Weitere Informationen finden Sie unter Zugriff auf Inferenz von Foundation-Modellen verweigern.
In diesem Abschnitt werden die Anforderungsparameter und Antwortfelder für DeepSeek Modelle beschrieben. Verwenden Sie diese Informationen, um mit der InvokeModelOperation Inferenzaufrufe an DeepSeek Modelle zu senden. Dieser Abschnitt enthält auch Python-Codebeispiele, die zeigen, wie DeepSeek Modelle aufgerufen werden.
Um ein Modell in einer Inferenzoperation zu verwenden, benötigen Sie die Modell-ID für das Modell. Da dieses Modell durch regionsübergreifende Inferenz aufgerufen wird, müssen Sie die Inferenzprofil-ID als Modell-ID verwenden. Für die USA verwenden Sie beispielsweise. us.deepseek.r1-v1:0
-
Name des Modells: DeepSeek-R1
-
Textmodell
Weitere Informationen zur Verwendung von DeepSeek Modellen mit APIs finden Sie unter DeepSeekModelle
DeepSeekAnfrage und Antwort
Anforderungstext
DeepSeekhat die folgenden Inferenzparameter für einen Inferenzaufruf zur Textvervollständigung.
{ "prompt": string, "temperature": float, "top_p": float, "max_tokens": int, "stop": string array }
Felder:
-
prompt — (Zeichenfolge) Erforderliche Texteingabe für die Eingabeaufforderung.
-
temperature — (float) Numerischer Wert kleiner oder gleich 1.
-
top_p — (float) Numerischer Wert kleiner oder gleich 1.
-
max_tokens — (int) Verwendete Token, mindestens 1 bis maximal 32.768 Token.
-
stop — (String-Array) Maximal 10 Elemente.
Hauptteil der Antwort
DeepSeekhat die folgenden Antwortparameter für einen Inferenzaufruf zur Textvervollständigung. Bei diesem Beispiel handelt es sich um eine Textvervollständigung von DeepSeek und gibt keinen inhaltlichen Argumentationsblock zurück.
{ "choices": [ { "text": string, "stop_reason": string } ] }
Felder:
-
stop_reason — (string) Der Grund, warum die Antwort aufgehört hat, Text zu generieren. Wert von oder.
stop
length
-
stop — (string) Das Modell hat die Textgenerierung für die Eingabeaufforderung abgeschlossen.
-
length — (string) Die Länge der Token für den generierten Text überschreitet den Wert von
max_tokens
im Aufruf vonInvokeModel
(oderInvokeModelWithResponseStream
, wenn Sie die Ausgabe streamen). Die Antwort ist auf gekürzt.max_tokens
Erhöhen Sie den Wert vonmax_tokens
und versuchen Sie es erneut mit Ihrer Anfrage.
Beispiel-Code
Dieses Beispiel zeigt, wie das Modell aufgerufen wird.
# Use the API to send a text message to DeepSeek-R1. import boto3 import json from botocore.exceptions import ClientError # Create a Bedrock Runtime client in the AWS-Region of your choice. client = boto3.client("bedrock-runtime", region_name="us-west-2") # Set the cross Region inference profile ID for DeepSeek-R1 model_id = "us.deepseek.r1-v1:0" # Define the prompt for the model. prompt = "Describe the purpose of a 'hello world' program in one line." # Embed the prompt in DeepSeek-R1's instruction format. formatted_prompt = f""" <|begin▁of▁sentence|><|User|>{prompt}<|Assistant|><think>\n """ body = json.dumps({ "prompt": formatted_prompt, "max_tokens": 512, "temperature": 0.5, "top_p": 0.9, }) try: # Invoke the model with the request. response = client.invoke_model(modelId=model_id, body=body) # Read the response body. model_response = json.loads(response["body"].read()) # Extract choices. choices = model_response["choices"] # Print choices. for index, choice in enumerate(choices): print(f"Choice {index + 1}\n----------") print(f"Text:\n{choice['text']}\n") print(f"Stop reason: {choice['stop_reason']}\n") except (ClientError, Exception) as e: print(f"ERROR: Can't invoke '{model_id}'. Reason: {e}") exit(1)
Converse
Anforderungstext — Verwenden Sie dieses Beispiel für den Anfragetext, um die ConverseAPI aufzurufen.
{ "modelId": string, # us.deepseek.r1-v1:0 "system": [ { "text": string } ], "messages": [ { "role": string, "content": [ { "text": string } ] } ], "inferenceConfig": { "temperature": float, "topP": float, "maxTokens": int, "stopSequences": string array }, "guardrailConfig": { "guardrailIdentifier":"string", "guardrailVersion": "string", "trace": "string" } }
Felder:
-
system — (Optional) Die Systemaufforderung für die Anfrage.
-
messages — (Erforderlich) Die Eingabemeldungen.
-
Rolle — Die Rolle der Konversation. Gültige Werte sind
user
undassistant
. -
content — (Erforderlich) Der Inhalt der Konversation als eine Reihe von Objekten. Jedes Objekt enthält ein Typfeld, in dem Sie einen der folgenden Werte angeben können:
-
text — (Erforderlich) Wenn Sie diesen Typ angeben, müssen Sie ein Textfeld einschließen und die Textaufforderung als Wert angeben.
-
-
-
inferenceConfig
-
Temperatur — (optional) Werte: Minimum = 0. Maximum = 1.
-
TopP — (optional) Werte: Minimum = 0. Maximum = 1.
-
maxTokens — (Optional) Die maximale Anzahl von Tokens, die vor dem Stoppen generiert werden sollen. Werte: Minimum = 0. Maximum = 32.768.
-
StopSequences — (Optional) Benutzerdefinierte Textsequenzen, die dazu führen, dass das Modell keine Ausgabe mehr generiert. Maximal = 10 Elemente.
-
Antworttext — Verwenden Sie dieses Beispiel für den Anfragetext, um die ConverseAPI aufzurufen.
{ "message": { "role" : "assistant", "content": [ { "text": string }, { "reasoningContent": { "reasoningText": string } } ], }, "stopReason": string, "usage": { "inputTokens": int, "outputTokens": int, "totalTokens": int } "metrics": { "latencyMs": int } }
Felder:
-
Nachricht — Die Rückantwort des Modells.
-
Rolle — Die Konversationsrolle der generierten Nachricht. Dieser Wert ist immer
assistant
. -
content — Der vom Modell generierte Inhalt, der als Array zurückgegeben wird. Es gibt zwei Arten von Inhalten:
-
Text — Der Textinhalt der Antwort.
-
reasoningContent — (Optional) Der Inhalt der Argumentation aus der Modellantwort.
-
ReasoningText — Der Begründungstext aus der Modellantwort.
-
-
-
stopReason — Der Grund, warum das Modell die Antwort nicht mehr generiert hat.
-
end_turn — Der Zug, an dem das Modell einen Haltepunkt erreicht hat.
-
max_tokens — Der generierte Text hat den Wert des
maxTokens
Eingabefeldes oder die maximale Anzahl von Token überschritten, die das Modell unterstützt.
-
Beispielcode — Hier ist ein Beispiel für die DeepSeek Erstellung eines Aufrufs der ConverseAPI.
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 """ Shows how to use the Converse API with DeepSeek-R1 (on demand). """ import logging import boto3 from botocore.client import Config from botocore.exceptions import ClientError logger = logging.getLogger(__name__) logging.basicConfig(level=logging.INFO) def generate_conversation(bedrock_client, model_id, system_prompts, messages): """ Sends messages to a model. Args: bedrock_client: The Boto3 Bedrock runtime client. model_id (str): The model ID to use. system_prompts (JSON) : The system prompts for the model to use. messages (JSON) : The messages to send to the model. Returns: response (JSON): The conversation that the model generated. """ logger.info("Generating message with model %s", model_id) # Inference parameters to use. temperature = 0.5 max_tokens = 4096 # Base inference parameters to use. inference_config = { "temperature": temperature, "maxTokens": max_tokens, } # Send the message. response = bedrock_client.converse( modelId=model_id, messages=messages, system=system_prompts, inferenceConfig=inference_config, ) # Log token usage. token_usage = response['usage'] logger.info("Input tokens: %s", token_usage['inputTokens']) logger.info("Output tokens: %s", token_usage['outputTokens']) logger.info("Total tokens: %s", token_usage['totalTokens']) logger.info("Stop reason: %s", response['stopReason']) return response def main(): """ Entrypoint for DeepSeek-R1 example. """ logging.basicConfig(level=logging.INFO, format="%(levelname)s: %(message)s") model_id = "us.deepseek.r1-v1:0" # Setup the system prompts and messages to send to the model. system_prompts = [{"text": "You are an app that creates playlists for a radio station that plays rock and pop music. Only return song names and the artist."}] message_1 = { "role": "user", "content": [{"text": "Create a list of 3 pop songs."}] } message_2 = { "role": "user", "content": [{"text": "Make sure the songs are by artists from the United Kingdom."}] } messages = [] try: # Configure timeout for long responses if needed custom_config = Config(connect_timeout=840, read_timeout=840) bedrock_client = boto3.client(service_name='bedrock-runtime', config=custom_config) # Start the conversation with the 1st message. messages.append(message_1) response = generate_conversation( bedrock_client, model_id, system_prompts, messages) # Add the response message to the conversation. output_message = response['output']['message'] # Remove reasoning content from the response output_contents = [] for content in output_message["content"]: if content.get("reasoningContent"): continue else: output_contents.append(content) output_message["content"] = output_contents messages.append(output_message) # Continue the conversation with the 2nd message. messages.append(message_2) response = generate_conversation( bedrock_client, model_id, system_prompts, messages) output_message = response['output']['message'] messages.append(output_message) # Show the complete conversation. for message in messages: print(f"Role: {message['role']}") for content in message['content']: if content.get("text"): print(f"Text: {content['text']}") if content.get("reasoningContent"): reasoning_content = content['reasoningContent'] reasoning_text = reasoning_content.get('reasoningText', {}) print() print(f"Reasoning Text: {reasoning_text.get('text')}") print() except ClientError as err: message = err.response['Error']['Message'] logger.error("A client error occurred: %s", message) print(f"A client error occured: {message}") else: print( f"Finished generating text with model {model_id}.") if __name__ == "__main__": main()