Overview
La ejecución con intervención humana (HITL, por sus siglas en inglés) permite que un agente se detenga a mitad de la ejecución y espere a que un humano revise su trabajo antes de continuar. Cuando un agente llama a una herramienta de revisión humana definida en su código, suspende la ejecución, muestra el contexto al revisor y solo se reanuda después de que este emita su decisión.
En el motor de agentes de MongoDB Atlas, HITL está integrado en la canalización de ejecución. El ciclo de vida de la canalización de ejecución (suspender, revisar y reanudar) se aplica tanto si se invoca el agente desde la API del motor de agentes de Atlas, la CLI agentengine o la interfaz de usuario del motor de agentes de Atlas. Esta guía explica las etapas del ciclo de vida de HITL y cómo enviar decisiones sobre la ejecución suspendida.
Ciclo de vida de suspensión, revisión y reanudación
Un agente entra en revisión humana cuando llama a una herramienta de revisión humana durante su ejecución. Para habilitar la revisión humana, agregue esta herramienta al código del agente mediante la función interrupt() del adaptador LangGraph.
Tip
Para obtener más información sobre la función interrupt(), consulte la documentación de LangGraph.
A continuación, el motor de agentes de Atlas hace que la ejecución pase por el siguiente ciclo de vida:
Suspender: El agente llama a una herramienta de revisión humana, que pausa la ejecución. El entorno aislado del agente guarda un punto de control del estado del agente e informa del estado
suspendedal Motor de Orquestación (OE).Notificar: La interfaz de usuario muestra la ejecución pausada y notifica a un revisor humano. La ejecución suspendida conserva el contexto que el agente proporcionó en el punto de interrupción.
Revisión: Un revisor examina el contexto expuesto y emite una decisión, como una aprobación o un rechazo. La decisión se transmite a través de la puerta de enlace API al OE.
Resumen: El OE devuelve la ejecución al entorno aislado del agente con la decisión del revisor. El resultado de la decisión depende del código del agente. En cualquier caso, el entorno aislado del agente restaura el agente desde su punto de control y vuelve a ejecutar el gráfico.
Completado: Una vez que el agente finaliza cualquier trabajo restante, el OE marca la ejecución como
completed. Una ejecución puede suspenderse y reanudarse varias veces antes de alcanzar un estado terminal.
Ciclo de vida del estado de ejecución
El motor del agente Atlas informa el estado actual en el campo status de cada respuesta de la API de ejecución. Una ejecución que no requiere revisión humana pasa por los siguientes estados:
pendingrunningcompletedorerror
Cuando una ejecución se suspende para revisión humana, pasa por los siguientes estados:
pendingrunningsuspendedresumingcompletedorerror
Garantía de repetición
Cuando el OE reanuda la ejecución, devuelve los resultados almacenados en caché de cada paso que se completó antes de la suspensión. El agente vuelve a ejecutar la misma ruta de código, pero el OE sirve los resultados almacenados en lugar de volver a ejecutar los pasos anteriores. Solo los pasos posteriores al punto de revisión se ejecutan por primera vez.
Esta garantía de repetición evita acciones duplicadas. Por ejemplo, si un agente envía un correo electrónico antes de suspenderse para su revisión, la ejecución reanudada no envía ese correo electrónico por segunda vez.
Revisar el contexto de suspensión
Cuando un agente se suspende, proporciona un objeto suspend_context que describe qué revisar. El agente define los campos de este objeto en el momento de la interrupción, por lo que el contenido exacto varía según el agente. Por ejemplo, un agente de aprobación de reembolsos podría mostrar un ID de reclamación y una descripción de la acción solicitada.
El objeto suspend_context también puede incluir una lista allowed_decisions que restringe las decisiones que un revisor puede enviar. Si esta lista está presente y no está vacía, el OE rechaza cualquier decisión que no se encuentre en ella.
Decisiones de los revisores
Una vez que el agente suspende la ejecución, un revisor envía una decisión al respecto. Para enviar esta decisión, proporcione la siguiente información:
Entrada | Requerido | Descripción |
|---|---|---|
Decisión | Sí | Decisión del revisor para la ejecución suspendida, como |
Notas del revisor | No | Contexto de formato libre que acompaña a la decisión. |
La siguiente sección describe las diferentes maneras en que puede proporcionar estos datos.
Reanudar una ejecución suspendida
Puede reanudar una ejecución suspendida desde la API de Atlas Agent Engine, la CLI agentengine o la interfaz de usuario de Atlas Agent Engine.
Importante
Para reanudar una ejecución suspendida, debe tener el rol PROJECT_OWNER.
Usar la API
Para reanudar una ejecución suspendida mediante la API, envíe una solicitud POST al punto final /api/v1/projects/{project_id}/executions/{execution_id}/resume?workspace_id={workspace_id} de la API. El cuerpo de la solicitud incluye la decisión del revisor, como se muestra en el cuerpo de la solicitud de reanudación. Los puntos finales de ejecución están limitados a un proyecto. Reemplace los marcadores de posición del ID del proyecto, el ID de ejecución y el ID del espacio de trabajo con sus propios valores.
Nota
El motor del agente Atlas no conserva los encabezados personalizados durante una ejecución suspendida. Reenvíe los encabezados X-Mdb-Agent-Engine-Custom- en la solicitud de reanudación; de lo contrario, el agente no los recibirá. Para obtener más información, consulte Reenvío de encabezados personalizados.
Seleccione la pestaña de su herramienta preferida para ver un ejemplo de solicitud POST que reanuda una ejecución suspendida. El encabezado X-Mdb-Agent-Engine-Custom-Authorization en cada ejemplo muestra cómo reenviar un encabezado personalizado:
curl -X POST "https://agentengine.mongodb.com/api/v1/projects/$PROJECT_ID/executions/$EXECUTION_ID/resume?workspace_id=$WORKSPACE_ID" \ -H "Authorization: Bearer $API_KEY" \ -H "X-Mdb-Agent-Engine-Custom-Authorization: my-user-id" \ -H "Content-Type: application/json" \ -d '{"decision": "approve", "reviewer_notes": "optional context"}'
import httpx response = httpx.post( f"https://agentengine.mongodb.com/api/v1/projects/{project_id}/executions/{execution_id}/resume", params={"workspace_id": workspace_id}, headers={ "Authorization": f"Bearer {api_key}", "X-Mdb-Agent-Engine-Custom-Authorization": "my-user-id", "Content-Type": "application/json", }, json={"decision": "approve", "reviewer_notes": "optional context"}, )
Cuerpo de la solicitud de currículum
El cuerpo de la solicitud de currículum es un objeto JSON que incluye el campo decision y un campo opcional reviewer_notes. El cuerpo de la solicitud se asemeja al siguiente ejemplo:
{"decision": "approve", "reviewer_notes": "approved after verifying customer identity"}
Los valores válidos de decision provienen de la lista allowed_decisions que el agente declara al suspenderse, no de un conjunto fijo. Si la decisión que envía no está en esa lista, el OE devuelve un mensaje de error 400 que incluye los valores permitidos.
Importante
La puerta de enlace API solo acepta el cuerpo de solicitud plano que se muestra en el ejemplo anterior. Si se incluye la decisión dentro de un objeto human_review, la puerta de enlace API rechaza la solicitud devolviendo un mensaje de error 400.
Utilice la interfaz de línea de comandos (CLI).
Al ejecutar el comando agentengine invoke sin mensaje en una terminal interactiva, la interfaz de línea de comandos (CLI) inicia una sesión de chat en tiempo real. En este modo interactivo, la CLI muestra automáticamente una solicitud de revisión en línea cuando el agente suspende una invocación para revisión humana.
La interfaz de línea de comandos (CLI) imprime el contexto de suspensión que proporcionó el agente y una lista numerada de decisiones permitidas. La salida de la CLI se asemeja al siguiente ejemplo:
--- Execution suspended for human review --- claim_id: CLM-4821 task_description: Approve refund of $240 for order #98765 Select a decision: 1) approve 2) reject Select [1-2]:
Después de seleccionar una decisión, la interfaz de línea de comandos (CLI) solicita notas opcionales del revisor, como se muestra en el siguiente ejemplo:
Reviewer notes (optional): [default: ]
Luego, la CLI reanuda la ejecución e imprime Execution resumed.. La sesión permanece abierta y puede enviar un mensaje de seguimiento para recuperar la salida del agente posterior a la reanudación.
Nota
La revisión interactiva HITL solo está disponible en modo interactivo. No funciona si se utiliza el indicador --json, el operador stdin con tubería o el indicador --file.
Para obtener más información sobre el comando agentengine invoke, consulte Invocar un agente desde la CLI.
Utiliza la interfaz de usuario
La interfaz de usuario de Atlas Agent Engine muestra las ejecuciones suspendidas en la página Pending Reviews, donde puede inspeccionar una ejecución pausada y enviar una decisión. Para reanudar una ejecución suspendida desde la interfaz de usuario, siga los siguientes pasos:
Obtén más información
Para obtener más información sobre cómo reanudar una ejecución, consulte la documentación de la API.
Para obtener más información sobre cómo invocar agentes, consulte la guía "Invocar un agente".