Toolnexus: LLM을 위한 공급업체 중립적인 도구 호출 계층, 5개 언어에서 바이트 단위로 동일하게 구현
요약
Toolnexus는 모든 LLM에게 공급업체 중립적인 도구 호출 기능을 제공하는 라이브러리입니다. JavaScript, Python, Go, Java, C# 등 5개 언어에서 바이트 단위로 동일하게 구현되어 에이전트 개발의 일관성을 높였습니다. 이 라이브러리는 복잡한 도구 호출 루프와 인간 개입(human-in-the-loop) 기능을 핵심 원시 요소로 통합하여 강력하고 신뢰성 높은 에이전트 구축을 가능하게 합니다.
핵심 포인트
- 5개 언어에서 바이트 단위의 동일 구현으로 개발 일관성을 확보했습니다.
- OpenAI/Anthropic/Gemini 등 주요 형식에 맞춰 스키마를 방출합니다.
- 인간 개입(human-in-the-loop)을 핵심 기능으로 통합하여 안정적인 에이전트 흐름을 제공합니다.
- MCP 서버 및 A2A 에이전트로의 재사용성을 갖추어 확장성이 뛰어납니다.
Toolnexus는 모든 LLM에게 에이전트 프레임워크가 가진 동적 도구 호출 기능을 제공하는 작고, 공급업체 중립적인 라이브러리입니다. 이 기능은 JavaScript, Python, Go, Java, C#의 다섯 가지 언어에 걸쳐 바이트 단위로 동일하게 포팅되었습니다. 아이디어는 다음과 같습니다: MCP 서버, 에이전트 스킬, 사용자의 자체 함수, HTTP 엔드포인트, 내장 셸/파일 도구, 그리고 원격 A2A(Agent-to-Agent) 에이전트는 모델에게 모두 같은 것입니다—즉, 이름이 지정되고, 설명되며, 스키마가 정의된 호출 가능한 요소입니다. toolnexus는 이 모든 것을 하나의 Tool 인터페이스 뒤로 통합하고, OpenAI / Anthropic / Gemini 형식으로 스키마를 방출하며, 도구 호출 루프(병렬 + 체인 호출, 스트리밍, 훅, 재시도, 대화 메모리, 메트릭)가 내장된 클라이언트를 제공합니다. 작동하는 에이전트를 만들기까지 세 줄의 코드만 필요합니다: const tk = await createToolkit({ mcpConfig: "./mcp.json", skillsDir: "./skills" "}) const client = createClient({ baseUrl, style: "openai", model "}) await client.run("do the thing", { toolkit: tk "}) 제가 가장 만족하는 부분은 인간 개입(human-in-the-loop)을 일급 원시 요소로 다룬 것입니다. 도구가 사람의 도움이 필요할 때—승인, OAuth 로그인, "이것을 결정하세요"와 같은 경우—루프가 실패하지 않고 중단되며, 유형화된 요청을 표시하고, 사용자가 답변하면 (동기적으로, 또는 채팅에서 몇 시간 후에 영구적으로) 정확히 멈췄던 지점부터 재개됩니다. 또한 MCP의 도출(elicitation)을 동일한 메커니즘으로 연결합니다. 이는 인바운드 엔드포인트 역할도 수행할 수 있습니다: 구성된 툴킷은 MCP 서버 또는 A2A 에이전트로 다시 서비스될 수 있어, 다른 에이전트가 사용자의 도구를 호출할 수 있게 합니다. 다섯 가지 포트를 구현한 전체 목적은 동등성(parity)입니다—같은 예제/픽스처는 어디서든 동일한 동작을 생성하며, 이는 CI에서 강제됩니다. 문서 (짧은 시연 설명 포함): https://muthuishere.github.io/toolnexus/ · 레포지토리: https://github.com/muthuishere/toolnexus /u/muthuishere2101이 r/LocalLLaMA에 제출함 [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/OpenAI Codex (search)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기