LangGraph
연결 문서
유투브 링크 : 제 RAG 경험은 이제 LangGraph 경험하기 전과 후로 나뉩니다.
[[제 RAG 경험은 이제 LangGraph 경험하기 전과 후로 나뉩니다]]
LangGraph
안녕하세요! 이번 블로그에서는 LangGraph에 대해 자세히 알아보겠습니다. LangGraph는 대형 언어 모델(LLM)을 활용하여 상태를 유지하고, 여러 에이전트를 포함한 복잡한 애플리케이션을 쉽게 만들 수 있도록 도와주는 강력한 라이브러리입니다. 이 글을 통해 LangGraph의 주요 특징, 구조, 작동 방식, 그리고 활용 방법까지 초보자도 이해하기 쉽게 설명해 드리겠습니다.
LangGraph란 무엇인가요?
LangGraph는 LangChain 생태계의 일부로 개발된 도구로, 에이전트 런타임에 필요한 주기적 그래프 워크플로우를 효과적으로 생성할 수 있도록 설계되었습니다. 쉽게 말해, 복잡한 작업을 수행하는 여러 에이전트를 관리하고, 상태를 유지하며, 작업 흐름을 제어할 수 있는 도구입니다.
왜 LangGraph를 사용해야 할까요?
현대의 인공지능 애플리케이션은 단순한 질문과 답변을 넘어, 복잡한 상호작용과 상태 관리를 필요로 합니다. 예를 들어, 여러 단계의 대화나 조건에 따라 다른 행동을 수행하는 시스템을 구축하려면 복잡성이 급증합니다. LangGraph는 이러한 복잡성을 효과적으로 관리하고, 개발자가 더 쉽게 애플리케이션을 구축할 수 있도록 도와줍니다.
LangGraph의 주요 특징
순환 및 분기
LangGraph를 사용하면 애플리케이션에서 루프와 조건문을 구현할 수 있습니다. 이는 프로그램이 특정 조건에 따라 반복적으로 작업을 수행하거나, 상황에 따라 다른 경로를 선택할 수 있다는 것을 의미합니다.
- 예시: 사용자의 입력이 만족스러운 답변을 얻을 때까지 질문을 반복하거나, 사용자의 응답에 따라 다른 프로세스를 진행하는 챗봇을 만들 수 있습니다.
상태 관리
각 단계 후 상태를 자동으로 저장하여 오류 복구, 인간 개입 워크플로우, 시간 여행 등을 지원합니다. 이는 시스템이 중간에 오류가 발생하더라도 이전 상태로 돌아가 작업을 재개할 수 있음을 의미합니다.
- 예시: 장기적인 대화에서 이전 대화 내용을 기억하거나, 작업 진행 상황을 저장하여 나중에 이어서 작업할 수 있습니다.
인간 개입
에이전트가 계획한 다음 작업을 승인하거나 편집하기 위해 그래프 실행을 중단할 수 있습니다. 이는 기존 방식과 비교하여 다음과 같은 장점을 제공합니다:
- 더 나은 품질 보장: 기존에는 AI가 생성한 결과를 그대로 사용하는 경우가 많아 오류 발생 가능성이 있었습니다. 하지만 LangGraph는 인간이 개입하여 결과를 검토하고 수정함으로써 품질을 높일 수 있습니다.
- 협업 강화: 인간과 AI가 협업하여 더 나은 결과를 도출할 수 있습니다. 기존 시스템에서는 AI의 자동화된 결정에 의존했지만, LangGraph는 인간의 판단을 추가하여 신뢰성을 높입니다.
- 예시: 에이전트가 작성한 문서를 사람이 검토하고 수정한 후 최종적으로 배포하는 워크플로우를 구축할 수 있습니다. 이는 기존의 자동화된 프로세스보다 더 높은 정확성과 품질을 제공합니다.
스트리밍 지원
스트리밍 지원 기능은 각 노드에서 생성되는 출력을 실시간으로 확인할 수 있게 해주는 장점이 있습니다. 이는 기존 시스템에서 최종 결과만 확인할 수 있었던 것과 비교하여, 중간 결과를 실시간으로 모니터링하고 필요한 경우 즉각적으로 대응할 수 있도록 해줍니다.
- 기존 시스템: 최종 결과만 확인 가능
- LangGraph: 중간 결과를 실시간으로 스트리밍하여 확인 가능
이러한 차이는 특히 대용량 데이터 처리나 실시간 응답이 필요한 애플리케이션에서 매우 유용합니다. 예를 들어, 실시간 번역 서비스에서는 문장이 완성되기 전에 부분적으로 번역 결과를 보여줄 수 있어 사용자 경험을 향상시킬 수 있습니다.
LangChain 통합
LangGraph는 LangChain 및 LangSmith와 원활하게 통합됩니다. 이를 통해 기존의 LangChain 생태계를 활용하여 더욱 강력한 애플리케이션을 구축할 수 있습니다.
- 예시: LangChain에서 제공하는 다양한 모델과 도구를 LangGraph와 함께 사용하여 개발 효율을 높일 수 있습니다.
LangGraph의 구조 및 작동 방식
LangGraph는 다음과 같은 주요 구성 요소로 이루어져 있습니다:
노드 (Node)
- 역할: LLM 에이전트를 나타내며, 특정 작업을 수행합니다.
- 특징: 각 노드는 입력을 받아 처리를 수행한 후, 결과를 출력합니다.
엣지 (Edge)
- 역할: 에이전트 간의 통신 채널로, 노드 사이의 데이터 흐름을 관리합니다.
- 특징: 한 노드의 출력이 다른 노드의 입력으로 연결됩니다.
상태 (State)
- 역할: 여러 상호작용에 걸쳐 정보를 추적하고 유지합니다.
- 특징: 시스템의 현재 상황이나 컨텍스트를 저장하여, 다음 작업에 활용합니다.
그래프 (Graph)
- 역할: 노드와 엣지의 집합으로, 전체 워크플로우를 나타냅니다.
- 특징: 복잡한 작업 흐름을 시각적으로 표현하고 관리합니다.
작동 방식
- 그래프 구성: 노드와 엣지를 정의하여 그래프를 만듭니다.
- 상태 초기화: 필요한 초기 상태를 설정합니다.
- 그래프 실행: 노드 간의 데이터 흐름에 따라 작업을 수행합니다.
- 상태 업데이트: 각 단계 후에 상태를 업데이트하여 다음 작업에 반영합니다.
활용 및 이점
복잡한 에이전트 시스템 구축
LangGraph를 사용하면 여러 LLM [[AI 에이전트 | 에이전트]]가 협력하여 작업을 수행해야 하는 복잡한 시스템을 쉽게 구축할 수 있습니다. |
- 예시: 문서 생성, 검토, 번역, 요약 등 여러 단계를 거치는 프로세스를 관리할 수 있습니다.
상태 유지 필요성
장기적인 대화나 다단계 작업에서 컨텍스트를 유지해야 하는 경우에 유용합니다.
- 예시: 고객 서비스 챗봇이 이전 대화 내용을 기억하고 적절한 대응을 하는 시스템을 만들 수 있습니다.
유연한 워크플로우
동적으로 변화하는 조건에 따라 다른 작업을 수행해야 할 때, 순환 및 분기 기능을 활용할 수 있습니다.
- 예시: 사용자의 선택에 따라 다른 경로로 진행되는 인터랙티브 스토리나 게임을 개발할 수 있습니다.
인간-AI 협업
에이전트의 작업을 검토하고 승인하는 과정이 필요한 경우에 인간 개입 기능을 사용할 수 있습니다.
- 예시: AI가 작성한 코드나 문서를 사람이 검토하여 품질을 향상시킬 수 있습니다.
LangGraph 시작하기
설치 방법
LangGraph를 사용하려면 먼저 라이브러리를 설치해야 합니다.
pip install langgraph
기본 사용법
- 노드 정의: 각 에이전트의 역할을 정의합니다.
- 엣지 정의: 노드 간의 데이터 흐름을 설정합니다.
- 그래프 생성: 노드와 엣지를 조합하여 그래프를 만듭니다.
- 상태 관리: 필요한 경우 상태를 초기화하고 업데이트합니다.
- 그래프 실행:
graph.run()
을 호출하여 워크플로우를 실행합니다.
예제 코드
from langgraph import Node, Edge, Graph
# 노드 정의
class InputNode(Node):
def run(self, state):
state['input'] = input("질문을 입력하세요: ")
return state
class ProcessNode(Node):
def run(self, state):
state['output'] = f"당신의 질문은 '{state['input']}' 입니다."
return state
class OutputNode(Node):
def run(self, state):
print(state['output'])
return state
# 노드 인스턴스 생성
input_node = InputNode()
process_node = ProcessNode()
output_node = OutputNode()
# 엣지 설정
edge1 = Edge(input_node, process_node)
edge2 = Edge(process_node, output_node)
# 그래프 생성
graph = Graph(nodes=[input_node, process_node, output_node],
edges=[edge1, edge2])
# 그래프 실행
graph.run()
위의 코드는 간단한 입력-처리-출력 워크플로우를 보여줍니다.
결론
LangGraph는 LLM 기반의 복잡한 애플리케이션을 구축하고 관리하는 데 매우 유용한 도구입니다. 순환과 분기, 상태 관리, 인간 개입, 스트리밍 지원 등 다양한 기능을 제공하여 개발자들이 더욱 효율적으로 작업할 수 있습니다.
특히 초보자도 쉽게 접근할 수 있도록 설계되어 있으므로, LLM을 활용한 애플리케이션 개발에 관심이 있는 분들께 적극 추천드립니다.
Enjoy Reading This Article?
Here are some more articles you might like to read next: