Skip to content

이 프로젝트는 LangGraph를 활용하여 여러 AI 에이전트가 협업하고 서로의 결과물을 검수하며 고품질의 테크 블로그 포스팅을 자동 생성하는 자율형 멀티 에이전트 시스템입니다.

Notifications You must be signed in to change notification settings

hwan6615/Multi-Agent-Tech-Blog-Automation

Repository files navigation

🧠 AI Editor Team v2: Memory-Augmented Autonomous Agents

이 프로젝트는 LangGraph 기반의 멀티 에이전트 시스템에 **Milvus(Vector DB)**를 결합하여, **"과거의 실수를 기억하고 스스로 성장하는 AI 팀"**을 구현한 v2.0 업데이트 버전입니다.

단순히 글을 작성하고 수정하는 것을 넘어, 장기 기억(Long-term Memory) 메커니즘을 도입하여 에이전트가 이전 프로젝트에서 받은 피드백을 영구적으로 학습하고, 새로운 작업 시 이를 선제적으로 반영하여 동일한 실수를 반복하지 않도록 설계되었습니다.


🌟 Evolution: From Basic to Memory-Augmented

구분 Linear Chain Agentic Workflow (v1) Memory-Augmented (v2, 현재)
흐름 제어 순차적 실행 (A→B) 순환형 (Cyclic Loop) 순환형 + 기억 조회 (Retrieval)
지식 범위 사전 학습 데이터 웹 검색 (Short-term) 웹 검색 + 경험적 지식 (Long-term)
피드백 관리 일회성 소모 세션 내에서만 유효 영구 저장 및 프로젝트 간 전이
성장 가능성 없음 (항상 초기화) 없음 (세션 종료 시 초기화) 있음 (실행할수록 똑똑해짐)
운영 인프라 Python Runtime Python Runtime Docker Compose (Milvus, Etcd)

🏗️ 시스템 아키텍처 (v2.0)

본 시스템은 Docker 환경 위에서 Milvus와 LangGraph가 유기적으로 연동되는 구조입니다.

  1. Researcher Agent: Tavily API를 통해 최신 정보를 수집합니다.
  2. Memory Manager (Milvus):
    • Retrieval: 현재 주제(Topic)와 유사한 과거의 지적 사항을 검색합니다. (Similarity Threshold > 0.6)
    • Storage: 에디터의 반려(REVISE) 피드백을 벡터화하여 영구 저장합니다.
  3. Writer Agent: [수집된 정보] + **[과거의 실패 경험(Memory)]**을 동시에 고려하여 초안을 작성합니다.
  4. Editor Agent: 초안을 검수합니다. 만약 이전 피드백이 반영되지 않았다면 더 강력한 비평을 가합니다.
  5. Router: 승인 여부에 따라 프로세스를 종료하거나, 피드백을 저장하고 재작성을 지시합니다.

💻 실행 예시 (Demo & Proof of Concept)

v2 시스템이 어떻게 과거의 경험을 회상하고, 지속적으로 품질을 개선하는지 실제 사례를 통해 증명합니다.

1. 🧠 장기 기억 활성화 (Memory Retrieval)

새로운 주제인 "LangGraph의 단점"을 입력했을 때, 시스템은 Milvus DB에서 이전에 수행했던 유사 주제("LangGraph의 장점")의 피드백을 자동으로 호출합니다.

Milvus 장기 기억 호출 (유사도 0.93) 및 회상된 과거 피드백 상세
Memory_Hit Memory_Detail

Key Insight: 단순히 글을 쓰는 것이 아니라, 과거에 지적받았던 "서론의 명확성", "구조적 일관성" 등의 데이터를 [유사도 0.93]으로 정확히 찾아내어 Writer에게 전달합니다.


2. 🔄 에이전트 간 자가 수정 루프 (Agentic Feedback Loop)

Editor 에이전트는 Writer가 작성한 초안이 과거의 피드백과 현재의 품질 기준을 만족하는지 엄격하게 검수합니다.

에디터의 반려 및 비평 (Critique) 및 수정/최종 승인 프로세스
Critique Approval_Process

Self-Correction Logic:

  • 반려(REVISE): 피드백 반영 미흡 시 이유를 명시하여 재작성 요청 (Rev 2 과정).
  • 승인(ACCEPT): 지시 사항이 완벽히 반영된 것을 확인 후 최종 승인 (Rev 3 과정).

3. 📊 LangSmith를 통한 MLOps 추적 (Observability)

복잡한 멀티 에이전트의 순환 구조와 각 단계별 지연 시간(Latency)을 실시간으로 모니터링합니다.

LangSmith Tracing

Tracing Analysis:

  • Multi-Agent Coordination: Researcher, Writer, Editor 간의 유기적인 핸드오버 확인.
  • Total Latency: 약 73.63초의 실행 시간 동안 총 3회의 수정 과정을 거쳐 고품질 콘텐츠 도출.

