As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Modelos da DeepSeek
DeepSeekO modelo R1 da é um text-to-text modelo disponível para uso para inferência por meio da API Invoke (InvokeModel, InvokeModelWithResponseStream) e da API Converse (Converse e). ConverseStream
Ao fazer chamadas de inferência com modelos da DeepSeek, você precisa incluir um prompt para o modelo. Para ter informações gerais sobre como criar prompts para os modelos da DeepSeek compatíveis com o Amazon Bedrock, consulte o guia de prompts da DeepSeek
nota
-
Você não pode remover o acesso solicitado dos modelos Amazon Titan, Amazon Nova, DeepSeek -R1, Mistral AI, Meta Llama 3 Instruct e Meta Llama 4. É possível impedir que os usuários façam chamadas de inferência a esses modelos usando uma política do IAM e especificando o ID do modelo. Para ter mais informações Negar acesso para inferência de modelos de base.
-
Para obter uma qualidade de resposta ideal comDeepSeek-R1, limite o
max_tokensparâmetro a 8.192 tokens ou menos. Embora a API aceite até 32.768 tokens, a qualidade da resposta diminui significativamente acima de 8.192 tokens. Isso se alinha aos recursos de raciocínio do modelo, conforme descrito no guia de raciocínio de inferência.
Esta seção descreve os parâmetros de solicitação e os campos de resposta dos modelos da DeepSeek. Use essas informações para fazer chamadas de inferência para DeepSeek modelos com a InvokeModeloperação. Esta seção também inclui exemplos de código do Python que mostram como chamar modelos da DeepSeek.
Para usar um modelo em uma operação de inferência, o ID do modelo é necessário. Como esse modelo é invocado por meio de inferência entre regiões, você precisará usar o ID do perfil de inferência como o ID do modelo. Por exemplo, para os EUA, você usará o us.deepseek.r1-v1:0.
-
Nome do modelo: DeepSeek-R1.
-
Modelo de texto
Para obter mais informações sobre como usar DeepSeek modelos com APIs, consulte DeepSeekModelos
Solicitação e reposta do DeepSeek
Corpo da solicitação
DeepSeektem os seguintes parâmetros de inferência para uma chamada de inferência de conclusão de texto.
{ "prompt": string, "temperature": float, "top_p": float, "max_tokens": int, "stop": string array }
Campos:
-
prompt: (string) entrada de texto obrigatória do prompt.
-
temperature: (número flutuante) valor numérico menor ou igual a 1.
-
top_p: (número flutuante) valor numérico menor ou igual a 1.
-
max_tokens — (int) Tokens usados, mínimo de 1 a um máximo de 8.192 tokens para uma qualidade ideal. Embora a API aceite até 32.768 tokens, a qualidade da resposta diminui significativamente acima de 8.192 tokens.
-
stop: (matriz de strings) no máximo dez itens.
Corpo de resposta
A DeepSeek tem os parâmetros de resposta a seguir para uma chamada de inferência de preenchimento de texto. Este exemplo é um preenchimento de texto do DeepSeek e não exibe um bloco de raciocínio de conteúdo.
{ "choices": [ { "text": string, "stop_reason": string } ] }
Campos:
-
stop_reason: (string) o motivo pelo qual a resposta parou de gerar texto. Valor de
stopoulength. -
stop: (string) o modelo parou de gerar texto para o prompt de entrada.
-
length: (string) o tamanho dos tokens do texto gerado excede o valor de
max_tokensna chamada aInvokeModel(ou aInvokeModelWithResponseStream, se você estiver transmitindo uma saída). A resposta é truncada ao atingirmax_tokens. Aumente o valor demax_tokense tente fazer sua solicitação novamente.
Código de exemplo
Este exemplo mostra como chamar o modelo 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 theRegião da 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 da solicitação: use este exemplo de corpo de solicitação para chamar a 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" } }
Campos:
-
system: (opcional) o prompt do sistema para a solicitação.
-
messages: (obrigatório) as mensagens de entrada.
-
role: o perfil do turno da conversa. Os valores válidos são
usereassistant. -
content: (obrigatório) o conteúdo do turno da conversa, como uma matriz de objetos. Cada objeto contém um campo de tipo, no qual você pode especificar um dos seguintes valores:
-
text: (obrigatório) se você especificar esse tipo, deverá incluir um campo de texto e especificar o prompt de texto como o respectivo valor.
-
-
-
inferenceConfig
-
temperature: (opcional) valor mínimo = 0 e máximo = 1.
-
topP: (opcional) valor mínimo = 0 e máximo = 1.
-
maxTokens: (opcional) o número máximo de tokens a serem gerados antes de parar. Valores: mínimo = 0 e máximo = 32.768.
-
stopSequences: (opcional) sequências de texto personalizadas que farão com que o modelo pare de gerar saída. Máximo = 10 itens.
-
Corpo da resposta: use este exemplo de corpo de resposta para chamar a API Converse.
{ "message": { "role" : "assistant", "content": [ { "text": string }, { "reasoningContent": { "reasoningText": string } } ], }, "stopReason": string, "usage": { "inputTokens": int, "outputTokens": int, "totalTokens": int } "metrics": { "latencyMs": int } }
Campos:
-
message: a resposta dada pelo modelo.
-
role: a função conversacional da mensagem gerada. O valor é sempre
assistant. -
content: o conteúdo gerado pelo modelo, que é exibido como uma matriz. Existem dois tipos de conteúdo:
-
text: o conteúdo textual da resposta.
-
reasoningContent: (opcional) o conteúdo do raciocínio da resposta do modelo.
-
reasoningText: o texto do raciocínio da resposta do modelo.
-
-
-
stopReason: o motivo pelo qual o modelo parou de gerar a resposta.
-
end_turn: o modelo atingiu um ponto de parada natural.
-
max_tokens: o texto gerado excedeu o valor do campo de entrada
maxTokensou o número máximo de tokens que o modelo permite.
-
Código de exemplo - Aqui está um exemplo de como DeepSeek fazer uma chamada para 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()