Agent Frameworks, Runtimes, and Harnesses- oh my!
TMThttps://blog.langchain.com/agent-frameworks-runtimes-and-harnesses-oh-my/
우리가 유지 보수하는 오픈 소스 패키지는 몇 가지가 있습니다: 가장 큰 것은 LangChain과 LangGraph이고, DeepAgents는 점점 더 인기를 얻고 있습니다. 저는 이들을 설명하기 위해 서로 다른 용어를 쓰기 시작했습니다: LangChain은 에이전트 프레임워크, LangGraph는 에이전트 런타임, DeepAgents는 에이전트 하니스입니다. 다른 분들도 이러한 용어를 사용하고 있지만, 프레임워크 vs 런타임 vs 하니스의 명확한 정의가 있다고는 생각하지 않습니다. 이것은 그것들을 정의하려는 저의 시도입니다. 여전히 모호함과 겹침이 있음을 기꺼이 인정하며, 피드백을 환영합니다!
에이전트 프레임워크 (LangChain)
LLM으로 빌드를 도와주는 대부분의 패키지는 에이전트 프레임워크로 분류할 수 있습니다. 그들이 제공하는 주요 가치 추가는 추상화입니다. 이러한 추상화는 세계에 대한 멘탈 모델을 나타냅니다. 이러한 추상화는 이상적으로 시작을 더 쉽게 만들어야 합니다. 또한 애플리케이션을 구축하는 표준 방법을 제공하여 개발자가 온보딩하고 프로젝트 간을 이동하기 쉽게 만듭니다. 추상화에 대한 불만은 잘못 설계되면 내부 동작을 모호하게 만들고 고급 사용 사례에 필요한 유연성을 제공하지 못할 수 있다는 점입니다.
우리는 LangChain을 에이전트 프레임워크로 생각합니다. 1.0의 일환으로 우리는 구조화된 콘텐츠 블록, 에이전트 루프, 미들웨어(표준 에이전트 루프에 유연성을 더한다고 생각합니다)를 위한 추상화에 대해 많은 시간을 들여 고민했습니다. 에이전트 프레임워크로 간주하는 다른 예로는 Vercel의 AI SDK, CrewAI, OpenAI Agents SDK, Google ADK, LlamaIndex 등이 많습니다.
에이전트 런타임 (LangGraph)
에이전트를 프로덕션에서 실행해야 할 때, 에이전트용 런타임이 필요합니다. 이 런타임은 더 인프라 수준의 고려 사항을 제공해야 합니다. 가장 먼저 떠오르는 것은 내구성 있는 실행(durable execution)이지만, 스트리밍 지원, 사람-개입(human-in-the-loop) 지원, 스레드 수준 영속성 및 스레드 간 영속성 같은 고려 사항도 여기에 포함합니다.
우리가 LangGraph를 구축할 때, 처음부터 프로덕션 준비가 된 에이전트 런타임을 구축하고자 했습니다. LangGraph를 구축한 배경 사고 과정에 대해 더 읽으려면 여기를 참고하세요. 우리가 가장 가깝다고 생각하는 다른 프로젝트로는 Temporal, Inngest, 그리고 다른 내구성 실행 엔진들이 있습니다.
에이전트 런타임은 일반적으로 에이전트 프레임워크보다 더 저수준이며, 에이전트 프레임워크를 구동할 수 있습니다. 예를 들어, LangChain 1.0은 LangGraph 위에 구축되어 그것이 제공하는 에이전트 런타임을 활용합니다.
에이전트 하니스 (DeepAgents)
DeepAgents는 우리가 작업 중인 최신 프로젝트입니다. 이는 에이전트 프레임워크보다 상위 수준이며 LangChain 위에 구축됩니다. 기본 프롬프트를 추가하고, 도구 호출에 대한 의견 있는(의견 주도형) 처리, 계획을 위한 도구, 파일 시스템 접근 등 더 많은 기능을 제공합니다. 프레임워크 그 이상—배터리 포함으로 제공됩니다.
DeepAgents를 설명하는 또 다른 방식은 “Claude Code의 범용 버전”이라는 것입니다. 공정하게 말하면, Claude Code도 에이전트 하니스가 되려 하고 있으며, 그 방향의 단계로 Claude Agent SDK 같은 것들을 출시했습니다. Claude Agent SDK를 제외하면, 오늘날 범용 에이전트 하니스는 많지 않다고 생각합니다. 다만, 모든 코딩 CLI가 어떤 의미에서는 에이전트 하니스이며, 범용일 수 있다고 주장할 수는 있습니다.
각 항목을 언제 사용할지
차이점을 요약하고 각각을 언제 사용할지 이야기해 봅시다:
이제, 경계가 흐릿하다는 것을 기꺼이 인정합니다. 예를 들어 LangGraph는 런타임이자 프레임워크로 설명하는 것이 가장 적절할 수 있습니다. “에이전트 하니스”라는 용어는 제가 더 많이 쓰이기 시작했다고 보는 용어입니다(제가 만든 것이 아닙니다). 아직 이들 중 어느 것에도 매우 명확한 정의가 있다고는 생각하지 않습니다.
초기 공간에서 개발하는 재미 중 일부는 사물을 이야기하는 방식에 대한 멘탈 모델을 만들어가는 것입니다. 우리는 LangChain이 LangGraph와 다르고, DeepAgents는 둘 모두와 다르다는 것을 알고 있습니다. 각각을 프레임워크, 런타임, 하니스로 설명하는 것이 유용한 구분이라 생각합니다—하지만 언제나 그렇듯, 여러분의 피드백을 환영합니다!