4. 📝 최종 결과물 (Sample Output)

과거의 피드백이 완벽히 반영된 최종 블로그 포스팅의 모습입니다.

최종 결과물 상단 (서론 ~ 본문 2) 최종 결과물 하단 (본문 3 ~ 결론)
Final_1 Final_2

개선 사항 반영 결과:

  • 구조적 일관성: "문제점 → 영향 → 예시"의 통일된 레이아웃 적용.
  • 전문성 강화: 'Human-in-the-loop' 등 기술 용어에 대한 명확한 설명 및 결론부 제언 추가.

🚀 주요 기능 (v2.0 Highlights)

  • Long-term Memory (장기 기억): 에디터의 피드백이 휘발되지 않고 Milvus 벡터 DB에 저장되어, 서버를 재시작해도 에이전트의 경험치가 유지됩니다.
  • Context-Aware Retrieval (문맥 기반 회상): 주제(Topic) 기반 임베딩 검색을 통해, 현재 작성하려는 글과 연관된 과거의 실수만 선별적으로 가져옵니다. (유사도 임계값 적용)
  • Strict Compliance Check (지시 이행 검증): 에디터는 Writer가 이전 피드백을 제대로 반영했는지 확인하고, 무시할 경우 강도 높은 질책(Reinforced Critique)을 수행합니다.
  • Dockerized Infrastructure: Milvus Standalone(Etcd, MinIO 포함) 환경을 Docker Compose로 구축하여 안정적인 로컬 벡터 저장소를 제공합니다.

🛠️ 기술 스택

  • Agent Framework: LangGraph, LangChain
  • Vector Database: Milvus (v2.4.11), PyMilvus
  • Infrastructure: Docker, Docker Compose
  • LLM & Embedding: OpenAI (gpt-4o-mini, text-embedding-3-small)
  • Observability: LangSmith
  • Interface: Streamlit

📦 설치 및 실행 방법 (Docker 환경 필수)

  • v2 버전은 Milvus 데이터베이스 구동을 위해 Docker가 필수적입니다.

1. 사전 준비 (Prerequisites)

- Docker Desktop이 설치되어 있고 실행 중이어야 합니다.
- Windows 사용자의 경우 WSL2 백엔드 메모리 할당(최소 4GB 권장)이 필요할 수 있습니다.

2. 프로젝트 설정 및 의존성 설치

  • uv를 사용하여 가상환경을 동기화합니다.
# uv 설치 및 라이브러리 동기화 (pymilvus 등 포함)
uv sync

3. 환경 변수 설정 (.env)

# LLM & Search API
OPENAI_API_KEY=your_openai_api_key
TAVILY_API_KEY=your_tavily_api_key

# LangSmith (Tracing & Monitoring)
LANGCHAIN_TRACING_V2=true
LANGCHAIN_ENDPOINT=https://api.smith.langchain.com
LANGCHAIN_API_KEY=your_langsmith_api_key
LANGCHAIN_PROJECT=ai-tech-blog-team

4. Milvus 서버 실행 (Docker Compose) 🐳

  • 프로젝트 루트(v2 폴더)에서 아래 명령어로 DB 컨테이너를 실행합니다.
# Milvus, Etcd, MinIO 컨테이너 실행
docker compose up -d

# 실행 상태 확인 (3개 컨테이너가 Up 상태여야 함)
docker compose ps

5. 애플리케이션 실행

# Streamlit 대시보드 실행
uv run streamlit run app.py

6. (선택) 메모리 저장 현황 확인

  • 에이전트가 학습한 데이터가 잘 쌓이고 있는지 확인하려면 별도 스크립트를 실행하세요.
uv run python check_memory.py

📈 프로젝트 성과 및 인사이트 (v2.0)

  • 지식의 전이(Transfer Learning) 구현: "LangGraph의 차이점"에서 지적받은 내용을 "LangGraph의 장점" 글을 쓸 때 스스로 적용하는 모습을 확인했습니다. (유사도 0.76)
  • 환각 및 오작동 방지: 유사도 필터링(Threshold 0.6)을 도입하여, 관련 없는 주제의 피드백이 글쓰기를 방해하는 문제를 기술적으로 해결했습니다.
  • 엔지니어링 역량 강화: Python 코드 레벨의 로직뿐만 아니라, Docker Container 기반의 MSA(Microservices Architecture) 데이터베이스 운영 경험을 확보했습니다.

About

이 프로젝트는 LangGraph를 활용하여 여러 AI 에이전트가 협업하고 서로의 결과물을 검수하며 고품질의 테크 블로그 포스팅을 자동 생성하는 자율형 멀티 에이전트 시스템입니다.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages