order1.txt•8.13 kB
현재 파악된 작업 계획을 바탕으로, 세부적으로 어떤 작업을 구성할 것인지에 대한 계획이 필요합니다. 크게는 1. LangGraph 에이전트
개발 및 LangGraph Platform(cli: langgraph-dev) 로의 사람에 의한 테스트 2. MCP 서버 개발(FastMCP 라이브러리 활용) 목적은
LangGraph 에이전트에서 사용하는 검색 도구를 만드는 것으로 크게는 LangConnect API 를 활용하는 기능(pg_vector - VectorDB) 과
TavilyWebSearch 를 이용한 웹검색 2가지 기능을 지원할 계획이야. --- 1,2 작업은 서로 연관이 있으니 각각 개발되고 연결되거나 또는
1먼저 하고 2번해서 연동하는 방식으로 안정적으로 가도 괜찮겠어. --- 3. (1,2) 작업이 완료된 후 LangGraph 레벨에서 각
에이전트가 정상적으로 동작한다고 판단되면 이제는 각 LangGraph Agent 를 A2A Agent 로 감싸는 작업이야. A2A Server 로
동작해야되니깐 /docs 하위에 있는 a2a-python 문서를 잘 참고해서 진행해야겠지? --- 4. 그러고 나면 A2A Client 를 Google ADK 로
개발해서 최종적으로 모든 A2A Server 와 통신이 잘 되는지 사람에 의한 테스트를 진행할 수 있으면 끝일 것 같아. 최종 결과물은
LangGraph Agent 3개(계획 수립, 자료조사, 글쓰기) 일것이고 자료조사 Agent는 MCP 서버와 통신이
가능해야되며(langchain-mcp-adapters 를 활용) 각 Agent 는 또한 A2A Server 로써 역할도 해야겠지. 사용자와 소통 가능한 A2A Client
로 Google ADK 로 구성된 UnifiedResearch Agent 가 Client 로 사용자의 요청을 받고 각 에이전트에 작업을 할당하는 역할도 하게
될거야. 다양한 문서와 라이브러리를 참고해야되고 주로 /docs 에 넣어두었으니 잘 참고하도록 해. 계획은 아주 구체적으로
작성해야되며 가장 최신의 문서를 참고할 수 있도록 필요하다면 웹검색도 수행해도 좋아.
---
TTimes Guide Coding 프로젝트 구현 계획
🎯 프로젝트 목표
웹 검색과 보고서 작성을 자동화하는 LangGraph 기반 멀티 에이전트 시스템 구축
📋 작업 계획
Phase 1: LangGraph 에이전트 개발 (우선순위: 높음)
1.1 Planning Agent (계획 수립 에이전트)
위치: /agents/agent/planning_agent.py
- 역할: 사용자 요청을 분석하고 작업 계획 수립
- 주요 노드:
- analyze_request: 요청 분석 및 의도 파악
- create_plan: 실행 계획 생성
- delegate_tasks: 다른 에이전트에게 작업 할당
- 구현 사항:
- BaseAgent 상속
- Supervisor 패턴 적용
- 작업 분배 로직 구현
1.2 Research Agent (자료조사 에이전트)
위치: /agents/agent/research_agent.py
- 역할: 웹 검색과 벡터 DB 검색을 통한 정보 수집
- 주요 노드:
- search_web: Tavily API를 통한 웹 검색
- search_vector: LangConnect를 통한 벡터 검색
- aggregate_results: 검색 결과 통합 및 정리
- 구현 사항:
- MCP 서버 연동 (langchain-mcp-adapters 사용)
- 검색 결과 품질 평가
- 중복 제거 및 관련성 순위 정렬
1.3 Report Writing Agent (보고서 작성 에이전트)
위치: /agents/agent/report_writing_agent.py
- 역할: 수집된 정보를 바탕으로 구조화된 보고서 생성
- 주요 노드:
- structure_content: 콘텐츠 구조화
- write_sections: 섹션별 작성
- review_quality: 품질 검토 및 개선
- 구현 사항:
- 마크다운 형식 보고서 생성
- 인용 및 참조 관리
- 반복적 개선 메커니즘
Phase 2: MCP 서버 개발 (우선순위: 높음)
2.1 All-Search MCP Server
위치: /all-search-mcp/server.py
- FastMCP 2.0 활용
- 통합 검색 도구 제공:
@mcp.tool()
async def search_web(query: str, max_results: int = 5) -> list[dict]:
"""Tavily API를 통한 웹 검색"""
@mcp.tool()
async def search_vector(query: str, collection: str, top_k: int = 5) -> list[dict]:
"""LangConnect를 통한 벡터 검색"""
- 환경 설정:
- Transport: streamable_http
- 포트: 8090
- 인증: API Key 기반
Phase 3: LangGraph-MCP 연동 (우선순위: 높음)
3.1 MCP 클라이언트 설정
# agents/tools/mcp_client.py
client = MultiServerMCPClient({
"search": {
"url": "http://localhost:8090/mcp/",
"transport": "streamable_http",
"headers": {"Authorization": f"Bearer {API_KEY}"}
}
})
3.2 도구 통합
- Research Agent에 MCP 도구 연결
- 비동기 검색 및 스트리밍 지원
- 에러 처리 및 재시도 로직
Phase 4: A2A 서버 변환 (우선순위: 중간)
4.1 각 LangGraph 에이전트를 A2A 서버로 래핑
위치: /agents/a2a_servers/
- AgentCard 정의:
- 각 에이전트의 능력 명세
- 입출력 스키마 정의
- 보안 설정
- 구현 구조:
# planning_a2a_server.py
class PlanningA2AServer(DefaultRequestHandler):
def __init__(self):
self.agent = PlanningAgent()
self.agent_card = AgentCard(
name="planning_agent",
skills=[...],
input_modes=["text", "json"],
output_modes=["json", "structured"]
)
4.2 포트 할당
- Planning Agent: 8003
- Research Agent: 8001
- Report Writing Agent: 8004
Phase 5: Google ADK 클라이언트 (우선순위: 중간)
5.1 UnifiedResearch Agent
위치: /a2a_client/unified_research_agent.py
- Google ADK 기반 오케스트레이터
- 원격 A2A 에이전트 연결:
planning_agent = RemoteA2aAgent(
agent_url="http://localhost:8003/a2a/planning",
agent_card_path="/v1/card"
)
research_agent = RemoteA2aAgent(
agent_url="http://localhost:8001/a2a/research",
agent_card_path="/v1/card"
)
5.2 사용자 인터페이스
- ADK Web UI 활용
- 스트리밍 응답 지원
- Human-in-the-loop 구현
🧪 테스트 계획
단계별 테스트
1. 개별 LangGraph 에이전트 테스트
- langgraph dev 명령어로 각 에이전트 테스트
- LangGraph Studio (http://localhost:8123) 활용
2. MCP 서버 테스트
- FastMCP 내장 테스트 도구 활용
- 검색 기능 단위 테스트
3. 통합 테스트
- Docker Compose로 전체 시스템 실행
- 엔드투엔드 시나리오 테스트
📁 최종 프로젝트 구조
ttimes_guide_coding/
├── agents/
│ ├── agent/
│ │ ├── planning_agent.py
│ │ ├── research_agent.py
│ │ └── report_writing_agent.py
│ ├── a2a_servers/
│ │ ├── planning_a2a_server.py
│ │ ├── research_a2a_server.py
│ │ └── report_writing_a2a_server.py
│ └── tools/
│ └── mcp_client.py
├── all-search-mcp/
│ ├── server.py
│ └── config.yaml
├── a2a_client/
│ └── unified_research_agent.py
└── docker/
└── docker-compose.yml
🚀 구현 순서
1. LangGraph 에이전트 개발 (병렬 가능)
2. MCP 서버 구현
3. LangGraph-MCP 연동
4. 개별 테스트 및 검증
5. A2A 서버 래핑
6. ADK 클라이언트 구현
7. 통합 테스트
이 계획을 따라 단계적으로 구현하면 안정적이고 확장 가능한 멀티 에이전트 시스템을 구축할 수 있습니다.
⏺ 계획이 승인되었으니 이제 작업을 시작하겠습니다. 먼저 Todo 리스트를 더 세부적으로 업데이트하겠습니다.