Search

LangGraph

대분류
인공지능/데이터
프레임워크
소분류
LangChain/RAG
유형
LangChain
부유형
Application LangChain
주요 레퍼런스
https://www.datacamp.com/tutorial/langgraph-tutorial
https://normalstory.tistory.com/entry/LangGraph-01
최종 편집 일시
2024/10/31 08:08
생성 일시
2024/10/31 00:16
13 more properties

LangGraph

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

노드와 엣지의 모음