ElGraph.Skills.SignalReAct (ElGraph v0.3.0)

Copy Markdown View Source

시그널 구동 ReAct Skill (SPEC §5, M4 — 도그푸딩 2표본에서 추출).

DocsAgent(Grounded Q&A)와 SummarizeAgent(Transform)의 공통 골격을 4개 파라미터로 추출한 것이다. 두 에이전트의 차이는 (라우트, 툴, 시스템 프롬프트, 입력 키)뿐이고 나머지(react 그래프, 비블로킹 실행, 직렬 큐, crash-only, 결과 리포팅)는 동일하다.

defmodule MyAgent do
  use ElGraph.Skills.SignalReAct,
    route: "question.*",          # 이 패턴의 시그널만 처리
    input_key: :question,         # signal.data에서 사용자 텍스트를 꺼낼 키
    tools: [MyApp.SearchAction],  # Action 모듈 목록 (런타임 :tools로 MCP 추가 가능)
    system: "너는 ...",
    reply_tag: :answer,           # reply_to에 {reply_tag, %{answer:, usage:}} 전송
    budget: [tokens: 100_000]
end

{:ok, _} = MyAgent.start_link(llm: {ElGraph.LLM.OpenAI, api_key: key}, id: "a1",
                              reply_to: self(), rate_limiter: MyLimiter)

:thread(:per_request | {:fixed, id})와 :checkpointerElGraph.Agent로 그대로 전달된다. 결과 reply가 usage를 포함하므로 비용 관측이 가능하다 (도그푸딩 마찰 3 해소).