JamJet

도구로서의 에이전트

모든 에이전트를 호출 가능한 도구로 래핑 — 동기, 스트리밍 또는 대화형.

Agent-as-Tool

JamJet을 사용하면 모든 에이전트를 워크플로우 내에서 호출 가능한 도구로 래핑할 수 있습니다. 세 가지 호출 모드는 빠른 조회부터 장시간 실행 분석, 다중 턴 대화까지 다양한 사용 사례를 지원합니다.

세 가지 모드

Sync

단일 요청, 단일 응답. 빠르고 상태 비저장 작업에 적합합니다.

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

/tasks/send로 요청을 전송하고 전체 응답을 노드 출력으로 반환합니다.

Streaming

실시간 이벤트 전송과 함께 증분 NDJSON 처리. 진행 상황 가시성, 예산 제어, 조기 종료가 필요한 장시간 실행 에이전트에 적합합니다.

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

/tasks/sendSubscribe로 요청을 전송하고 NDJSON 스트림을 증분 방식으로 처리합니다:

  • 실시간 이벤트 — 각 청크는 도착하는 즉시 상태 백엔드로 전송되며, 종료 시 일괄 처리되지 않습니다
  • 유휴 타임아웃idle_timeout_secs(기본값 30초) 내에 데이터가 도착하지 않으면 스트림이 종료됩니다
  • 예산 제한 — 청크에서 누적된 cost_usdmax_cost_usd를 초과하면 스트림이 중단됩니다
  • A2A 취소 — 조기 종료 시(예산 또는 타임아웃) 원격 에이전트로 베스트 에포트 방식의 tasks/cancel이 전송됩니다
  • 부분 결과 보존 — 이미 전송된 청크는 실패 시에도 절대 손실되지 않습니다

Conversational

반복적 개선을 위한 다중 턴 교환. 코디네이터가 입력을 전송하고, 응답을 읽은 후 다음 턴의 입력으로 피드백합니다.

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

루프 방식으로 /tasks/send에 요청을 전송합니다. 에이전트가 status: "completed"로 응답하거나 max_turns에 도달하면 중단됩니다.

스트리밍 설정

매개변수기본값설명
streaming.idle_timeout_secs30종료 전 무응답 시간(초)
budget.max_cost_usdNone종료 전 최대 누적 비용
timeout_ms30000전체 HTTP 타임아웃(sync/conversational 전용)

스트리밍 모드에서는 청크별 유휴 타임아웃이 전체 HTTP 타임아웃을 대체합니다. 클라이언트는 전역 타임아웃 없이 구축되므로 데이터가 활발히 전송되는 장시간 스트림이 조기 종료되지 않습니다.

이벤트

에이전트 도구는 이벤트 로그에 구조화된 이벤트를 발생시킵니다:

이벤트발생 시점
agent_tool_invoked원격 에이전트로 요청 전송 시
agent_tool_progress각 NDJSON 청크 수신 시 (스트리밍 전용)
agent_tool_completed최종 출력과 함께 성공적으로 완료 시
agent_tool_terminated조기 종료 시 (예산 초과 또는 유휴 타임아웃)
agent_tool_error스트림 중 네트워크 오류 발생 시

각 이벤트에는 정확한 타이밍을 위한 timestamp_ms가 포함됩니다. 진행 이벤트에는 chunk_indexaccumulated_cost_usd가 포함됩니다.

오류 처리

실패 유형동작
스트림 중 네트워크 오류노드가 오류와 함께 실패하며, 부분 결과는 보존됨
NDJSON 내 잘못된 JSON{"raw": "..."}로 래핑되며, 스트림은 계속됨
UTF-8이 아닌 데이터경고와 함께 건너뛰고, 스트림은 계속됨
유휴 타임아웃노드가 실패하고, A2A 취소가 전송됨
예산 초과노드가 실패하고, A2A 취소가 전송됨
에이전트가 HTTP 오류 반환노드가 즉시 실패

하드 실패(타임아웃, 네트워크 오류)는 워크플로가 재시도하거나 오류를 처리할 수 있도록 노드를 실패시킵니다. 예산 초과도 실패로 처리됩니다.

프로토콜 해석

에이전트 URI가 프로토콜을 결정합니다:

URI 접두사프로토콜
https://A2A (원격 HTTP)
jamjet://로컬 (인프로세스)
기타MCP

예제

세 가지 모드를 모두 사용하는 완전한 워크플로는 agent-as-tool 예제를 참조하세요.

On this page