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.
Modelle von DeepSeek
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 Modellen von DeepSeek tätigen, müssen Sie einen Prompt für das Modell einschließen. Allgemeine Informationen zum Erstellen von Prompts für die DeepSeek-Modelle, die von Amazon Bedrock unterstützt werden, finden Sie unter DeepSeek-Prompt-Anleitung
Anmerkung
-
Sie können den Anforderungszugriff nicht von den Modellen Amazon Titan, Amazon Nova, DeepSeek -R1, Mistral AI, Meta Llama 3 Instruct und Meta Llama 4 entfernen. Sie können verhindern, dass Benutzer Inferenzaufrufe an diese Modelle tätigen, indem Sie eine IAM-Richtlinie verwenden und die Modell-ID angeben. Weitere Informationen finden Sie unter Verweigern des Zugriffs für Inferenzen von Basismodellen.
-
Um eine optimale Antwortqualität mit zu erzielenDeepSeek-R1, beschränken Sie den Parameter auf 8.192 Token oder weniger
max_tokens. Die API akzeptiert zwar bis zu 32.768 Token, bei einem Wert von 8.192 Tokens verschlechtert sich die Antwortqualität jedoch erheblich. Dies entspricht den Argumentationsfähigkeiten des Modells, wie sie im Leitfaden zum Argumentieren mit Inferenzen beschrieben sind.
In diesem Abschnitt werden die Anforderungsparameter und Antwortfelder für Modelle von DeepSeek beschrieben. Verwenden Sie diese Informationen, um im Rahmen der Operation Rückschlüsse auf Modelle zu DeepSeek ziehen. InvokeModel Dieser Abschnitt enthält auch Python-Codebeispiele, die zeigen, wie Modelle von DeepSeek aufgerufen werden.
Sie benötigen die Modell-ID für das Modell, um ein Modell in einer Inferenzoperation verwenden zu können. Da dieses Modell durch regionsübergreifende Inferenz aufgerufen wird, müssen Sie die Inferenzprofil-ID als Modell-ID verwenden. Verwenden Sie zum Beispiel für die Region USA us.deepseek.r1-v1:0.
-
Modellname: DeepSeek-R1
-
Textmodell
Weitere Informationen zur Verwendung von DeepSeek Modellen mit finden Sie APIs unter DeepSeekModelle.
Anforderung und Antwort von DeepSeek
Anforderungstext
DeepSeek verfügt über die folgenden Inferenzparameter für Inferenzaufrufe zur Textvervollständigung.
{ "prompt": string, "temperature": float, "top_p": float, "max_tokens": int, "stop": string array }
Felder:
-
prompt – (Zeichenfolge) erforderliche Texteingabe für den Prompt
-
temperature – (Gleitkommazahl) numerischer Wert kleiner oder gleich 1
-
top_p – (Gleitkommazahl) numerischer Wert kleiner oder gleich 1
-
max_tokens — (int) Verwendete Token, mindestens 1 bis maximal 8.192 Token für optimale Qualität. Die API akzeptiert zwar bis zu 32.768 Tokens, aber bei mehr als 8.192 Tokens verschlechtert sich die Antwortqualität erheblich.
-
stop – (Zeichenfolgen-Array) maximal 10 Elemente.
Hauptteil der Antwort
DeepSeek verfügt über die folgenden Antwortparameter für Inferenzaufrufe zur Textvervollständigung Bei diesem Beispiel handelt es sich um eine Textvervollständigung von DeepSeek, das keinen inhaltlichen Argumentationsblock zurückgibt.
{ "choices": [ { "text": string, "stop_reason": string } ] }
Felder:
-
stop_reason – (Zeichenfolge) der Grund, warum die Antwort keinen Text mehr generiert hat. Ein Wert von
stopoderlength. -
stop – (Zeichenfolge) Das Modell hat die Textgenerierung für den Prompt abgeschlossen.
-
length – Die Länge der Token für den generierten Text überschreitet den Wert von
max_tokensim Aufruf vonInvokeModel(oderInvokeModelWithResponseStream, wenn Sie die Ausgabe streamen). Die Antwort wird aufmax_tokensgekürzt. Erhöhen Sie den Wert vonmax_tokensund versuchen Sie Ihre Anfrage erneut.
Beispiel-Code
Das folgende Beispiel zeigt, wie das Modell DeepSeek-R1 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 theAWS-Regionof 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 Anforderungstext, um die Converse-API 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) Der System-Prompt für die Anfrage.
-
messages – (erforderlich) Die Eingabenachrichten
-
role – Die Rolle der Konversationsrunde Gültige Werte sind
userundassistant. -
content – (erforderlich) Der Inhalt der Konversationsrunde als Array von Objekten. Jedes Objekt enthält ein type-Feld, in dem Sie einen der folgenden Werte angeben können:
-
text – (erforderlich) Wenn Sie diesen Typ angeben, müssen Sie ein text-Feld einschließen und den Text-Prompt als Wert angeben.
-
-
-
inferenceConfig
-
temperature – (optional) Werte: Minimum = 0. Maximum = 1.
-
topP – (optional) Werte: Minimum = 0. Maximum = 1.
-
maxTokens – (Optional) die maximale Anzahl von Token, die vor dem Beenden generiert werden sollen. Werte: Minimum = 0. Maximum = 32 768.
-
stopSequences – (optional) Benutzerdefinierte Textsequenzen, die dazu führen, dass das Modell das Generieren beendet. Maximum = 10 Elemente.
-
Antworttext – Verwenden Sie dieses Beispiel für den Anforderungstext, um die Converse-API aufzurufen.
{ "message": { "role" : "assistant", "content": [ { "text": string }, { "reasoningContent": { "reasoningText": string } } ], }, "stopReason": string, "usage": { "inputTokens": int, "outputTokens": int, "totalTokens": int } "metrics": { "latencyMs": int } }
Felder:
-
message – Die Rückantwort des Modells
-
role – 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 Inhalt:
-
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 keine Antwort mehr generiert hat
-
end_turn – Das Modell hat bei dieser Runde einen Haltepunkt erreicht.
-
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()