MCP 를 통해 결정론적 라우팅과 풍부한 툴링으로 멀티 에이전트 네트워크 구축.
문서 · 블로그 · 커뮤니티
AgentKit 는 더 결정론적이고 유연한 라우팅을 제공하며, 여러 모델 제공자와 호환되며 MCP(풍부한 툴링을 위해), 그리고 성장하는 TypeScript AI 개발자 커뮤니티를 수용합니다. Inngest Dev Server 를 결합하여 로컬에서 시작하고 오케스트레이션 엔진을 통해 클라우드 배포 시 에이전트들을 장애에 강하게 만듭니다.
핵심 개념
에이전트 (Agents): 프롬프트, 툴, MCP 와 함께 결합할 수 있는 LLM 호출
네트워크 (Networks): 공유 State 를 포함하여 에이전트들이 협력하는 간단한 방법, including handoff
State: 라우팅에 사용되며 대화 기록과 완전히 타입화된 상태 머신을 결합함
라우터 (Routers): 자율성이 거주하는 곳, 코드 기반부터 LLM 기반 (예: ReAct) 오케스트레이션까지
트래싱 (Tracing): 내장 트래싱을 통해 로컬 및 클라우드에서 워크플로우를 디버깅하고 최적화
이제 바로 시작하기 위해 예제를 클론하거나 문서를 탐색하세요.
npm i @inngest/agent-kit inngest
참고: AgentKit v0.9.0 부터는 inngest 를 별도의 의존성으로 설치해야 하며, @inngest/agent-kit 와 함께 설치합니다. 이는 올바른 런타임 호환성을 보장하고 Inngest 의 다른 버전이 의존하는 여러 패키지와 충돌을 방지합니다.
Smithery 에서 선호하는 MCP 서버를 선택하거나 (또는 자체 호스팅) MCP 를 툴로 사용하여 AgentKit 에이전트를 구축하세요. 다음은 Neon 데이터베이스 MCP 서버를 사용하는 예시입니다:
import {
anthropic,
createAgent,
...
이 예제를 로컬에서 시작하세요: https://github.com/inngest/agent-kit/tree/main/examples/mcp-neon-agent#readme
다른 예시는 아래 섹션에서 찾을 수 있습니다.
AgentKit 는 State-based routing 을 통해 결정론적 라우팅에 고유한 접근 방식을 제공하며, 이는 코드 기반부터 완전히 자율적인 라우팅 구현을 가능하게 하고 전체 과정에서 제어권을 유지합니다.
State 는 동일한 네트워크의 모든 에이전트 간에 저장되고 공유되는 키 값입니다.
이 상태는 라우터, 에이전트 라이프사이클 콜백, 에이전트 프롬프트 및 에이전트 툴에서 접근 가능합니다:
flowchart LR
subgraph Network
state["State"]
...
쌍방향 화살표는 R/W 쓰기 접근을, 일방향 화살표는 R/O 접근을 나타냅니다.
이 공유 State 와 네트워크의 메시지 기록은 AgentKit 의 결정론적 상태 기반 라우팅의 구성 요소입니다.
코드 기반 라우팅으로 시작하는 것을 권장하며, 이는 네트워크 실행 흐름에 대한 완전한 제어를 제공합니다.
이 라우팅 패턴은 가장 결정론적입니다. Routing function 을 제공하여 State 와 History 에 접근하게 하면 에이전트 툴이 수행한 상태 업데이트에 반응하는 에이전트 기반 라우팅을 구현할 수 있습니다.
codeAssistantAgent 가 생성한 계획에 따라 네트워크의 에이전트를 오케스트레이션하는 코드 기반 라우터가 있는 코딩 에이전트의 예시입니다:
import { z } from "zod";
import {
anthropic,
...
소스 코드는 여기에 있습니다: https://github.com/inngest/agent-kit/blob/main/examples/code-assistant-agentic/src/index.ts
에이전트 기반 라우팅은 라우팅 함수를 에이전트로 대체합니다. 이는 에이전트 네트워크가 자율적으로 실행할 에이전트를 선택하고 작업을 완료할 때를 결정할 수 있게 합니다.
라우팅 에이전트는 onRoute 라이프사이클 콜백을 포함하며, 이는 코드 기반 라우팅 접근 방식을 되돌립니다. 이 라이프사이클 콜백은 에이전트 라우팅 결정의 제어권을 유지하는 게이트웨이입니다.
아래 예시는 "Supervisor" 로 라우팅 에이전트를 사용하는 Support 에이전트를 보여줍니다:
import {
anthropic,
createAgent,
...
이 에이전트 네트워크를 로컬에서 시도하세요: https://github.com/inngest/agent-kit/tree/main/examples/support-agent-human-in-the-loop#readme
두 접근 방식 모두 maxIter 파라미터와 호환되며, 이는 최대 네트워크 반복 수를 설정할 수 있게 합니다. 에이전트 기반 라우팅을 사용할 때 항상 master 값을 설정하는 것을 권장합니다.
AgentKit SWE-bench 예제는 에이전트 네트워크를 구축하는 방법을 보여줍니다.