langgraph의 공식문서를 번역해 놓은 자료입니다. 문제가 되면 삭제하겠습니다.
https://langchain-ai.github.io/langgraph/concepts/high_level/
LLM(대규모 언어 모델)은 매우 강력하며, 특히 검색기(retriever)나 API와 같은 다른 시스템에 연결될 때 더욱 그 힘을 발휘한다. 이 때문에 많은 LLM 애플리케이션은 LLM 호출 전후에 단계적인 제어 흐름을 사용한다. 예를 들어, RAG
는 질문에 대한 관련 문서를 검색하고 이러한 문서를 LLM에 전달하여 응답을 구체화한다. 종종 LLM이 호출되기 전후의 단계적인 제어 흐름은 "체인(chain)"이라고 불린다. 체인은 LLM을 프로그래밍하는 데 있어 인기 있는 패러다임으로, 높은 신뢰성을 제공한다. 동일한 단계가 각 체인 호출에서 실행된다.
그러나 우리는 종종 제어 흐름을 스스로 결정할 수 있는 LLM 시스템이 필요할 때가 있다. 이것이 바로 에이전트(agent
)의 정의이다. 에이전트는 LLM을 사용하여 애플리케이션의 제어 흐름을 결정하는 시스템이다. 체인과 달리, 에이전트는 LLM에게 애플리케이션의 단계 순서에 대해 일정 수준의 제어 권한을 부여한다. LLM을 사용하여 애플리케이션의 제어를 결정하는 몇 가지 예는 다음과 같다.
- 두 개의 잠재적 경로 간에 라우팅(routing)하는 데 LLM 사용
- 여러 도구 중에서 호출할 도구(tool)를 결정하는 데 LLM 사용
- 생성된 답변이 충분한지 아니면 추가 작업이 필요한지 결정하는 데 LLM 사용
LLM에게 다양한 수준의 제어를 부여하는 여러 가지 유형의 에이전트 아키텍처
를 고려할 수 있다. 한쪽에서는 라우터가 LLM이 지정된 옵션 집합에서 단일 단계를 선택할 수 있게 하고, 다른 쪽에서는 완전히 자율적인 장기 실행 에이전트가 주어진 문제에 대해 원하는 모든 단계 순서를 선택할 수 있는 완전한 자유를 가질 수 있다.
많은 에이전트 아키텍처에서 다양한 개념이 활용된다.
- 도구 호출(tool calling): 이것은 LLM이 결정을 내리는 방식이다.
- 행동 실행(action taking): LLM의 출력은 종종 행동의 입력으로 사용된다.
- 기억(memory): 신뢰할 수 있는 시스템은 발생한 일에 대한 지식이 필요하다.
- 계획(planning): 계획 단계(명시적이든 암시적이든)는 LLM이 결정을 내릴 때 가장 높은 충실도로 결정을 내리도록 보장하는 데 유용하다.
Challenge
실제로는, 제어(control)와 신뢰성(reliability) 사이에는 트레이드오프(trace-off)가 있다. LLM에 더 많은 제어를 부여할수록 애플리케이션은 덜 신뢰하게 된다. 이는 LLM의 비결정성(non-determinism)이나 에이전트가 사용하는 도구(또는 단계)를 선택하는 과정에서의 오류와 같은 요인들 때문일 수 있다.
핵심 원칙
LangGraph의 동기는 에이전트에게 애플리케이션에 대한 더 많은 제어를 부여하면서도 더 높은 신뢰성을 유지하는 것이다. 신뢰할 수 있는 에이전트를 구축하는 데 적합하도록 LangGraph의 몇 가지 구체적인 원칙을 설명한다.
제어 가능성 (Controllability)
LangGraph는 애플리케이션의 흐름을 노드와 엣지의 집합으로 표현하여 개발자에게 높은 수준의 제어를 제공한다. 모든 노드는 공통 상태(메모리)에 접근하고 수정할 수 있다. 애플리케이션의 제어 흐름은 노드를 연결하는 엣지를 사용하여 결정론적으로 또는 조건부 논리를 통해 설정할 수 있다.
영속성 (Persistence)
LangGraph는 개발자가 단기 또는 장기(예: 데이터베이스를 통해) 메모리를 사용하여 그래프 상태를 지속화할 수 있는 많은 옵션을 제공한다.
사람이 개입하는 방식 (Human-in-the-Loop)
영속성 레이어는 에이전트와의 다양한 사람이 개입하는 방식의 상호작용 패턴을 가능하게 한다. 예를 들어, 에이전트를 일시 중지하고, 그 상태를 검토하고, 상태를 수정하고, 후속 단계를 승인하는 것이 가능하다.
스트리밍 (Streaming)
LangGraph는 스트리밍에 대한 일급 지원을 제공하며, 이는 에이전트 실행 과정에서 상태를 사용자(또는 개발자)에게 노출할 수 있다. LangGraph는 도구 호출과 같은 이벤트뿐만 아니라 LLM이 생성할 수 있는 토큰의 스트리밍도 지원한다.
디버깅
그래프를 구축한 후에는 종종 테스트하고 디버깅을 하고 싶어진다. LangGraph Studio는 LangGraph 애플리케이션의 시각화 및 디버깅을 위한 전문 IDE이다.
배포 (Deployment)
LangGraph 애플리케이션에 대한 확신이 생기면 많은 개발자들이 손쉬운 배포 방법을 원한다. LangGraph Cloud는 LangChain 팀에서 제공하는 LangGraph 객체를 배포하기 위한 간단하고 명확한 방법이다. 물론 FastAPI와 같은 서비스를 사용하여 필요에 따라 FastAPI 서버 내에서 그래프를 호출할 수도 있다.