Invoquer un agent AgentCore Runtime
L'InvokeAgentRuntimeopération vous permet d'envoyer des demandes à des points de terminaison AgentCore d'exécution spécifiques identifiés par leur Amazon Resource Name (ARN) et de recevoir des réponses en streaming contenant les résultats de l'agent. L'API prend en charge la gestion des sessions par le biais d'identifiants de session, ce qui vous permet de maintenir le contexte de conversation lors de plusieurs interactions. Vous pouvez cibler des points de terminaison d'agent spécifiques à l'aide de qualificatifs facultatifs.
Pour appelerInvokeAgentRuntime, vous avez besoin d'bedrock-agentcore:InvokeAgentRuntimeautorisations. Lors de l'appel, vous pouvez également transmettre un jeton porteur que l'agent peut utiliser pour authentifier l'utilisateur.
L'InvokeAgentRuntimeopération accepte la charge utile de votre demande sous forme de données binaires d'une taille maximale de 100 Mo et renvoie une réponse en continu qui fournit des blocs de données en temps réel pendant que l'agent traite votre demande. Cette approche de streaming vous permet de recevoir des résultats partiels immédiatement plutôt que d'attendre la réponse complète, ce qui la rend idéale pour les applications interactives.
Pour exécuter des commandes shell (telles que l'exécution de tests, les opérations git ou la configuration de l'environnement) dans la même session, utilisez l'opération Execute shell command in AgentCore Runtime sessions. Les deux opérations fonctionnent sur le même environnement d'exécution et sur la même session de l'agent.
Si vous envisagez d'intégrer votre agent à OAuth, vous ne pouvez pas utiliser le AWS SDK pour appeler. InvokeAgentRuntime Envoyez plutôt une requête HTTPS à InvokeAgentRuntime. Pour plus d'informations, consultez Authentifier et autoriser avec l'authentification entrante et l'authentification sortante.
Invoquer des agents de streaming
L'exemple suivant montre comment utiliser boto3 pour appeler un environnement d'exécution d'agent :
import boto3 import json # Initialize the Bedrock AgentCore client agent_core_client = boto3.client('bedrock-agentcore') # Prepare the payload payload = json.dumps({"prompt": prompt}).encode() # Invoke the agent response = agent_core_client.invoke_agent_runtime( agentRuntimeArn=agent_arn, runtimeSessionId=session_id, payload=payload ) # Process and print the response if "text/event-stream" in response.get("contentType", ""): # Handle streaming response content = [] for line in response["response"].iter_lines(chunk_size=10): if line: line = line.decode("utf-8") if line.startswith("data: "): line = line[6:] print(line) content.append(line) print("\nComplete response:", "\n".join(content)) elif response.get("contentType") == "application/json": # Handle standard JSON response content = [] for chunk in response.get("response", []): content.append(chunk.decode('utf-8')) print(json.loads(''.join(content))) else: # Print raw response for other content types print(response)
Invoquer des agents multimodaux
Vous pouvez utiliser cette InvokeAgentRuntime opération pour envoyer des demandes multimodales qui incluent à la fois du texte et des images. L'exemple suivant montre comment invoquer un agent multimodal :
import boto3 import json import base64 # Read and encode image with open("image.jpg", "rb") as image_file: image_data = base64.b64encode(image_file.read()).decode('utf-8') # Prepare multi-modal payload payload = json.dumps({ "prompt": "Describe what you see in this image", "media": { "type": "image", "format": "jpeg", "data": image_data } }).encode() # Invoke the agent response = agent_core_client.invoke_agent_runtime( agentRuntimeArn=agent_arn, runtimeSessionId=session_id, payload=payload )
Gestion de session
L'InvokeAgentRuntimeopération prend en charge la gestion de session via le runtimeSessionId paramètre. En fournissant le même identifiant de session pour plusieurs demandes, vous pouvez conserver le contexte de la conversation, ce qui permet à l'agent de faire référence aux interactions précédentes.
Pour démarrer une nouvelle conversation, générez un identifiant de session unique. Pour poursuivre une conversation existante, utilisez le même identifiant de session que celui des demandes précédentes. Cette approche vous permet de créer des applications interactives qui conservent le contexte au fil du temps.
Astuce
Pour de meilleurs résultats, utilisez un UUID ou un autre identifiant unique pour vos identifiants de session afin d'éviter les collisions entre différents utilisateurs ou conversations.
Gestion des erreurs
Lors de l'utilisation de cette InvokeAgentRuntime opération, vous pouvez rencontrer diverses erreurs. Voici quelques erreurs courantes et la façon de les traiter :
- ValidationException
-
Se produit lorsque les paramètres de demande ne sont pas valides. Vérifiez que l'ARN, l'ID de session et la charge utile de votre agent sont correctement formatés.
- ResourceNotFoundException
-
Se produit lorsque le runtime de l'agent spécifié est introuvable. Vérifiez que l'ARN de l'agent est correct et que l'agent existe dans votre AWS compte.
- AccessDeniedException
-
Survient lorsque vous ne disposez pas des autorisations nécessaires. Assurez-vous que votre politique IAM inclut l'
bedrock-agentcore:InvokeAgentRuntimeautorisation. - ThrottlingException
-
Survient lorsque vous dépassez les limites de taux de demandes. Implémentez une logique de ralentissement exponentiel et de nouvelle tentative dans votre application.
Mettez en œuvre une gestion appropriée des erreurs dans votre application afin d'offrir une meilleure expérience utilisateur et de résoudre les problèmes de manière efficace.
Bonnes pratiques
Suivez les meilleures pratiques suivantes lors de l'utilisation de l'InvokeAgentRuntimeopération :
-
Utilisez la gestion des sessions pour maintenir le contexte des conversations afin d'améliorer l'expérience utilisateur.
-
Traitez les réponses en streaming de manière incrémentielle pour fournir un feedback en temps réel aux utilisateurs.
-
Mettez en œuvre une gestion appropriée des erreurs et une logique de nouvelle tentative pour une application robuste.
-
Tenez compte des limites de taille de charge utile (100 Mo) lors de l'envoi de demandes, en particulier pour le contenu multimodal.
-
Utilisez les qualificatifs appropriés pour cibler des versions d'agent ou des points de terminaison spécifiques.
-
Mettez en œuvre des mécanismes d'authentification lorsque cela est nécessaire à l'aide de jetons porteurs.
-
InvokeAgentRuntimeCommandÀ utiliser pour les opérations déterministes (tests, git, builds) au lieu de les acheminer via le LLM de l'agent. Voir Exécuter des commandes shell dans les sessions AgentCore d'exécution.