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
Utilisez votre agent dans une application en effectuant une demande InvokeAgent auprès d’un point de terminaison d’exécution des agents Amazon Bedrock.
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). 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.
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
L’exemple Python suivant montre comment appeler l’opération InvokeAgent et afficher la sortie de l’agent, ainsi que les informations de trace générées par l’appel.
Pour invoquer un agent
-
Créez un agent en suivant les instructions de la page Création et configuration manuelles de l’agent. 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.
Créez un alias pour l’agent en suivant les instructions à la page Création d’un alias pour votre agent. 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.
Exécutez le code suivant. Mettez à jour la valeur de
agent_idavec l’ID de votre agent et la valeur dealias_idavec l’ID de l’alias de l’agent. Pour diffuser la réponse de l’agent, modifiez la valeur destreamFinalResponsesurTrue. Vous pouvez également modifier l’intervalle de la barrière de protection en modifiant la valeurapplyGuardrailInterval.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)})