

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á.

# Invocar um agente por meio de sua aplicação
<a name="agents-invoke-agent"></a>

Use o agente em uma aplicação fazendo uma solicitação [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html) com um [endpoint de runtime do recurso Agentes para Amazon Bedrock](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt). 

Por padrão, a resposta de `InvokeAgent` inclui um fragmento que contém a resposta completa do agente, que pode levar algum tempo para ser concluída. Como alternativa, você pode configurar `InvokeAgent` para transmitir a resposta em vários fragmentos menores. Isso diminui a latência da resposta inicial do agente. 

**Respostas de streaming**

Opcionalmente, é possível habilitar o streaming da resposta definindo `streamFinalResponse` como `true` nas configurações de streaming ([StreamingConfigurations](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_StreamingConfigurations.html)). O fluxo de resposta contém vários eventos com fragmentos em ordem para cada parte da resposta.

Para transmitir respostas, o perfil de execução do agente deve incluir a permissão `bedrock:InvokeModelWithResponseStream` para o modelo de agente configurado. Para obter mais informações, consulte [Permissões baseadas em identidade para o perfil de serviço de agentes](agents-permissions.md#agents-permissions-identity).

Se o agente estiver configurado com uma barreira de proteção, também será possível especificar `applyGuardrailInterval` em `StreamingConfigurations`, para controlar a frequência com que uma chamada `ApplyGuardrail` é feita em caracteres de resposta de saída (por exemplo, a cada cinquenta caracteres).

Por padrão, o intervalo da barreira de proteção é definido como cinquenta caracteres. Se um intervalo maior for especificado, a resposta será gerada em fragmentos maiores com menos chamadas `ApplyGuardrail`. Os exemplos a seguir mostram a resposta gerada para a string de entrada *Hello, I am an Agent*.

**Exemplo de resposta em fragmentos: intervalo definido para três caracteres**

```
'Hel', 'lo, ', 'I am', ' an', ' Age', 'nt'
```

Cada fragmento tem pelo menos três caracteres, exceto o último fragmento.

**Exemplo de resposta em fragmentos: intervalo definido para vinte caracteres**

```
'Hello, I am an Agent'
```

## Invocar um agente
<a name="invoke-agent-example"></a>

O exemplo Python a seguir mostra como chamar a operação [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_InvokeAgent.html) e exibir a saída do agente, bem como qualquer informação de [rastreamento](trace-events.md) gerada pela chamada. 

**Como invocar um agente**

1. Crie um agente seguindo as instruções em [Criar e configurar o agente manualmente](agents-create.md). Anote o ID do agente. Se necessário, você pode obter o ID posteriormente. Para obter mais informações, consulte [Obter informações sobre um agente](agents-view.md).

1. Crie um alias para o agente seguindo as instruções em [Criar um alias para o agente](deploy-agent-proc.md). Anote o ID do alias. Se necessário, você pode obter o ID posteriormente. Para obter mais informações, consulte [Visualizar as informações sobre os aliases de agentes no Amazon Bedrock.](agents-alias-view.md).

1. Execute o código a seguir. Atualize o valor `agent_id` para o ID do agente e o valor `alias_id` para o ID do alias do agente. Para transmitir a resposta do agente, altere o valor de `streamFinalResponse` para `True`. Também é possível alterar o intervalo da barreira de proteção alterando o valor de `applyGuardrailInterval`.

   ```
   import boto3
   import logging
   
   from botocore.exceptions import ClientError
   
   
   logging.basicConfig(level=logging.INFO)
   logger = logging.getLogger(__name__)
   
   def invoke_agent(client, agent_id, alias_id, prompt, session_id):
           response = client.invoke_agent(
               agentId=agent_id,
               agentAliasId=alias_id,
               enableTrace=True,
               sessionId = session_id,
               inputText=prompt,
               streamingConfigurations = { 
       "applyGuardrailInterval" : 20,
         "streamFinalResponse" : False
               }
           )
           completion = ""
           for event in response.get("completion"):
               #Collect agent output.
               if 'chunk' in event:
                   chunk = event["chunk"]
                   completion += chunk["bytes"].decode()
               
               # Log trace output.
               if 'trace' in event:
                   trace_event = event.get("trace")
                   trace = trace_event['trace']
                   for key, value in trace.items():
                       logging.info("%s: %s",key,value)
   
           print(f"Agent response: {completion}")
   
   
   if __name__ == "__main__":
   
       client=boto3.client(
               service_name="bedrock-agent-runtime"
           )
       
       agent_id = "AGENT_ID"
       alias_id = "ALIAS_ID"
       session_id = "MY_SESSION_ID"
       prompt = "Prompt to send to agent"
   
       try:
   
           invoke_agent(client, agent_id, alias_id, prompt, session_id)
   
       except ClientError as e:
           print(f"Client error: {str(e)}")
           logger.error("Client error: %s", {str(e)})
   ```