

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Invocation d’un agent depuis votre application
<a name="agents-invoke-agent"></a>

Utilisez votre agent dans une application en effectuant une demande [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) auprès d’un [point de terminaison d’exécution des agents Amazon Bedrock](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt). 

Par défaut, la réponse d’`InvokeAgent` comprend un segment contenant la réponse complète de l’agent, ce qui peut prendre un certain temps. Vous pouvez également configurer `InvokeAgent` pour diffuser la réponse en plusieurs petits segments. Cela réduit le temps de latence de la réponse initiale de l’agent. 

**Réponses en streaming**

Vous pouvez éventuellement activer le streaming de la réponse en définissant `streamFinalResponse` sur `true` dans les configurations de streaming ([StreamingConfigurations](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_StreamingConfigurations.html)). Le flux de réponse contient plusieurs événements avec des segments pour chaque partie de la réponse dans l’ordre.

Pour diffuser les réponses, assurez-vous que le rôle d’exécution de l’agent inclut l’autorisation `bedrock:InvokeModelWithResponseStream` pour le modèle d’agent configuré. Pour plus d’informations, consultez [Autorisations basées sur l’identité pour le rôle de service Agents](agents-permissions.md#agents-permissions-identity).

Si votre agent est configuré avec une barrière de protection, vous pouvez également spécifier `applyGuardrailInterval` dans `StreamingConfigurations`, afin de contrôler la fréquence à laquelle un appel `ApplyGuardrail` est passé sur les caractères de réponse sortants (par exemple, tous les 50 caractères).

Par défaut, l’intervalle de la barrière de protection est défini à 50 caractères. Si un intervalle plus long est spécifié, la réponse sera générée en plus gros segments avec moins d’appels `ApplyGuardrail`. Les exemples suivants montrent la réponse générée pour la chaîne d’entrée *Bonjour, je suis un agent*.

**Exemple de réponse en segments : intervalle défini sur 3 caractères**

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

Chaque segment comporte au moins 3 caractères, à l’exception du dernier.

**Exemple de réponse en segments : intervalle défini sur 20 caractères ou plus**

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

## Invocation d’un agent
<a name="invoke-agent-example"></a>

L’exemple Python suivant montre comment appeler l’opération [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) et afficher la sortie de l’agent, ainsi que les informations de [trace](trace-events.md) générées par l’appel. 

**Pour invoquer un agent**

1. Créez un agent en suivant les instructions de la page [Création et configuration manuelles de l’agent](agents-create.md). Notez l’identifiant de l’agent. Si nécessaire, vous pouvez obtenir l’identifiant ultérieurement. Pour plus d’informations, consultez [Affichage d’informations sur un agent](agents-view.md).

1. Créez un alias pour l’agent en suivant les instructions à la page [Création d’un alias pour votre agent](deploy-agent-proc.md). Notez l’ID de l’alias. Si nécessaire, vous pouvez obtenir l’identifiant ultérieurement. Pour plus d’informations, consultez [Affichage d’informations sur les alias d’agents dans Amazon Bedrock](agents-alias-view.md).

1. Exécutez le code suivant. Mettez à jour la valeur de `agent_id` avec l’ID de votre agent et la valeur de `alias_id` avec l’ID de l’alias de l’agent. Pour diffuser la réponse de l’agent, modifiez la valeur de `streamFinalResponse` sur `True`. Vous pouvez également modifier l’intervalle de la barrière de protection en modifiant la valeur `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)})
   ```