JamJet

Agente como Herramienta

Envuelve cualquier agente como una herramienta invocable — sincrónica, en streaming o conversacional.

Agent-as-Tool

JamJet te permite envolver cualquier agente como una herramienta invocable dentro de un flujo de trabajo. Tres modos de invocación cubren diferentes casos de uso: desde consultas rápidas hasta análisis de larga duración y conversaciones de múltiples turnos.

Tres Modos

Sync

Una solicitud, una respuesta. Ideal para operaciones rápidas y sin estado.

graph.add_agent_tool("classifier",
    agent="https://classifier-agent.example.com",
    mode="sync",
    timeout_ms=5000,
)

Envía a /tasks/send y devuelve la respuesta completa como salida del nodo.

Streaming

Procesamiento incremental de NDJSON con emisión de eventos en tiempo real. Ideal para agentes de larga duración donde necesitas visibilidad del progreso, control de presupuesto y terminación anticipada.

graph.add_agent_tool("researcher",
    agent="https://research-agent.example.com",
    mode="streaming",
    budget={"max_cost_usd": 0.50},
    streaming={"idle_timeout_secs": 30},
)

Envía a /tasks/sendSubscribe y procesa el flujo NDJSON de forma incremental:

  • Eventos en tiempo real — cada fragmento se emite al backend de estado a medida que llega, no se agrupa al final
  • Tiempo de inactividad — si no llegan datos dentro de idle_timeout_secs (por defecto 30), el flujo se termina
  • Control de presupuesto — cuando el cost_usd acumulado de los fragmentos supera max_cost_usd, el flujo se detiene
  • Cancelación A2A — en caso de terminación anticipada (presupuesto o timeout), se envía un tasks/cancel al agente remoto con máximo esfuerzo
  • Resultados parciales preservados — los fragmentos ya emitidos nunca se pierden, incluso ante fallos

Conversational

Intercambio de múltiples turnos para refinamiento iterativo. El coordinador envía la entrada, lee la respuesta y la devuelve como entrada del siguiente turno.

graph.add_agent_tool("editor",
    agent="https://editor-agent.example.com",
    mode={"conversational": {"max_turns": 5}},
)

Envía a /tasks/send en un bucle. Se detiene cuando el agente responde con status: "completed" o se alcanza max_turns.

Configuración de Streaming

ParámetroPor defectoDescripción
streaming.idle_timeout_secs30Segundos de silencio antes de terminar
budget.max_cost_usdNoneCosto máximo acumulado antes de terminación
timeout_ms30000Tiempo de espera HTTP general (solo sync/conversational)

Para el modo streaming, el tiempo de inactividad por fragmento reemplaza el timeout HTTP general. El cliente se construye sin un timeout global para que los flujos de larga duración con datos activos no se interrumpan prematuramente.

Eventos

La herramienta de agente emite eventos estructurados al registro de eventos:

EventoCuándo
agent_tool_invokedSolicitud enviada al agente remoto
agent_tool_progressCada fragmento NDJSON recibido (solo en streaming)
agent_tool_completedFinalización exitosa con salida final
agent_tool_terminatedTerminación anticipada (presupuesto excedido o tiempo de espera inactivo)
agent_tool_errorError de red durante la transmisión

Cada evento incluye timestamp_ms para temporización precisa. Los eventos de progreso incluyen chunk_index y accumulated_cost_usd.

Manejo de Errores

FalloComportamiento
Error de red durante la transmisiónEl nodo falla con error, resultados parciales preservados
JSON malformado en NDJSONEnvuelto como {"raw": "..."}, la transmisión continúa
Datos no UTF-8Omitidos con advertencia, la transmisión continúa
Tiempo de espera inactivoEl nodo falla, cancelación A2A enviada
Presupuesto excedidoEl nodo falla, cancelación A2A enviada
El agente retorna error HTTPEl nodo falla inmediatamente

Los fallos críticos (tiempo de espera, error de red) causan que el nodo falle para que el flujo de trabajo pueda reintentar o manejar el error. El exceso de presupuesto también se trata como un fallo.

Resolución de Protocolo

El URI del agente determina el protocolo:

Prefijo de URIProtocolo
https://A2A (HTTP remoto)
jamjet://Local (en proceso)
OtroMCP

Ejemplo

Consulta el ejemplo de agent-as-tool para un flujo de trabajo completo que utiliza los tres modos.

On this page