Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Modelli DeepSeek
DeepSeekè un text-to-text modello disponibile per l'inferenza tramite l'API Invoke (InvokeModel, InvokeModelWithResponseStream) e l'API Converse (Converse e). ConverseStream
Quando effettui chiamate di inferenza con modelli DeepSeek, devi includere un prompt per il modello. Per informazioni generali sulla creazione di prompt per i modelli DeepSeek supportati da Amazon Bedrock, consulta la guida ai prompt di DeepSeek
Nota
-
Non puoi rimuovere l'accesso alle richieste dai modelli Amazon Titan, Amazon Nova, DeepSeek -R1, Mistral AI, Meta Llama 3 Instruct e Meta Llama 4. Puoi impedire agli utenti di effettuare chiamate di inferenza a questi modelli utilizzando una policy IAM e specificando l’ID modello. Per ulteriori informazioni, consulta Negare l’accesso per l’inferenza dei modelli di fondazione.
-
Per una qualità di risposta ottimale conDeepSeek-R1, limita il parametro a 8.192 token o meno.
max_tokensSebbene l'API accetti fino a 32.768 token, la qualità della risposta diminuisce notevolmente oltre gli 8.192 token. Ciò è in linea con le capacità di ragionamento del modello descritte nella guida al ragionamento inferenziale.
In questa sezione vengono descritti i parametri di richiesta e i campi di risposta per i modelli DeepSeek. Utilizzate queste informazioni per effettuare chiamate di inferenza ai DeepSeek modelli con l'operazione. InvokeModel Questa sezione include anche esempi di codice Python che mostrano come chiamare i modelli DeepSeek.
Per utilizzare un modello in un’operazione di inferenza, è necessario l’ID modello per il modello. Poiché questo modello viene invocato tramite l’inferenza tra Regioni, è necessario utilizzare l’ID del profilo di inferenza come ID modello. Ad esempio, per gli Stati Uniti, utilizza us.deepseek.r1-v1:0.
-
Nome del modello: DeepSeek-R1
-
Modelli di testo
Per ulteriori informazioni su come utilizzare i DeepSeek modelli con APIs, consultate DeepSeekModels
Richiesta e risposta DeepSeek
Corpo della richiesta
DeepSeek include i seguenti parametri di inferenza per effettuare chiamate di inferenza Text Completions.
{ "prompt": string, "temperature": float, "top_p": float, "max_tokens": int, "stop": string array }
Campi:
-
prompt (stringa): input di testo richiesto del prompt.
-
temperature (mobile): valore numerico inferiore o uguale a 1.
-
top_p (mobile): valore numerico inferiore o uguale a 1.
-
max_tokens — (int) Token utilizzati, da un minimo di 1 a un massimo di 8.192 token per una qualità ottimale. Sebbene l'API accetti fino a 32.768 token, la qualità della risposta diminuisce notevolmente oltre gli 8.192 token.
-
stop (array di stringhe): massimo 10 elementi.
Corpo di risposta
DeepSeek include i seguenti parametri di risposta per effettuare chiamate di inferenza Text Completions. Questo esempio è un completamento di testo di DeepSeek e non restituisce un blocco di ragionamento del contenuto.
{ "choices": [ { "text": string, "stop_reason": string } ] }
Campi:
-
stop_reason (stringa): motivo per cui la risposta ha smesso di generare testo. Valore
stopolength. -
stop (stringa): il modello ha terminato la generazione del testo per il prompt di input.
-
length (stringa): la lunghezza dei token per il testo generato supera il valore di
max_tokensnella chiamata aInvokeModel(oInvokeModelWithResponseStream, nel caso di streaming dell’output). La risposta viene troncata in base al valoremax_tokens. Aumenta il valore dimax_tokense ritenta la richiesta.
Codice di esempio
Questo esempio mostra come chiamare il modello DeepSeek-R1.
# 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 theRegione AWSof 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
Corpo di richiesta: utilizza questo esempio di corpo di richiesta per chiamare l’API Converse.
{ "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" } }
Campi:
-
system (facoltativo): prompt di sistema per la richiesta.
-
messages (obbligatorio): messaggi di input.
-
role: ruolo del turno di conversazione. I valori validi sono
usereassistant. -
content (obbligatorio): contenuto del turno di conversazione, come array di oggetti. Ogni oggetto contiene un campo type, in cui è possibile specificare uno dei seguenti valori:
-
text (obbligatorio): se specificate questo tipo, dovete includere un campo di testo e indicare il prompt di testo come valore.
-
-
-
inferenceConfig
-
temperature (opzionale): valori: minimo = 0, massimo = 1.
-
topP (opzionale): valori: minimo = 0, massimo = 1.
-
maxTokens (facoltativo): numero massimo di token da generare prima dell’interruzione. Valori: minimo = 0, massimo = 32.768.
-
stopSequences (facoltativo): sequenze di testo personalizzato che interrompono la generazione di output da parte del modello. Massimo = 10 elementi.
-
Corpo di risposta: utilizza questo esempio di corpo di risposta per chiamare l’API Converse.
{ "message": { "role" : "assistant", "content": [ { "text": string }, { "reasoningContent": { "reasoningText": string } } ], }, "stopReason": string, "usage": { "inputTokens": int, "outputTokens": int, "totalTokens": int } "metrics": { "latencyMs": int } }
Campi:
-
message: risposta restituita dal modello.
-
role: ruolo conversazionale del messaggio generato. Il valore è sempre
assistant. -
content: contenuto generato dal modello, che viene restituito come array. Esistono due tipi di contenuto:
-
text: contenuto testuale della risposta.
-
reasoningContent (facoltativo): contenuto del ragionamento della risposta del modello.
-
reasoningText: testo di ragionamento della risposta del modello.
-
-
-
stopReason: motivo per cui il modello ha smesso di generare la risposta.
-
end_turn: turno in cui il modello ha raggiunto un punto di interruzione.
-
max_tokens: il testo generato ha superato il valore del campo di input
maxTokenso ha superato il numero massimo di token supportati dal modello.
-
Codice di esempio: ecco un esempio di come DeepSeek creare una chiamata a 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()