런타임, 프레임워크, 하네스
런타임, 프레임워크, 하네스 (Runtimes, frameworks, and harnesses)
LangChain, LangGraph, Deep Agents의 차이와 각각 언제 사용해야 하는지 이해하기
LangChain은 에이전트를 구축하는 데 도움이 되는 여러 오픈소스 패키지를 유지 관리하고 있어요. 각각은 에이전트 개발 스택에서 서로 다른 목적을 제공합니다. 에이전트 프레임워크, 에이전트 런타임, 에이전트 하네스 사이의 차이를 이해하면 필요에 맞는 올바른 도구를 선택하는 데 도움이 됩니다.
출처: 문서
본문
| Runtime | Framework | Harness | |
|---|---|---|---|
| 가치(Value add) |
|
|
|
| 사용 시점 |
|
|
|
| 옵션 |
|
|
|
에이전트 프레임워크 (LangChain 등)
에이전트 프레임워크는 LLM으로 구축할 때 시작하기 쉽게 해주는 추상화를 제공합니다.
LangChain은 구조화된 콘텐츠 블록, 에이전트 루프, 미들웨어 같은 추상화를 제공하는 에이전트 프레임워크입니다.
LangChain의 추상화는 쉽게 시작할 수 있도록 설계되었으면서도 고급 사용 사례에 필요한 유연성도 제공합니다.
LangChain은 LangGraph 위에 구축되어 있지만, LangChain을 사용하기 위해 LangGraph를 알 필요는 없습니다.
다른 에이전트 프레임워크의 예로는 Vercel의 AI SDK, CrewAI, OpenAI Agents SDK, Google ADK, LlamaIndex 등이 있습니다.
LangChain을 사용해야 할 때
다음과 같은 경우 LangChain을 사용하세요:
- 에이전트와 자율 애플리케이션을 빠르게 구축하고 싶을 때.
- 모델, 도구, 에이전트 루프에 대한 표준 추상화가 필요할 때.
- 사용하기 쉽지만 여전히 유연성을 제공하는 프레임워크를 원할 때.
- 복잡한 오케스트레이션 필요 없이 단순한 에이전트 애플리케이션을 구축할 때.
에이전트 런타임 (LangGraph 등)
에이전트 런타임은 프로덕션에서 에이전트를 실행하기 위한 도구를 제공합니다. 지원되는 도구는 다음과 같을 수 있습니다:
- 내구성 있는 실행(Durable execution): 에이전트가 실패에도 지속되고 오랜 기간 실행되며, 중단된 지점부터 재개합니다.
- 스트리밍: 워크플로와 응답 스트리밍 지원.
- 휴먼 인 더 루프(Human-in-the-loop): 에이전트 상태를 검사하고 수정하여 인간의 감독을 통합.
- 영속성: 상태 관리를 위한 스레드 수준 및 스레드 간 영속성.
- 저수준 제어: 고수준 추상화 없이 에이전트 오케스트레이션을 직접 제어.
LangGraph는 오래 실행되는 상태 유지 에이전트를 구축, 관리, 배포하기 위한 저수준 오케스트레이션 프레임워크이자 런타임입니다.
에이전트 프레임워크는 일반적으로 더 높은 수준이며 에이전트 런타임 위에서 실행됩니다. 예를 들어 LangChain 1.0은 LangGraph 위에 구축되어 있습니다.
다른 에이전트 런타임의 예로는 Temporal, Inngest, 그리고 다른 내구성 있는 실행 엔진들이 있습니다.
LangGraph를 사용해야 할 때
다음과 같은 경우 LangGraph를 사용하세요:
- 에이전트 오케스트레이션에 대한 세밀하고 저수준의 제어가 필요할 때.
- 오래 실행되는 상태 유지 에이전트를 위한 내구성 있는 실행이 필요할 때.
- 결정적 단계와 에이전트 단계를 결합한 복잡한 워크플로를 구축할 때.
- 에이전트 배포를 위한 프로덕션 준비 인프라가 필요할 때.
에이전트 하네스 (Deep Agents SDK 등)
에이전트 하네스는 정교하고 오래 실행되는 에이전트를 구축하기 위한 내장 도구와 기능을 갖춘, 의견이 반영되고 모든 것이 포함된(batteries-included) 프레임워크입니다. 지원되는 도구는 다음과 같을 수 있습니다:
- 계획 기능: 할 일 목록으로 여러 작업을 추적.
- 작업 위임: 서브에이전트로 작업을 위임하고 컨텍스트를 깔끔하게 유지.
- 파일 시스템: 다양한 플러그 가능한 스토리지 백엔드의 파일에 대한 읽기/쓰기 접근.
- 토큰 관리: 대화 기록 요약과 대용량 도구 결과 퇴거(eviction).
Deep Agents SDK는 LangGraph 위에 구축되며 계획 기능, 컨텍스트 관리를 위한 파일 시스템, 서브에이전트 생성 등을 추가합니다. Deep Agents는 계획과 분해가 필요한 복잡한 다단계 작업을 위해 설계되었습니다.
예시 작업으로는 state에서 검색 결과, 스크립트, 기타 산출물을 다루는 것이 있습니다.
다른 에이전트 하네스의 예로는 Claude Agent SDK, Manus, 그리고 기타 코딩 CLI들이 있습니다.
Deep Agents SDK를 사용해야 할 때
다음과 같은 경우 Deep Agents SDK를 사용하세요:
- 오랜 시간 동안 실행되는 에이전트를 구축할 때.
- 복잡하고 다단계 작업을 처리해야 하는 에이전트를 구축할 때.
- 파일 시스템 작업, bash 실행, 자동 컨텍스트 엔지니어링 같은 사전 정의된 도구를 사용하고 싶을 때.
- 사전 정의된 프롬프트와 서브에이전트를 사용하고 싶을 때.
기능 비교
LangChain, LangGraph, Deep Agents로 비슷한 작업을 수행할 수 있지만, 통합하는 수준은 다릅니다:
| 기능 | LangGraph | LangChain | Deep Agents |
|---|---|---|---|
| 단기 메모리 | 단기 메모리 | 단기 메모리 | StateBackend |
| 장기 메모리 | 장기 메모리 | 장기 메모리 | 장기 메모리 |
| 스킬(Skills) | - | 멀티에이전트 스킬 | 스킬 |
| 서브에이전트 | 서브그래프 | 멀티에이전트 서브에이전트 | 서브에이전트 |
| 휴먼 인 더 루프 | 인터럽트 | 휴먼 인 더 루프 미들웨어 | interrupt_on 파라미터 |
| 스트리밍 | 스트리밍 | 에이전트 스트리밍 | 스트리밍 |
더 알아보기
- 이 문서를 MCP로 연결하면 Claude, VSCode 등에서 실시간 답변을 받을 수 있어요.
- GitHub에서 이 페이지 편집하기 또는 이슈 제출하기.