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á.
Use a API Converse
Você pode usar a API Amazon Bedrock Converse para criar aplicativos de conversação que enviam e recebem mensagens de e para um modelo Amazon Bedrock. Por exemplo, você pode criar um bot de bate-papo que mantenha uma conversa por vários turnos e use uma personalização de persona ou tom exclusiva de acordo com suas necessidades, como um útil assistente de suporte técnico.
Para usar a API Converse, você usa as operações Converse ou ConverseStream(para respostas de streaming) para enviar mensagens para um modelo. É possível usar as operações de inferência existentes (InvokeModelou InvokeModelWithResponseStream) para aplicativos de conversação. No entanto, recomendamos o uso da API Converse, pois ela fornece uma API consistente, que funciona com todos os modelos do Amazon Bedrock que oferecem suporte a mensagens. Isso significa que você pode escrever código uma vez e usá-lo com modelos diferentes. Caso um modelo tenha parâmetros de inferência exclusivos, a API Converse também permite que você transmita esses parâmetros exclusivos em uma estrutura específica do modelo.
Você pode usar a API Converse para implementar o uso de ferramentas e proteções em seus aplicativos.
nota
Com modelos Mistral AI de código Meta aberto, a API Converse incorpora sua entrada em um modelo de prompt específico do modelo que permite conversas.
Modelos e recursos do modelo compatíveis
A API Converse é compatível com os seguintes modelos e recursos de modelo do Amazon Bedrock. A API Converse não é compatível com nenhum modelo de incorporação (comoTitan Embeddings G1 - Text) ou modelo de geração de imagem (comoStability AI).
Modelo | Converse | ConverseStream | Solicitações do sistema | Chat de documentos | Visão | Uso de ferramentas | Uso da ferramenta de streaming | Proteções |
---|---|---|---|---|---|---|---|---|
AI21 Jamba-Instruct |
Sim |
Não |
Sim |
Não |
Não |
Não |
Não |
Não |
AI21 LabsJurassic-2(Texto) |
Limitado. Sem suporte por chat. |
Não |
Não |
Não |
Não |
Não |
Não |
Sim |
TitanModelos da Amazon |
Sim |
Sim |
Não |
Sim (excetoTitan Text Premier) |
Não |
Não |
Não |
Sim |
AnthropicClaude2 e anteriores |
Sim |
Sim |
Sim |
Sim |
Não |
Não |
Não |
Sim |
AnthropicClaude3 |
Sim |
Sim |
Sim |
Sim |
Sim |
Sim |
Sim |
Sim |
AnthropicClaude3.5 |
Sim |
Sim |
Sim |
Não |
Sim |
Sim |
Sim |
Sim |
Cohere Command |
Limitado. Sem suporte por chat. |
Limitado. Sem suporte por chat. |
Não |
Sim |
Não |
Não |
Não |
Sim |
Cohere Command Light |
Limitado. Sem suporte por chat. |
Limitado. Sem suporte por chat. |
Não |
Não |
Não |
Não |
Não |
Sim |
Cohere e Command R Command R+ |
Sim |
Sim |
Sim |
Sim |
Não |
Sim |
Não |
Não |
Meta e Llama 2 Llama 3 |
Sim |
Sim |
Sim |
Sim |
Não |
Não |
Não |
Sim |
Mistral AI Instruct |
Sim |
Sim |
Não |
Sim |
Não |
Não |
Não |
Sim |
Mistral Large |
Sim |
Sim |
Sim |
Sim |
Não |
Sim |
Não |
Sim |
Mistral Small | Sim | Sim | Sim | Não | Não | Sim | Não | Sim |
nota
CohereCommand(Texto) e AI21 Labs Jurassic-2 (Texto) não oferecem suporte ao bate-papo com a API Converse. Os modelos só conseguem lidar com uma mensagem de usuário por vez e não conseguem manter o histórico de uma conversa. Você receberá um erro se tentar passar mais de uma mensagem.
Usando a API Converse
Para usar a API Converse, você chama as ConverseStream
operações Converse
ou para enviar mensagens para um modelo. Para ligarConverse
, você precisa de permissão para a bedrock:InvokeModel
operação. Para ligarConverseStream
, você precisa de permissão para a bedrock:InvokeModelWithResponseStream
operação.
Tópicos
Solicitação
Você especifica o modelo que deseja usar definindo o modelId
campo. Para obter uma lista de IDs de modelo compatíveis com o Amazon Bedrock, consulteIDs de modelo Amazon Bedrock.
Uma conversa é uma série de mensagens entre o usuário e a modelo. Você inicia uma conversa enviando uma mensagem como usuário (função de usuário) para o modelo. O modelo, atuando como assistente (função de assistente), gera uma resposta que retorna em uma mensagem. Se desejar, você pode continuar a conversa enviando mais mensagens sobre a função do usuário para o modelo. Para manter o contexto da conversa, não se esqueça de incluir todas as mensagens de função de assistente que você receber do modelo nas solicitações subsequentes. Para ver um código demonstrativo, consulte Exemplos da API Converse.
Você fornece as mensagens que deseja passar para um modelo no messages
campo, que mapeia para uma matriz de objetos Message. Cada mensagem contém o conteúdo da mensagem e a função que a mensagem desempenha na conversa.
nota
O Amazon Bedrock não armazena nenhum texto, imagem ou documento que você forneça como conteúdo. Os dados são usados somente para gerar a resposta.
Você armazena o conteúdo da mensagem no content
campo, que é mapeado para uma matriz de ContentBlockobjetos. Em cada um ContentBlock, você pode especificar um dos seguintes campos (para ver quais modelos suportam quais modalidades, consulteModelos e recursos do modelo compatíveis):
Os outros campos ContentBlock
são para uso de ferramentas.
Você especifica a função no role
campo. A função pode ser uma das seguintes:
-
usuário — O humano que está enviando mensagens para o modelo.
-
assistente — O modelo que está enviando mensagens de volta para o usuário humano.
nota
As seguintes restrições se referem ao content
campo:
-
Você pode incluir até 20 imagens. O tamanho, a altura e a largura de cada imagem não devem exceder 3,75 MB, 8.000 px e 8.000 px, respectivamente.
-
Você pode incluir até cinco documentos. O tamanho de cada documento não deve ser superior a 4,5 MB.
-
Você só pode incluir imagens e documentos se
role
for o casouser
.
No messages
exemplo a seguir, o usuário solicita uma lista de três músicas pop e o modelo gera uma lista de músicas.
[ { "role": "user", "content": [ { "text": "Create a list of 3 pop songs." } ] }, { "role": "assistant", "content": [ { "text": "Here is a list of 3 pop songs by artists from the United Kingdom:\n\n1. \"As It Was\" by Harry Styles\n2. \"Easy On Me\" by Adele\n3. \"Unholy\" by Sam Smith and Kim Petras" } ] } ]
Um prompt do sistema é um tipo de aviso que fornece instruções ou contexto ao modelo sobre a tarefa que ele deve realizar ou a personalidade que ele deve adotar durante a conversa. Você pode especificar uma lista de solicitações do sistema para a solicitação no campo system
(SystemContentBlock), conforme mostrado no exemplo a seguir.
[ { "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. " } ]
Parâmetros de inferência
A API Converse é compatível com um conjunto básico de parâmetros de inferência que você define no inferenceConfig
campo () InferenceConfiguration. O conjunto básico de parâmetros de inferência é:
maxTokens — O número máximo de tokens a serem permitidos na resposta gerada.
StopSequences — Uma lista de sequências de parada. Uma sequência de parada é uma sequência de caracteres que faz com que o modelo pare de gerar a resposta.
temperatura — A probabilidade de o modelo selecionar opções de maior probabilidade ao gerar uma resposta.
TopP — A porcentagem de candidatos mais prováveis que o modelo considera para o próximo token.
Para ter mais informações, consulte Parâmetros de inferência.
O exemplo a seguir, JSON define o parâmetro de temperature
inferência.
{"temperature": 0.5}
Se o modelo que você está usando tiver parâmetros de inferência adicionais, você poderá definir esses parâmetros especificando-os como JSON no campo. additionalModelRequestFields
O exemplo de JSON a seguir mostra como definirtop_k
, que está disponível em Anthropic Claude modelos, mas não é um parâmetro básico de inferência na API de mensagens.
{"top_k": 200}
Você pode especificar os caminhos para parâmetros adicionais do modelo no additionalModelResponseFieldPaths
campo, conforme mostrado no exemplo a seguir.
[ "/stop_sequence" ]
A API retorna os campos adicionais que você solicita no additionalModelResponseFields
campo.
Resposta
A resposta que você recebe da API Converse depende de qual operação você chama, Converse
ouConverseStream
.
Resposta inversa
Na resposta deConverse
, o output
campo (ConverseOutput) contém a mensagem (Mensagem) que o modelo gera. O conteúdo da mensagem está no campo content
(ContentBlock) e a função (user
ouassistant
) à qual a mensagem corresponde está no role
campo.
O metrics
campo (ConverseMetrics) inclui métricas para a chamada. Para determinar por que o modelo parou de gerar conteúdo, verifique o stopReason
campo. Você pode obter informações sobre os tokens passados para o modelo na solicitação e os tokens gerados na resposta, verificando o usage
campo (TokenUsage). Se você especificou campos de resposta adicionais na solicitação, a API os retornará como JSON no additionalModelResponseFields
campo.
O exemplo a seguir mostra a resposta de Converse
quando você passa a solicitação discutida emSolicitação.
{ "output": { "message": { "role": "assistant", "content": [ { "text": "Here is a list of 3 pop songs by artists from the United Kingdom:\n\n1. \"Wannabe\" by Spice Girls\n2. \"Bitter Sweet Symphony\" by The Verve \n3. \"Don't Look Back in Anger\" by Oasis" } ] } }, "stopReason": "end_turn", "usage": { "inputTokens": 125, "outputTokens": 60, "totalTokens": 185 }, "metrics": { "latencyMs": 1175 } }
ConverseStream resposta
Se você ligar ConverseStream
para transmitir a resposta de um modelo, o fluxo será retornado no campo de stream
resposta. O stream emite os seguintes eventos na seguinte ordem.
-
messageStart
(MessageStartEvent). O evento inicial de uma mensagem. Inclui a função da mensagem. -
contentBlockStart
(ContentBlockStartEvent). Um evento de início do bloco de conteúdo. Somente para uso da ferramenta. -
contentBlockDelta
(ContentBlockDeltaEvent). Um evento delta do bloco de conteúdo. Inclui o texto parcial que o modelo gera ou a entrada parcial json para uso da ferramenta. -
contentBlockStop
(ContentBlockStopEvent). Um evento de interrupção do bloqueio de conteúdo. -
messageStop
(MessageStopEvent). O evento de parada da mensagem. Inclui o motivo pelo qual o modelo parou de gerar saída. -
metadata
(ConverseStreamMetadataEvent). Metadados para a solicitação. Os metadados incluem o uso do token emusage
(TokenUsage) e métricas para a chamada emmetrics
(ConverseStreamMetadataEvent).
ConverseStream transmite um bloco de conteúdo completo como um ContentBlockStartEvent
evento, um ou mais ContentBlockDeltaEvent
eventos e um ContentBlockStopEvent
evento. Use o contentBlockIndex
campo como um índice para correlacionar os eventos que compõem um bloco de conteúdo.
O exemplo a seguir é uma resposta parcial deConverseStream
.
{'messageStart': {'role': 'assistant'}} {'contentBlockDelta': {'delta': {'text': ''}, 'contentBlockIndex': 0}} {'contentBlockDelta': {'delta': {'text': ' Title'}, 'contentBlockIndex': 0}} {'contentBlockDelta': {'delta': {'text': ':'}, 'contentBlockIndex': 0}} . . . {'contentBlockDelta': {'delta': {'text': ' The'}, 'contentBlockIndex': 0}} {'messageStop': {'stopReason': 'max_tokens'}} {'metadata': {'usage': {'inputTokens': 47, 'outputTokens': 20, 'totalTokens': 67}, 'metrics': {'latencyMs': 100.0}}}
Exemplos da API Converse
Os exemplos a seguir mostram como usar as ConverseStream
operações Converse
e.