AI/LLM

[LangGraph] 에이전트의 설계도

jumemory 2025. 8. 6. 16:12

이번 단계는 랭체인의 단방향 파이프라인(Chain)을 넘어, 모델이 스스로 상태를 확인하고 이전 단계로 돌아가거나 반복할 수 있게 해주는 [16단계: LangGraph] 에이전트의 설계도입니다. 복잡한 AI 워크플로우를 제어하는 핵심 기술을 정리해 드립니다.


[LLM 컨셉] LangGraph: 순환하고 사고하는 AI 워크플로우

**랭그래프(LangGraph)**는 랭체인(LangChain) 생태계 위에서 구축된 라이브러리로, LLM 애플리케이션에 순환(Cycle) 구조와 상태 관리(State Management) 기능을 부여합니다. 단순한 'A → B → C' 흐름이 아니라, 결과가 만족스럽지 않으면 다시 'A'로 돌아가 재시도하는 지능적인 루프를 설계할 수 있게 해줍니다.


1. 왜 랭그래프가 필요한가? (Chain의 한계 극복)

기존 랭체인의 Chain은 흐름이 일정하게 정해진 '직선 도로'와 같습니다. 하지만 실제 업무는 훨씬 복잡합니다.

  • 반복과 수정: "코드를 짰는데 에러가 났어? 그럼 다시 수정해서 실행해봐"라는 논리는 직선 도로에서 구현하기 어렵습니다.
  • 상태 유지: 여러 단계를 거치는 동안 어떤 정보를 얻었는지, 어떤 시도를 했는지 기억(State)해야 합니다.
  • 복잡한 분기: 조건에 따라 다음 목적지를 유연하게 결정해야 하는 에이전트 서비스에는 랭그래프의 그래프 구조가 필수적입니다.

2. 랭그래프의 3대 구성 요소

랭그래프는 워크플로우를 하나의 **그래프(Graph)**로 정의합니다.

  1. Nodes (노드): 실제 작업을 수행하는 단위입니다. (예: LLM의 답변 생성, 파이썬 코드 실행, 데이터베이스 검색 등)
  2. Edges (엣지): 노드와 노드를 잇는 경로입니다.
    • Conditional Edges: 특정 조건(예: LLM의 판단 결과)에 따라 다음 어느 노드로 갈지 결정하는 갈림길 역할을 합니다.
  3. State (상태): 그래프 전체에서 공유되는 **'공동 메모리'**입니다. 현재까지의 대화 내용, 검색 결과, 에러 메시지 등을 담고 있으며 노드가 실행될 때마다 이 상태를 업데이트합니다.

3. 핵심 메커니즘: 순환(Cycle)과 제어

랭그래프의 가장 큰 특징은 **'루프(Loop)'**를 명시적으로 제어할 수 있다는 점입니다.

  • ReAct 패턴 구현: 모델이 생각(Reasoning)하고 행동(Acting)한 뒤, 그 결과를 관찰(Observation)하여 다시 생각하는 과정을 그래프의 순환 구조로 완벽하게 묘사할 수 있습니다.
  • 인간 개입 (Human-in-the-loop): 그래프가 진행되다가 중요한 결정 시점에 잠시 멈추고(Breakpoint) 사람의 승인을 받은 뒤 다시 진행하는 워크플로우도 가능합니다.

4. 랭그래프 vs 일반 랭체인 에이전트

구분 일반 에이전트 (Executor) 랭그래프 (LangGraph)
제어권 모델의 판단에 전적으로 의존 (블랙박스) 개발자가 흐름을 명확히 설계 (화이트박스)
복잡도 단순한 도구 사용에 적합 기업용 복잡한 비즈니스 로직에 적합
상태 관리 대화 기록 정도만 유지 단계별 작업 결과물(State)을 정교하게 관리
커스터마이징 흐름 수정이 어려움 노드와 엣지 단위로 세밀한 수정 가능

5. [선생님의 심화 보충] 상태의 영속성 (Persistence)

랭그래프의 또 다른 강력한 기능은 **'체크포인트(Checkpointing)'**입니다. 그래프의 진행 상태를 데이터베이스에 실시간으로 저장할 수 있어, 중간에 서버가 꺼지거나 사용자가 며칠 뒤에 돌아와도 중단되었던 바로 그 지점부터 작업을 재개할 수 있습니다. 이는 실전용 AI 서비스를 만들 때 매우 중요한 신뢰성 요소입니다.


✍️ 공부를 마치며

랭그래프는 LLM에게 '절차적인 사고 능력'을 부여하는 설계도입니다. 이제 우리는 복잡한 논리 구조를 가진 AI 시스템을 만들 준비가 되었습니다. 이제 이 똑똑한 설계도 위에, 실제 외부 세상과 소통할 수 있는 '연결 통로'를 달아줄 차례입니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BM25 -> TF-IDF의 발전

IDF는 검색의 희귀성을 나타냄(the, a)는 낮은 점수 희귀한 단어는 높은점수

TF 빈도수를 나타냄 빈도수가 많을수록 높은 점수 일정 점수를 넘기지않음 

문서길이 정규화는 점수 보정 작업

핵심 파라미터 k1과 d

k1은 단어 빈도의 영향력을 조절

d는 문서 길이에대한 정규화를 조절

 

페이징랭크?-> 구글을 만든 알고리즘 (스파크전용)

 

RRF

 

sudo apt update

 

sudo apt install g++ autoconf libfontconfig1-dev pkg-config libjpeg-dev  gnome-common libglib2.0-dev gtk-doc-tools libyelp-dev yelp-tools gobject-introspection libsecret-1-dev libnautilus-extension-dev

 

sudo apt install poppler-utils

sudo apt install tesseract-ocr

sudo apt install libtesseract-dev

pip install pi-heif

pip install unstructured_inference

pip install pdf2image

 

'AI > LLM' 카테고리의 다른 글

[MCP] LLM의 만능 커넥터  (0) 2025.08.08
[Agent] 자율적인 AI 에이전트  (1) 2025.08.07
[LangChain] AI 파이프라인 구축  (0) 2025.08.05
[Semantic Search] 의미 기반 검색  (4) 2025.08.04
[Vector DB] 지식의 저장소  (3) 2025.08.01