LangChain이 만든 멀티 에이전트 라이브러리 LangGraph를 알아보자
안녕하세요! 오늘은 최근에 출시된 LangChain의 새로운 라이브러리인 LangGraph에 대해 알아보겠습니다. 이 글에서는 LangGraph의 멀티 에이전트 콜라보레이션 기능을 살펴보고, 실제 예제를 통해 어떻게 동작하는지 알아보겠습니다. 이 글을 통해 LangGraph의 기본 개념부터 활용법까지 쉽게 따라할 수 있도록 설명드리겠습니다.
LangGraph란 무엇인가?
LangGraph는 LangChain에서 만든 새로운 라이브러리로, 여러 에이전트가 협업하여 작업을 수행하는 기능을 제공합니다. 기존의 멀티 에이전트 시스템과 달리 LangGraph는 에이전트 간의 명확한 흐름도와 상태 관리를 지원하여 보다 체계적이고 효율적인 작업을 수행할 수 있게 해줍니다.
LangGraph의 주요 기능
- 사이클 구조: 각 에이전트가 단순히 역할을 수행하고 끝나는 것이 아니라, 명확한 사이클을 통해 다음 역할을 수행할 에이전트에게 전달합니다.
- 글로벌 스테이트 관리: 모든 에이전트가 현재 상태를 공유하여, 전체 시스템의 상태를 파악하고 작업을 진행합니다.
- 다양한 도구와의 연동: 검색, 차트 생성, 코드 실행 등 다양한 도구와 연동하여 작업을 수행할 수 있습니다.
LangGraph의 혁신적인 점
LangGraph는 기존의 멀티 에이전트 시스템보다 한층 더 발전된 기능을 제공합니다. 특히, 에이전트 간의 협업을 강화하고 작업의 효율성을 극대화하는 방식이 매우 혁신적입니다.
- 에이전트의 역할 분담과 협업: LangGraph에서는 각 에이전트가 명확한 역할을 맡고, 그 역할에 따라 작업을 수행합니다. 예를 들어, 검색 에이전트는 데이터를 수집하고, 차트 생성 에이전트는 수집된 데이터를 바탕으로 그래프를 그립니다.
- 상태 관리 및 공유: 모든 에이전트가 현재 작업의 상태를 공유합니다. 이를 통해 에이전트 간의 협업이 원활하게 이루어질 수 있으며, 작업의 진행 상황을 실시간으로 파악할 수 있습니다.
- 명확한 흐름도: LangGraph는 에이전트 간의 작업 흐름을 명확하게 정의합니다. 이를 통해 각 에이전트가 언제 어떤 작업을 수행해야 하는지 알 수 있으며, 작업의 순서를 체계적으로 관리할 수 있습니다.
LangGraph로 할 수 있는 일
LangGraph를 사용하면 여러 개의 '에이전트'가 서로 협력하여 다양한 작업을 자동으로 수행할 수 있습니다. 쉽게 이해할 수 있도록 몇 가지 예를 들어보겠습니다.
- 데이터 검색 및 수집:
- 예를 들어, 학교 과제로 특정 주제에 대해 자료를 찾아야 한다고 생각해보세요. LangGraph를 사용하면 에이전트가 인터넷에서 필요한 자료를 자동으로 검색하고 수집해줍니다.
- 데이터 분석 및 시각화:
- 수집한 데이터를 바탕으로 차트나 그래프를 만들어야 할 때, LangGraph의 에이전트가 데이터를 분석하고 예쁜 그래프를 그려줄 수 있습니다.
- 복잡한 작업의 자동화:
- 여러 단계의 작업이 필요한 경우, 각 단계를 여러 에이전트가 나눠서 수행하고, 최종 결과를 만들어냅니다. 예를 들어, 데이터 검색, 정리, 분석, 시각화 등 각 단계를 에이전트가 협력하여 수행합니다.
LangGraph 사용 예제
이제 LangGraph를 사용하여 실제로 멀티 에이전트 콜라보레이션을 구현하는 예제를 보겠습니다. 예제에서는 S&P 500 지수 데이터를 검색하고, 이를 차트로 그리는 작업을 수행합니다.
1. 환경 설정 및 에이전트 생성
먼저 LangGraph를 사용하기 위해 필요한 환경을 설정하고 에이전트를 생성합니다.
# API 키 설정 api_key = 'your_api_key_here' # 에이전트 생성 함수 def create_agent(): from langchain.agents import Agent from langchain.tools import GoogleSearchTool, PythonExecutorTool # 에이전트가 사용할 도구들 tools = [GoogleSearchTool(api_key=api_key), PythonExecutorTool()] # 에이전트 생성 agent = Agent(tools=tools, system_message='검색 및 차트 생성을 수행합니다.') return agent
2. 도구 정의
검색과 차트 생성을 위한 도구를 정의합니다.
# 구글 검색 도구 정의 search_tool = GoogleSearchTool(api_key=api_key) # 파이썬 코드 실행 도구 정의 python_tool = PythonExecutorTool()
3. 에이전트 상태 관리 및 노드 생성
에이전트의 상태를 관리하고, 작업을 수행할 노드를 생성합니다.
from langchain.state import AgentState # 에이전트 상태 클래스 정의 class AgentState: def __init__(self): self.state = {} # 노드 생성 함수 def create_node(agent, state): from langchain.nodes import Node # 에이전트 노드 생성 node = Node(agent=agent, state=state) return node
4. 멀티 에이전트 콜라보레이션 구현
리서치 에이전트와 차트 생성 에이전트를 정의하고, 각 에이전트가 협업하여 작업을 수행하는 흐름을 구현합니다.
# 리서치 에이전트 정의 research_agent = create_agent() research_state = AgentState() # 차트 생성 에이전트 정의 chart_agent = create_agent() chart_state = AgentState() # 리서치 노드 생성 research_node = create_node(research_agent, research_state) # 차트 생성 노드 생성 chart_node = create_node(chart_agent, chart_state)
5. 그래프 정의 및 실행
에이전트 간의 흐름을 정의하고, 그래프를 실행하여 작업을 수행합니다.
from langchain.graph import Graph # 그래프 정의 graph = Graph() graph.add_node(research_node) graph.add_node(chart_node) graph.add_edge(research_node, chart_node, condition='data_collected') # 그래프 실행 graph.run('S&P 500 지수의 최근 5년간 데이터를 찾아줘.')
6. 결과 확인 및 시각화
수집된 데이터를 바탕으로 차트를 생성하고 결과를 확인합니다.
# 수집된 데이터 예제 data = { '2019': 2946.35, '2020': 3756.07, '2021': 4766.18, '2022': 3785.38, '2023': 4193.50 } # 차트 생성 코드 import matplotlib.pyplot as plt years = list(data.keys()) values = list(data.values()) plt.plot(years, values, marker='o') plt.title('S&P 500 지수 (2019-2023)') plt.xlabel('년도') plt.ylabel('지수') plt.show()
이렇게 해서 LangGraph를 사용하여 멀티 에이전트 콜라보레이션을 구현하고, 데이터를 검색하고 시각화하는 과정을 살펴보았습니다. LangGraph는 다양한 작업을 효율적으로 처리할 수 있는 강력한 도구이므로, 여러분들도 한번 사용해 보시길 추천드립니다.
결론
오늘은 LangChain에서 새로 출시한 LangGraph에 대해 알아보았습니다. LangGraph의 멀티 에이전트 콜라보레이션 기능을 통해 여러 작업을 체계적으로 처리할 수 있음을 확인했습니다. 앞으로도 LangGraph를 활용한 다양한 예제를 통해 더 많은 기능을 살펴보시길 바랍니다. 감사합니다.