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.
Invoquer un agent AgentCore d'exécution
L'InvokeAgentRuntimeopération vous permet d'envoyer des requêtes à 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 conserver le contexte des conversations lors de multiples interactions. Vous pouvez cibler des terminaux 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 l'authentification des utilisateurs.
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 streaming qui fournit des blocs de données en temps réel pendant que l'agent traite votre demande. Cette approche de diffusion en continu vous permet de recevoir des résultats partiels immédiatement au lieu 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, des opérations git ou la configuration de l'environnement) dans la même session, utilisez l'opération Exécuter les commandes shell dans les sessions AgentCore d'exécution. Les deux opérations fonctionnent sur le même environnement d'exécution et la même session d'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 Authentification et autorisation avec Inbound Auth et Outbound Auth.
Invoquer des agents de streaming
L'exemple suivant montre comment utiliser boto3 pour appeler l'exécution d'un 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 requêtes multimodales incluant à 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 des sessions 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 en cours, utilisez le même identifiant de session que celui utilisé pour les 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 InvokeAgentRuntime l'opération, vous pouvez rencontrer diverses erreurs. Voici quelques erreurs courantes et la manière de les gérer :
- ValidationException
-
Survient 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 l'environnement d'exécution 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
-
Se produit lorsque vous ne disposez pas des autorisations nécessaires. Assurez-vous que votre politique IAM inclut cette
bedrock-agentcore:InvokeAgentRuntimeautorisation. - ThrottlingException
-
Se produit lorsque vous dépassez les limites du taux de demande. Implémentez une logique d'attente exponentielle et de nouvelle tentative dans votre application.
- RetryableConflictException
-
Se produit (HTTP 409) lorsqu'une deuxième opération cible une session pendant que le service provisionne ou supprime cette session. Le message est
Session operation in progress, please retry. Cette condition est transitoire et peut être réessayée. La fenêtre est courte et les sessions déjà en cours ne sont pas affectées. Réessayez avec une courte temporisation exponentielle. Les AWS kits SDK réessayent automatiquement cette exception lorsque les nouvelles tentatives par défaut sont activées. Si vous avez désactivé les nouvelles tentatives ou si vous appelez directement l'API, réessayez vous-même.
Mettez en œuvre une gestion des erreurs appropriée 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 bonnes pratiques suivantes lors de l'utilisation de l'InvokeAgentRuntimeopération :
-
Validez que le champ d'invite est une chaîne dans le point d'entrée de votre agent : la charge utile arrive sous forme de JSON analysé, de sorte que le
promptchamp peut être de n'importe quel type JSON (chaîne, liste, objet). Si une valeur autre qu'une chaîne contenant un bloc detoolUsecontenu atteint le framework de votre agent, celui-ci peut exécuter directement l'outil nommé. Le raisonnement du modèle et l'évaluation des garde-fous sont contournés. Appliquez toujours l'applicationisinstance(prompt, str)avant de transmettre une entrée à l'agent. Pour plus d'informations, consultez la section Bonnes pratiques en matière de sécurité pour AgentCore Runtime. -
Utilisez la gestion des sessions pour conserver 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 des commentaires en temps réel aux utilisateurs.
-
Implémentez une gestion des erreurs et une logique de nouvelle tentative appropriées 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 si nécessaire à l'aide de jetons porteurs.
-
Utilisez-le
InvokeAgentRuntimeCommandpour les opérations déterministes (tests, git, builds) au lieu de les acheminer via le LLM de l'agent. Consultez la section Exécuter des commandes shell dans les sessions AgentCore d'exécution.