•
LLM을 사용하여 상태를 유지하고 여러 에이전트를 포함한 애플리케이션을 쉽게 만들 수 있도록 도와준다.
•
LangChain의 기능을 확장하여, 복잡한 에이전트 런타임 개발에 필수적인 순환 그래프를 만들고 관리할 수 있는 기능을 추가한다.
•
대규모 언어 모델 (LLM) 을 사용하여 많은 액터 (또는 에이전트) 가 있는 애플리케이션을 쉽게 구축할 수 있도록 설계되었다.
•
LangGraph는 이러한 에이전트가 사물을 기억하고 원활하게 협업할 수 있도록 도와준다.
•
LangGraph의 핵심 개념에는 그래프 구조, 상태 관리 및 조정이 포함된다.
LangGraph의 핵심 개념
그래프 구조
•
애플리케이션을 방향성 그래프로 상상해 보자.
•
이 그래프에서 각 지점(노드라고 함)은 LLM 에이전트를 나타낸다.
•
이러한 지점을 연결하는 선(엣지라고 함)은 이러한 에이전트가 통신하는 방식을 보여준다.
•
해당 설정을 통해 누가 무엇을 하며 어떻게 정보를 공유하는지 쉽게 확인할 수 있다.
•
예를 들어 한 상담원이 질문에 답변하고 다른 상담원이 데이터 수집을 담당한다면 정보를 쉽게 주고 받을 수 있다.
상태 관리
•
LangGraph의 가장 큰 특징 중 하나는 자동 상태 관리이다.
→ 즉, 시간이 지남에 따라 대화나 작업에서 어떤 일이 있었는지 추적할 수 있다.
•
예를 들어 상담원이 새로운 것을 알게 되면 그 정보를 기억해 두었다가 나중에 상호작용할 수 있다.
•
이를 통해 시스템은 관련성을 유지하고 새로운 질문이나 작업에 올바르게 응답할 수 있다.
•
마치 학생이 수업에서 배운 내용을 기억하고 나중에 질문에 답하는 것과 같다.
조정(Coordination)
•
LangGraph에서의 조정을 통해 한 에이전트가 다른 에이전트가 데이터를 분석하기 전에 데이터를 수집해야 하는 경우 LangGraph는 올바른 순서로 데이터를 수집하도록 한다.
•
이는 많은 에이전트가 공동의 목표를 달성하기 위해 협력해야 하는 애플리케이션에서 매우 중요
•
예를 들어, 조정을 통해 상담원은 올바른 순서로 업무를 수행하고 문제 없이 중요한 정보를 공유할 수 있다.
•
이렇게 하면 개발자는 각 에이전트가 서로 어떻게 대화하는지 신경 쓰지 않고 애플리케이션의 전체적인 그림에 집중할 수 있다.
LangGraph가 나온 이유
•
LLM을 통해서 FLOW를 만들다 보면, 이전 LLM 결과에 대해서 다음 작업으로 넘길 때, LLM이 생성되는 결과에 의해 실패하는 경험들이 종종 있다.
LangGraph의 이점
간소화된 개발
•
LangGraph를 사용하면 개발자가 애플리케이션을 더 쉽게 구축할 수 있다.
•
일반적으로 개발자는 소프트웨어를 만들 때 데이터가 저장되는 방식, 프로그램의 여러 부분이 함께 작동하는 방식 등 많은 세부 사항을 관리해야 하는데 이는 복잡할 수 있으며 실수로 이어질 수 있다.
•
이럴 때 LangGraph를 사용하면 개발자는 이러한 세부 사항에 대해 걱정할 필요가 없다.
•
개발자는 애플리케이션에서 수행하고자 하는 작업에 집중할 수 있다.
→ 즉, 오류를 줄이고 소프트웨어를 더 빠르게 만들 수 있다.
•
직접 모든 것을 알아낼 필요가 없도록 정확히 무엇을 해야 하는지 알려주는 레시피를 사용하는 것과 비슷하다고 생각하면 된다.
유연성
•
LangGraph를 사용하면 개발자가 애플리케이션의 여러 부분이 서로 통신하는 고유한 규칙과 방법을 만들 수 있다.
•
즉, 특정 요구 사항에 맞는 애플리케이션을 만들 수 있다.
•
예를 들어 개발자가 다양한 유형의 질문에 답할 수 있는 챗봇을 만들려는 경우 LangGraph를 사용하여 쉽게 설정할 수 있다.
•
마치 작업에 적합한 도구를 선택할 수 있는 툴박스가 있어서 창의성과 커스터마이징이 가능한 것과 같다.
확장성
•
애플리케이션이 확장되고 필요에 따라 더 많은 작업을 처리할 수 있음을 의미한다.
•
LangGraph는 다양한 부분이 함께 작동하는 대규모 애플리케이션을 지원하도록 설계되었다.
•
이는 많은 사용자가 동시에 소프트웨어를 사용하는 경우에도 소프트웨어가 제대로 작동해야 하는 비즈니스에 중요하다.
•
예를 들어 음식이나 직원이 부족하지 않고 많은 고객에게 서비스를 제공할 수 있는 레스토랑을 상상해 보자.
•
LangGraph는 개발자가 많은 활동을 원활하게 처리할 수 있는 애플리케이션을 구축할 수 있도록 도와준다.
내결함성
•
문제가 발생하더라도 애플리케이션이 계속 실행되도록 도와주는 기능
•
LangGraph에는 오류를 관리하는 데 도움이 되는 도구가 포함되어 있으므로 애플리케이션의 한 부분에 문제가 있어도 나머지는 계속 작동할 수 있다.
•
이는 많은 부분이 서로 의존하는 복잡한 시스템에 매우 중요하다.
•
예를 들어, 자동차에 펑크가 난 타이어가 있어도 여전히 세 바퀴로 주행할 수 있다.
•
마찬가지로 LangGraph는 애플리케이션의 안정성과 신뢰성을 보장하므로 개발자가 안심할 수 있다.
노드(Node)
•
수행하고자 하는 작업 내용으로 각 노드들은 서로 다른 다양한 작업들을 보유한다.
◦
Function (e.g., an external tool)
◦
LCEL Runnable 실행 가능(e.g., a RAG chain)
Edge
•
노드와 노드 사이의 연결하여 각 노드가 가지고 있는 정보를 통해 커뮤니케이션하는 역할 수행
◦
paths to take 가야 할 길(올바른 경로)
◦
where to pass our state object next 다음에 상태 개체를 전달할 위치
◦
the agent scratch Pad : what that is really tracking is it's tracking the state
State
•
각 노드가 수행한 작업들을 기억(상태 기록)하는 기능
•
이를테면, 얼마나 많은 이메일을 보냈는지?, 어떤 이메일을 확인했는지?, 어떤 초안을 읽었는지?, 어떤 이메일을 작성했는지?
Graph
•
노드와 엣지의 모음