728x90

LangGraph

LangGraphLLM을 활용한 멀티 에이전트 시스템을 구축을 위한 라이브러리 입니다. 상태 추적복잡한 워크플로우 관리에 강점을 가지고 있으며, 이를 통해 하나의 애플리케이션에서 여러 에이전트가 동시 또는 순차적으로 상호작용하며 작업을 수행할 수 있습니다.

LanghGraph의 특징

  • Cycles(반복문) and Branching(조건문) : 상태에 따라 동작을 다르게 하거나, 반복적인 작업 수행 지원
  • Persistence(지속성) : 각 단계 별 완료될 때마다 상태를 자동으로 저장
    • 에러 복구, 일시 중단 후 재개, 타임 트래블(time travel), Human-in-the-loop 기능 구현이 가능
      • 타임 트래블(time travel) : 과거의 상태로 돌아가거나 이전에 수행된 작업으로 되돌림
  • Human-in-the-Loop : 에이전트가 계획한 다음 작업을 승인하거나 편집 기능
  • Streaming Support : 각 노드에서 생성되는 대로 스트림 출력 제공.
    • 특히 토큰 스트리밍(token streaming) 을 지원하여, 텍스트 기반의 작업이나 결과가 한 번에 모두 나오지 않고 실시간으로 처리 가능
  • Integration with LangChain : LangChainLangSmith 와 통합 용이

LangGraph의 구조

flowchart TD
    %% 노드 정의
    _start_("_start_") --> agent("agent")
    agent -->|continue| action
    agent -->|end| _end_("_end_")
    action --> agent

    %% 스타일 설정
    style _start_ fill:#3E2C58,stroke:#A78BFA,stroke-width:2px,color:white
    style agent fill:#3E2C58,stroke:#A78BFA,stroke-width:2px,color:white
    style action fill:#1C274F,stroke:#93C5FD,stroke-width:2px,color:white
    style _end_ fill:#1C1B19,stroke:#FACC15,stroke-width:2px,color:white

    %% 선 색상 설정
    linkStyle 0 stroke:#A78BFA,stroke-width:2px
    linkStyle 1 stroke:#93C5FD,stroke-width:2px,stroke-dasharray:5 5
    linkStyle 2 stroke:#FACC15,stroke-width:2px,stroke-dasharray:5 5
    linkStyle 3 stroke:#93C5FD,stroke-width:2px

노드 (Nodes): 그래프의 기본 단위로, 각 노드는 특정한 작업을 수행하거나, 데이터를 변환하는 기능을 담당합니다. 예) 데이터 전처리, 정보 추출, 텍스트 분석 등

엣지 (Edges): 노드들 간의 연결을 나타내며, 데이터가 어떻게 흐르고 변환되는지를 시각적으로 나타냅니다.

그래프 (Graph): 여러 개의 노드와 엣지가 결합된 구조로, 복잡한 작업 흐름을 전체적으로 다룹니다.

LangGraph의 코드 구성

1. State(상태) 정의

  • 에이전트 간에 어떤 정보를 주고 받을지 정의. (즉, 노드간의 상태를 전달함.)

2. Node 선언

  • LLM을 통해 어떤식으로 정보를 처리 할지를 정의

3. Edge

  • 노드들 간의 연결을 나타내며, 데이터가 어떻게 흐르고 변환되는지를 시각적으로 나타냄

LangChain vs LangGraph

1. 애플리케이션 구조 :

LangChain : 주로 단일 에이전트를 중심으로 파이프라인을 구성하는 데 중점을 둡니다. 이는 각기 다른 NLP 작업을 순차적으로 처리하는 데 적합합니다.

LangGraph : 멀티 액터 시스템을 구축하여 여러 에이전트가 협력하거나 경쟁하면서 복잡한 작업을 처리하는 데 적합합니다. 이는 더 큰 시스템이나 복잡한 비즈니스 로직을 관리할 때 유리합니다.

2. 상태 추적 :

LangChain : 상태 추적을 명시적으로 제공하지 않지만, 각 파이프라인의 출력은 이전 단계의 결과를 활용할 수 있습니다.

LangGraph : 상태 기반 애플리케이션을 구축할 수 있으며, 각 에이전트가 상태를 추적하고 이를 바탕으로 의사 결정을 내리며 작업을 진행할 수 있습니다.

3. 용도와 목적 :

LangChain : 텍스트 변환, 데이터 처리, API 호출 등 다양한 단일 작업 흐름을 처리하는 데 유용합니다.

chain = prompt | llm | parser

chain.invoke({"query": query})

LangGraph : 멀티 에이전트 협업복잡한 워크플로우의 구축을 목표로 하며, 에이전트 간의 상호작용을 통한 분산 처리가 필요한 경우에 적합합니다.

Reference

728x90
반응형

+ Recent posts