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á.
Tipos de nós em fluxo imediato
O Amazon Bedrock fornece os seguintes tipos de nós para criar seu fluxo imediato. Ao configurar um nó, você precisa fornecer os seguintes campos:
-
Nome — Insira um nome para o nó.
-
Tipo — No console, você arrasta e solta o tipo de nó a ser usado. NoAPI, use o
type
campo e o correspondente FlowNodeConfigurationnoconfiguration
campo. -
Entradas — Forneça as seguintes informações para cada entrada:
-
Nome — Um nome para a entrada. Alguns nós têm nomes ou tipos predefinidos que você deve usar. Para saber quais têm nomes predefinidos, consulteTipos de nós lógicos.
-
Expressão — Defina a parte de toda a entrada a ser usada como entrada individual. Para obter mais informações, consulte Use expressões para definir entradas extraindo a parte relevante de uma entrada inteira nos fluxos do Amazon Bedrock Prompt.
-
Tipo — O tipo de dados para a entrada. Quando esse nó é alcançado em tempo de execução, o Amazon Bedrock aplica a expressão a toda a entrada e valida se o resultado corresponde ao tipo de dados.
-
-
Saídas — Forneça as seguintes informações para cada saída:
-
Nome — Um nome para a saída. Alguns nós têm nomes ou tipos predefinidos que você deve usar. Para saber quais têm nomes predefinidos, consulteTipos de nós lógicos.
-
Tipo — O tipo de dados para a saída. Quando esse nó é alcançado em tempo de execução, o Amazon Bedrock valida se a saída do nó corresponde ao tipo de dados.
-
-
Configuração — No console, você define campos específicos do nó na parte superior do nó. NoAPI, use o apropriado FlowNodeConfiguratione preencha seus campos.
Cada tipo de nó é descrito abaixo e sua estrutura no API é fornecida. Expanda uma seção para saber mais sobre esse tipo de nó.
Nodes para controlar a lógica de fluxo imediato
Use os seguintes tipos de nós para controlar a lógica do seu fluxo de solicitações.
Cada fluxo de prompt contém somente um nó de entrada de fluxo e deve começar com ele. O nó de entrada de fluxo obtém o content
da InvokeFlow
solicitação, valida o tipo de dados e o envia para o nó seguinte.
O seguinte mostra a estrutura geral de um FlowNodeobjeto de entrada noAPI:
{ "name": "string", "type": "Input", "outputs": [ { "name": "document", "type": "String | Number | Boolean | Object | Array", } ], "configuration": { "input": CONTEXT-DEPENDENT } }
Um nó de saída de fluxo extrai os dados de entrada do nó anterior, com base na expressão definida, e os retorna. No console, a saída é a resposta retornada após escolher Executar na janela de teste. NoAPI, a saída é retornada flowOutputEvent
no content
campo da InvokeFlow
resposta. Um fluxo imediato pode ter vários nós de saída de fluxo.
Um fluxo pode ter vários nós de saída de fluxo se houver várias ramificações no fluxo.
Veja a seguir a estrutura geral de um FlowNodeobjeto de saída:
{ "name": "string", "type": "Output", "inputs": [ { "name": "document", "type": "String | Number | Boolean | Object | Array", "expression": "string" } ], "configuration": { "output": CONTEXT-DEPENDENT } }
Um nó condicional envia dados do nó anterior para nós diferentes, dependendo das condições definidas. Um nó condicional pode receber várias entradas.
Para ver um exemplo, consulte Crie um fluxo com um nó de condição.
Para definir um nó de condição
-
Adicione quantas entradas forem necessárias para avaliar as condições que você planeja adicionar.
-
Insira um nome para cada entrada, especifique o tipo esperado e escreva uma expressão para extrair a parte relevante de toda a entrada.
-
Conecte cada entrada à saída relevante de um nó upstream.
-
Adicione quantas condições você precisar.
-
Para cada condição:
-
Insira um nome para a condição.
-
Use operadores lógicos e relacionais para definir uma condição que compara entradas com outras entradas ou com uma constante.
nota
As condições são avaliadas em ordem. Se mais de uma condição for satisfeita, a condição anterior terá precedência.
-
Conecte cada condição ao nó downstream para o qual você deseja enviar os dados, se essa condição for atendida.
-
Expressões de condição
Para definir uma condição, você se refere a uma entrada pelo nome e a compara a um valor usando qualquer um dos seguintes operadores relacionais:
Operador | Significado | Tipos de dados compatíveis | Exemplo de uso | Exemplo de significado |
---|---|---|---|---|
== | Igual a (o tipo de dados também deve ser igual) | Cadeia de caracteres, número, booleano | A == B | Se A é igual a B |
!= | Não é igual a | Cadeia de caracteres, número, booleano | UM! = B | Se A não for igual a B |
> | Maior que | Número | A > B | Se A for maior que B |
>= | Maior ou igual a | Número | A >= B | Se A for maior ou igual a B |
< | Menor que | Número | A < B | Se A for menor que B |
<= | Menor ou igual a | Número | A <= B | Se A for menor ou igual a B |
Você pode comparar as entradas com outras entradas ou com uma constante em uma expressão condicional. Por exemplo, se você tiver uma entrada numérica chamada profit
e outra chamadaexpenses
, ambas profit > expenses
profit <= 1000
são expressões válidas.
Você pode usar os seguintes operadores lógicos para combinar expressões para condições mais complexas. Recomendamos que você use parênteses para resolver ambigüidades no agrupamento de expressões:
Operador | Significado | Exemplo de uso | Exemplo de significado |
---|---|---|---|
e | Ambas as expressões são verdadeiras | (A < B) e (C == 1) | Se ambas as expressões forem verdadeiras:
|
ou | Pelo menos uma expressão é verdadeira | (UMA! = 2) ou (B > C) | Se alguma das expressões for verdadeira:
|
not | A expressão não é verdadeira | não (A > B) | Se A não for maior que B (equivalente a A <= B) |
NoAPI, você define o seguinte no definition
campo ao enviar uma UpdateFlowsolicitação CreateFlowou:
-
Um FlowNodeobjeto condicional na
nodes
matriz. O formato geral é o seguinte (observe que os nós de condição não têmoutputs
):{ "name": "string", "type": "Condition", "inputs": [ { "name": "string", "type": "String | Number | Boolean | Object | Array", "expression": "string" } ], "configuration": { "condition": { "conditions": [ { "name": "string", "expression": "string" }, ... ] } } }
-
Para cada entrada no nó condicional, um FlowConnectionobjeto na
connections
matriz. Inclua um FlowDataConnectionConfigurationobjeto noconfiguration
campo doFlowConnection
objeto. O formato geral doFlowConnection
objeto é o seguinte:{ "name": "string", "source": "string", "target": "string", "type": "Data", "configuration": { "data": { "sourceOutput": "string", "expression": "string" } } }
-
Para cada condição (incluindo a condição padrão) no nó da condição, um FlowConnectionobjeto na
connections
matriz. Inclua um FlowConditionalConnectionConfigurationobjeto noconfiguration
campo doFlowConnection
objeto. O formato geral do FlowConnectionobjeto é o seguinte:{ "name": "string", "source": "string", "target": "string", "type": "Data", "configuration": { "condition": "default", "condition": "string" ... } }
Use operadores relacionais e lógicos para definir o
condition
que conecta esse nó de condição a umsource
target
nó a jusante. Para a condição padrão, especifique a condição comodefault
.
Um nó iterador pega uma matriz e retorna iterativamente seus itens como saída para o nó downstream. As entradas para o nó iterador são processadas uma a uma e não paralelamente umas às outras. O nó de saída de fluxo retorna o resultado final de cada entrada em uma resposta diferente. Você também pode usar um nó coletor a jusante do nó iterador para coletar as respostas iteradas e retorná-las como uma matriz, além do tamanho da matriz.
O seguinte mostra a estrutura geral de um FlowNodeobjeto iterador:
{ "name": "string", "type": "Iterator", "inputs": [ { "name": "array", "type": "String | Number | Boolean | Object | Array", "expression": "string" } ], "outputs": [ { "name": "arrayItem", "type": "String | Number | Boolean | Object | Array", }, { "name": "arraySize", "type": "Number" } ], "configuration": { "iterator": CONTEXT-DEPENDENT } }
Um nó coletor recebe uma entrada iterada, além do tamanho que a matriz terá, e a retorna como uma matriz. Você pode usar um nó coletor a jusante de um nó iterador para coletar os itens iterados depois de enviá-los por alguns nós.
Veja a seguir a estrutura geral de um FlowNodeobjeto coletor:
{ "name": "string", "type": "Collector", "inputs": [ { "name": "arrayItem", "type": "String | Number | Boolean | Object | Array", "expression": "string" }, { "name": "arraySize", "type": "Number" } ], "outputs": [ { "name": "collectedArray", "type": "Array" }, ], "configuration": { "collector": CONTEXT-DEPENDENT } }
Nodes para lidar com dados no fluxo imediato
Use os seguintes tipos de nós para lidar com dados em seu fluxo de solicitações:
Um nó de prompt define um prompt a ser usado no fluxo. Você pode usar um prompt do Gerenciamento de prompts ou definir um em linha no nó. Para obter mais informações, consulte Crie e armazene avisos reutilizáveis com o gerenciamento de alertas no Amazon Bedrock.
Para ver um exemplo, consulte Comece com exemplos de fluxos imediatos.
As entradas para o nó do prompt são valores para preencher as variáveis. A saída é a resposta gerada pelo modelo.
Veja a seguir a estrutura geral de um FlowNodeobjeto prompt:
{ "name": "string", "type": "prompt", "inputs": [ { "name": "content", "type": "String | Number | Boolean | Object | Array", "expression": "string" }, ... ], "outputs": [ { "name": "modelCompletion", "type": "String" } ], "configuration": { "prompt": { "sourceConfiguration": PromptFlowNodeSourceConfiguration object (see below) } } }
O PromptFlowNodeSourceConfigurationobjeto depende se você usa um prompt do Gerenciamento de prompts ou se você o define em linha:
-
Se você usar um prompt do Prompt management, o objeto deverá estar na seguinte estrutura geral:
{ "resource": { "promptArn": "string" } }
-
Se você definir um prompt embutido, siga as orientações para definir uma variante na API guia de Crie um prompt usando o gerenciamento de prompts (observe que não há nenhum
name
campo nesse objeto, no entanto). O objeto que você usa deve estar na seguinte estrutura geral:{ "inline": { "modelId": "string", "templateType": "TEXT", "templateConfiguration": { "text": { "text": "string", "inputVariables": [ { "name": "string" }, ... ] } }, "inferenceConfiguration": { "text": { "maxTokens": int, "stopSequences": ["string", ...], "temperature": float, "topK": int, "topP": float } } } }
Um nó de agente permite que você envie uma solicitação a um agente, que orquestra entre os FMs recursos associados para identificar e executar ações para um usuário final. Para obter mais informações, consulte Automatize tarefas em seu aplicativo usando agentes conversacionais.
Na configuração, especifique o Amazon Resource Name (ARN) do alias do agente a ser usado. As entradas no nó são o prompt do agente e qualquer prompt ou atributos de sessão associados. O nó retorna a resposta do agente como saída.
nota
Atualmente, o agente não oferece suporte a invocações em vários turnos. Você não pode configurar o retorno do controle para o agente em um fluxo.
O seguinte mostra a estrutura geral de um FlowNodeobjeto agente:
{ "name": "string", "type": "Agent", "inputs": [ { "name": "agentInputText" "type": "String | Number | Boolean | Object | Array", "expression": "string" }, { "name": "promptAttributes" "type": "Object", "expression": "string" }, { "name": "sessionAttributes" "type": "Object", "expression": "string" } ], "outputs": [ { "name": "agentResponse", "type": "String" } ], "configuration": { "agent": { "agentAliasArn": "string" } } }
Um nó da base de conhecimento permite que você envie uma consulta para uma base de conhecimento. Para obter mais informações, consulte Recupere dados e gere respostas de IA com bases de conhecimento.
Na configuração, forneça o ID da base de conhecimento e um ID do modelo para usar se você quiser gerar uma resposta com base nos resultados recuperados. Para retornar os resultados recuperados como uma matriz, omita o ID do modelo. A entrada no nó é a consulta à base de conhecimento. A saída é a resposta do modelo, como uma string, ou uma matriz dos resultados recuperados.
Veja a seguir a estrutura geral de um FlowNodeobjeto da base de conhecimento:
{ "name": "string", "type": "KnowledgeBase", "inputs": [ { "name": "retrievalQuery", "type": "String", "expression": "string" } ], "outputs": [ { "name": "retrievalResults", "type": "Array | String" } ], "configuration": { "knowledgeBase": { "knowledgeBaseId": "string", "modelId": "string" } } }
Um nó de armazenamento S3 permite que você armazene dados no fluxo em um local do Amazon S3. Na configuração, você especifica o bucket S3 a ser usado para armazenamento de dados. As entradas no nó são o conteúdo a ser armazenado e a chave do objeto. O nó retorna a localização URI do S3 como saída.
Veja a seguir a estrutura geral de um FlowNodeobjeto de armazenamento do S3:
{ "name": "string", "type": "Storage", "inputs": [ { "name": "content", "type": "String | Number | Boolean | Object | Array", "expression": "string" }, { "name": "objectKey", "type": "String", "expression": "string" } ], "outputs": [ { "name": "s3Uri", "type": "String" } ], "configuration": { "retrieval": { "serviceConfiguration": { "s3": { "bucketName": "string" } } } } }
Um nó de recuperação do S3 permite que você recupere dados de um local do Amazon S3 para introduzi-los no fluxo. Na configuração, você especifica o bucket do S3 do qual recuperar os dados. A entrada no nó é a chave do objeto. O nó retorna o conteúdo no local do S3 como saída.
nota
Atualmente, os dados no local do S3 devem ser uma string codificada UTF em -8.
O seguinte mostra a estrutura geral de um objeto de recuperação FlowNodedo S3:
{ "name": "string", "type": "Retrieval", "inputs": [ { "name": "objectKey", "type": "String", "expression": "string" } ], "outputs": [ { "name": "s3Content", "type": "String" } ], "configuration": { "retrieval": { "serviceConfiguration": { "s3": { "bucketName": "string" } } } } }
Um nó de função Lambda permite chamar uma função Lambda na qual você pode definir código para realizar a lógica de negócios. Quando você inclui um nó Lambda em um fluxo de prompt, o Amazon Bedrock envia um evento de entrada para a função Lambda que você especifica.
Na configuração, especifique o Amazon Resource Name (ARN) da função Lambda. Defina as entradas a serem enviadas no evento de entrada do Lambda. Você pode escrever código com base nessas entradas e definir o que a função retorna. A resposta da função é retornada na saída.
O seguinte mostra a estrutura geral de um FlowNodeobjeto de função λ:
{ "name": "string", "type": "LambdaFunction", "inputs": [ { "name": "string", "type": "String | Number | Boolean | Object | Array", "expression": "string" }, ... ], "outputs": [ { "name": "functionResponse", "type": "String | Number | Boolean | Object | Array" } ], "configuration": { "lambdaFunction": { "lambdaArn": "string" } } }
Evento de entrada Lambda para um fluxo imediato
O evento de entrada enviado para uma função Lambda em um nó Lambda tem o seguinte formato:
{ "messageVersion": "1.0", "flow": { "flowArn": "string", "flowAliasArn": "string" }, "node": { "name": "string", "nodeInputs": [ { "name": "string", "type": "String | Number | Boolean | Object | Array", "expression": "string", "value": ... }, ... ] } }
Os campos de cada entrada correspondem aos campos que você especifica ao definir o nó Lambda, enquanto o valor do value
campo é preenchido com toda a entrada no nó após ser resolvido pela expressão. Por exemplo, se toda a entrada no nó for [1, 2, 3]
e a expressão for$.data[1]
, o valor enviado no evento de entrada para a função Lambda seria. 2
Para obter mais informações sobre eventos no Lambda, consulte Conceitos do Lambda no AWS Lambda Guia do desenvolvedor.
Resposta Lambda para um fluxo imediato
Ao escrever uma função Lambda, você define a resposta retornada por ela. Essa resposta é retornada ao seu fluxo de prompts como a saída do nó Lambda.
nota
O nó Lex depende do serviço Amazon Lex, que pode armazenar e usar o conteúdo do cliente para o desenvolvimento e a melhoria contínua de outros AWS serviços. Como um AWS cliente, você pode optar por não ter seu conteúdo armazenado ou usado para melhorias no serviço. Para saber como implementar uma política de exclusão para o Amazon Lex, consulte Políticas de exclusão de serviços de IA.
Um nó Lex permite que você chame um bot do Amazon Lex para processar um enunciado usando processamento de linguagem natural e identificar uma intenção, com base na definição do bot. Para obter mais informações, consulte o Guia do desenvolvedor do Amazon Lex.
Na configuração, especifique o Amazon Resource Name (ARN) do alias do bot a ser usado e a localidade a ser usada. As entradas no nó são o enunciado e quaisquer atributos de solicitação ou de sessão que o acompanham. O nó retorna a intenção identificada como saída.
nota
Atualmente, o nó Lex não suporta conversas em vários turnos. Um nó Lex só pode processar um enunciado.
O seguinte mostra a estrutura geral de um FlowNodeobjeto Lex:
{ "name": "string", "type": "Lex", "inputs": [ { "name": "inputText", "type": "String | Number | Boolean | Object | Array", "expression": "string" }, { "name": "requestAttributes", "type": "Object", "expression": "string" }, { "name": "sessionAttributes", "type": "Object", "expression": "string" } ], "outputs": [ { "name": "predictedIntent", "type": "String" } ], "configuration": { "lex": { "botAliasArn": "string", "localeId": "string" } } }
Tabelas de resumo para tipos de nós
As tabelas a seguir resumem as entradas e saídas permitidas para cada tipo de nó. Observe o seguinte:
-
Se um nome estiver marcado como Qualquer, você poderá fornecer qualquer string como nome. Caso contrário, você deverá usar o valor especificado na tabela.
-
Se um tipo estiver marcado como Qualquer, você poderá especificar qualquer um dos seguintes tipos de dados: Cadeia de caracteres, Número, Booleano, Objeto, Matriz. Caso contrário, você deverá usar o tipo especificado na tabela.
-
Atualmente, somente os nós de função Condition, Prompt e Lambda permitem várias entradas que você mesmo pode definir.
Informações de entrada | Informações de saída | |||||
---|---|---|---|---|---|---|
Tipo de nó | Entrada | Nome | Tipo | Saída | Nome | Tipo |
Entrada | N/D | N/D | N/D | O content campo na InvokeFlow solicitação. |
document |
Any |
Saída | Dados a serem retornados na InvokeFlow resposta. |
document |
Any | N/D | N/D | N/D |
Condição |
Dados a serem enviados com base em uma condição. (várias entradas permitidas) |
Any | Any |
Dados a serem enviados com base em uma condição. (especifique condições para caminhos diferentes) |
Any | Any |
Iterador | Uma matriz para a qual você deseja aplicar os seguintes nós iterativamente a cada membro. | array |
Array | Cada item da matriz | arrayItem |
Any |
O tamanho da matriz de entrada | arraySize |
Número | ||||
Colecionador | Uma iteração que você deseja consolidar em uma matriz. | arrayItem |
Any | Uma matriz com todas as saídas do nó anterior anexadas. | collectedArray |
Array |
O tamanho da matriz de saída | arraySize |
Número |
Informações de entrada | Informações de saída | |||||
---|---|---|---|---|---|---|
Tipo de nó | Entrada | Nome | Tipo | Saída | Nome | Tipo |
Prompt |
Um valor para preencher uma variável no prompt. (várias entradas permitidas) |
|
Any | A resposta retornada pelo modelo. | modelCompletion |
String |
Armazenamento S3 | Dados a serem armazenados em um bucket do S3. | content |
Any | A localização URI do S3. | s3Uri |
String |
A chave do objeto a ser usada para o objeto S3. | objectKey |
String | ||||
Recuperação do S3 | A chave do objeto para o objeto S3 | objectKey |
String | Os dados a serem recuperados de um bucket do S3. | s3Content |
Any |
Atendente | A solicitação a ser enviada ao agente. | agentInputText |
String | A resposta retornou do agente. | agentResponse |
String |
Qualquer atributo de prompt a ser enviado junto com o prompt. | promptAttributes |
Objeto | ||||
Qualquer atributo de sessão a ser enviado junto com o prompt. | sessionAttributes |
Objeto | ||||
Base de conhecimento | A consulta a ser enviada para a base de conhecimento. | retrievalQuery |
String | Os resultados retornados ou a resposta gerada pela base de conhecimento. | retrievalResults |
Array |
Função Lambda |
Dados a serem enviados para a função. (várias entradas permitidas) |
Any | A resposta retornada da função. | functionResponse |
Any | |
Lex | A expressão a ser enviada ao bot. | inputText |
String | A intenção que o bot prevê para o enunciado. | predictedIntent |
String |
Qualquer atributo de solicitação a ser enviado junto com o enunciado. | requestAttributes |
Objeto | ||||
Qualquer atributo de sessão a ser enviado junto com o enunciado. | sessionAttributes |
Objeto |