Invoque un agente de tiempo de ejecución AgentCore
La InvokeAgentRuntimeoperación le permite enviar solicitudes a puntos de enlace específicos AgentCore de Runtime identificados por su nombre de recurso de Amazon (ARN) y recibir respuestas de streaming que contienen los resultados del agente. La API admite la administración de sesiones mediante identificadores de sesión, lo que le permite mantener el contexto de la conversación en múltiples interacciones. Puede dirigirse a puntos de enlace de agentes específicos mediante calificadores opcionales.
Para llamarInvokeAgentRuntime, necesita bedrock-agentcore:InvokeAgentRuntime permisos. En la llamada, también puede pasar un token portador que el agente puede usar para autenticar al usuario.
La InvokeAgentRuntime operación acepta la carga útil de la solicitud como datos binarios de un tamaño máximo de 100 MB y devuelve una respuesta de streaming que entrega fragmentos de datos en tiempo real a medida que el agente procesa la solicitud. Este enfoque de transmisión le permite recibir resultados parciales de forma inmediata en lugar de esperar a la respuesta completa, lo que lo hace ideal para aplicaciones interactivas.
Para ejecutar comandos de shell (como ejecutar pruebas, operaciones de git o configurar el entorno) en la misma sesión, usa la operación Ejecutar comandos de shell en sesiones AgentCore de tiempo de ejecución. Ambas operaciones funcionan en el mismo tiempo de ejecución y sesión del agente.
Si planeas integrar tu agente con OAuth, no puedes usar el AWS SDK para llamar. InvokeAgentRuntime En su lugar, haz una solicitud HTTPS a. InvokeAgentRuntime Para obtener más información, consulta Autenticar y autorizar con la autenticación entrante y la autenticación saliente.
Invoca agentes de streaming
El siguiente ejemplo muestra cómo usar boto3 para invocar el tiempo de ejecución de un agente:
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)
Invoca agentes multimodales
Puede utilizar la InvokeAgentRuntime operación para enviar solicitudes multimodales que incluyan texto e imágenes. El siguiente ejemplo muestra cómo invocar un agente 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 )
Administración de sesiones
La InvokeAgentRuntime operación admite la administración de sesiones a través del runtimeSessionId parámetro. Al proporcionar el mismo identificador de sesión en varias solicitudes, puede mantener el contexto de la conversación, lo que permite al agente hacer referencia a interacciones anteriores.
Para iniciar una nueva conversación, genere un identificador de sesión único. Para continuar una conversación existente, usa el mismo identificador de sesión de las solicitudes anteriores. Este enfoque le permite crear aplicaciones interactivas que mantienen el contexto a lo largo del tiempo.
sugerencia
Para obtener los mejores resultados, utilice un UUID u otro identificador único como identificador de sesión para evitar colisiones entre distintos usuarios o conversaciones.
Gestión de errores
Al utilizar la InvokeAgentRuntime operación, es posible que se produzcan varios errores. Estos son algunos de los errores más comunes y cómo solucionarlos:
- ValidationException
-
Se produce cuando los parámetros de la solicitud no son válidos. Compruebe que el ARN, el ID de sesión y la carga útil de su agente estén formateados correctamente.
- ResourceNotFoundException
-
Se produce cuando no se encuentra el tiempo de ejecución del agente especificado. Compruebe que el ARN del agente es correcto y que el agente existe en su AWS cuenta.
- AccessDeniedException
-
Se produce cuando no tiene los permisos necesarios. Asegúrese de que su política de IAM incluya el
bedrock-agentcore:InvokeAgentRuntimepermiso. - ThrottlingException
-
Se produce cuando se superan los límites de la tasa de solicitudes. Implemente una lógica de retroceso exponencial y reintento en su aplicación.
Implemente una gestión de errores adecuada en su aplicación para ofrecer una mejor experiencia de usuario y solucionar los problemas de forma eficaz.
Prácticas recomendadas
Siga estas prácticas recomendadas al utilizar la InvokeAgentRuntime operación:
-
Utilice la administración de sesiones para mantener el contexto de la conversación y ofrecer una mejor experiencia de usuario.
-
Procesa las respuestas de streaming de forma incremental para proporcionar comentarios en tiempo real a los usuarios.
-
Implemente una lógica adecuada de gestión de errores y reintentos para lograr una aplicación sólida.
-
Tenga en cuenta las limitaciones de tamaño de la carga útil (100 MB) al enviar solicitudes, especialmente en el caso de contenido multimodal.
-
Utilice los calificadores adecuados para dirigirse a versiones o puntos finales específicos de los agentes.
-
Implemente mecanismos de autenticación cuando sea necesario mediante tokens portadores.
-
Úselo
InvokeAgentRuntimeCommandpara operaciones deterministas (pruebas, git, compilaciones) en lugar de enrutarlas a través del LLM del agente. Consulte Ejecutar comandos de shell en sesiones de AgentCore tiempo de ejecución.