View a markdown version of this page

Gestione agentes asincrónicos y de larga ejecución con Amazon Bedrock Runtime AgentCore - Base amazónica AgentCore

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Gestione agentes asincrónicos y de larga ejecución con Amazon Bedrock Runtime AgentCore

Amazon Bedrock AgentCore Runtime puede gestionar el procesamiento asincrónico y los agentes de larga duración. Las tareas asincrónicas permiten al agente continuar con el procesamiento después de responder al cliente y gestionar las operaciones de larga duración sin bloquear las respuestas. Con el procesamiento asincrónico, su agente puede:

  • Iniciar una tarea que puede tardar minutos u horas

  • Responda inmediatamente al usuario diciéndole: «He empezado a trabajar en esto»

  • Continúe procesando en segundo plano

  • Permita que el usuario vuelva a consultar los resultados más tarde

Conceptos clave

Modelo de procesamiento asincrónico

El AgentCore SDK de Amazon Bedrock admite el procesamiento sincrónico y asincrónico a través de una API unificada. Esto crea un patrón de implementación flexible tanto para los clientes como para los desarrolladores de agentes. Los clientes de los agentes pueden trabajar con la misma API sin diferenciar entre sincrónica y asincrónica en el lado del cliente. Al poder invocar la misma sesión en todas las invocaciones, los desarrolladores de agentes pueden reutilizar el contexto y aprovechar este contexto de forma gradual sin implementar una lógica compleja de administración de tareas.

Administración del ciclo de vida de las sesiones en

El código del agente comunica su estado de procesamiento mediante el estado de estado del terminal «/ping». El /ping punto final debe devolver una respuesta HTTP 200 con la siguiente carga útil JSON:

{"status": "HealthyBusy"}

La respuesta contiene un campo obligatorio y un campo opcional:

  • status(obligatorio): ya sea "Healthy" (inactivo, esperando solicitudes) o "HealthyBusy" (procesando tareas en segundo plano). La plataforma usa este campo para determinar si la sesión sigue activa.

  • time_of_last_update(opcional): marca de tiempo de Unix en segundos la fecha de la status última modificación. Configúrala solo en un cambio de estado real, no en cada ping.

Una sesión en estado inactivo ("Healthy") durante 15 minutos finaliza automáticamente. Una sesión que vuelve "HealthyBusy" permanece activa más allá del tiempo de espera de inactividad.

aviso

Si lo incluyestime_of_last_update, no lo pongas a la hora actual en cada ping. Una marca de tiempo que avanza en cada ping indica un cambio de estado continuo, lo que evita que se active el tiempo de espera de la sesión inactiva. De este modo, las sesiones persisten hasta MaxLifetime agotar la cuota de sesión. Omite el campo (la plataforma registra los cambios de estado por sí sola) o actualízalo solo cuando el estado cambie realmente. Si utilizas el AgentCore SDK de Bedrock, esto se hace por ti.

Implementación de tareas asincrónicas

Para empezar, instala el paquete: bedrock-agentcore

pip install bedrock-agentcore

AgentCore El SDK ofrece las siguientes opciones para el procesamiento asincrónico de la integración.

ejemplo
API based task management
  1. Para crear agentes interactivos que realicen tareas asincrónicas, es necesario llamar al iniciar una tarea y al add_async_task completarla. complete_async_task El SDK gestiona el seguimiento de las tareas y administra automáticamente el estado del ping.

    # Start tracking a task manually task_id = app.add_async_task("data_processing") # Do work... # Mark task as complete app.complete_async_task(task_id)
Custom ping handler
  1. Puede implementar su propio controlador de ping personalizado para administrar el estado de la sesión en tiempo de ejecución. El estado de su agente se informa a través del punto final /ping:

    @app.ping def custom_status(): if system_busy(): return PingStatus.HEALTHY_BUSY return PingStatus.HEALTHY

    Valores de estado:

    • «Saludable»: ¿Listo para un nuevo trabajo

    • "HealthyBusy«: Procesando una tarea en segundo plano

importante

Asegúrese de que el @app.entrypoint controlador no realice operaciones de bloqueo, ya que esto también podría bloquear el punto final del control de estado de /ping. Utilice subprocesos independientes o métodos asíncronos para bloquear las operaciones.

Ejemplo completo

En primer lugar, instale el paquete necesario:

pip install strands-agents

A continuación, cree un archivo de Python con el siguiente código:

import threading import time from strands import Agent, tool from bedrock_agentcore.runtime import BedrockAgentCoreApp # Initialize app with debug mode for task management app = BedrockAgentCoreApp() @tool def start_background_task(duration: int = 5) -> str: """Start a simple background task that runs for specified duration.""" # Start tracking the async task task_id = app.add_async_task("background_processing", {"duration": duration}) # Run task in background thread def background_work(): time.sleep(duration) # Simulate work app.complete_async_task(task_id) # Mark as complete threading.Thread(target=background_work, daemon=True).start() return f"Started background task (ID: {task_id}) for {duration} seconds. Agent status is now BUSY." # Create agent with the tool agent = Agent(tools=[start_background_task]) @app.entrypoint def main(payload): """Main entrypoint - handles user messages.""" user_message = str(payload.get("prompt", "Try: start_background_task(3)")) return {"message": agent(user_message).message} if __name__ == "__main__": print("🚀 Simple Async Strands Example") print("Test: curl -X POST http://localhost:8080/invocations -H 'Content-Type: application/json' -d '{\"prompt\": \"start a 3 second task\"}'") app.run()

Este ejemplo demuestra:

  • Crear una tarea en segundo plano que se ejecute de forma asincrónica

  • Realizar un seguimiento del estado de la tarea con y add_async_task complete_async_task

  • Responder inmediatamente al usuario mientras continúa el procesamiento

  • Administrar automáticamente el estado de salud del agente

Problemas y soluciones comunes de

Long-running el agente se cancela después de 15 minutos

Esto puede ocurrir cuando la aplicación es de un solo subproceso y el subproceso de ping está bloqueado.

  • Comprueba que las llamadas bloqueadoras en la ruta de invocación estén en un subproceso independiente o que sean asincrónicas y no bloqueen

  • Ejecute el servidor de agentes asíncrono localmente y simule escenarios mientras comprueba el estado del ping.