4강: 네트워크 패턴 멀티에이전트 만들기
출처: 공원나연 · 「만들면서 배우는 AI 에이전트 개발 입문+실전」 7.3절 저자 직강
SUMMARY
LangGraph를 활용해 정보 검색 에이전트(리서처)와 HTML 차트 생성 에이전트(HTML 제너레이터) 두 개를 연결하는 네트워크 패턴 멀티에이전트를 실습으로 구현한다. 각 에이전트는 LangChain create_agent로 만든 싱글 에이전트가 하나의 LangGraph 노드 안에 들어가는 구조다. 에이전트 간 작업 전달은 에이전트-핸드오프 패턴(AI 메시지 → Human 메시지 변환)으로 구현하며, Command 객체를 통해 다음 노드를 동적으로 결정한다. LangGraph Studio로 그래프 구조를 시각화하고 실시간 테스트한다.
IDEAS
- 싱글 에이전트 두 개를 연결하면 각자 전문 역할을 나눠 복잡한 작업을 처리할 수 있다
- LangGraph에서 각 에이전트는 하나의 “노드”로 추상화된다
- 멀티에이전트-네트워크-패턴은 에이전트들이 순차적으로 작업을 이어받는 파이프라인 구조다
- 리서처 노드는 Tavily-Search 툴로 웹 검색 후 결과를 다음 에이전트에 전달한다
- HTML 제너레이터 노드는 커스텀 파일 생성 도구를 사용해 조사 결과를 시각화한다
- 에이전트-핸드오프는 AI 메시지를 Human 메시지로 변환해 다음 에이전트가 “사용자 요청”으로 인식하게 한다
- Command 기반 라우팅은 엣지 정적 연결 대신 실행 결과에 따라 동적으로 다음 노드를 결정한다
- 시스템 프롬프트에 “최종 답변” 텍스트 포함 여부로 종료 vs 핸드오프를 구분한다
- 공통 시스템 프롬프트(prefix)와 에이전트별 커스텀 프롬프트(suffix)를 분리해 관리한다
- 리서처 에이전트는 자료 조사만, HTML 에이전트는 파일 생성만 담당하도록 역할을 명시한다
langgraph.json설정 파일로 LangGraph Studio에서 실행할 에이전트를 지정한다- GPT-4 모델을
get_model()함수로 중앙 관리해 에이전트들이 공유한다 - 시각화 결과 품질은 LLM 모델 선택과 시스템 프롬프트 설계에 크게 의존한다
- HTML 제너레이터 에이전트가 시각화 완료 후에도 만족스럽지 않으면 리서처로 되돌릴 수 있다
INSIGHTS
- 에이전트 역할 분리는 시스템 프롬프트로 강제하는 것이 핵심이다. 에이전트가 자신의 범위를 벗어나지 않도록 “이 작업은 하지 말고 넘겨라”고 명시해야 협업이 안정적으로 동작한다.
- 에이전트-핸드오프에서 AI 메시지를 Human 메시지로 변환하는 이유는 다음 에이전트가 이전 결과를 “사용자 지시”로 인식해 자연스럽게 이어서 처리하도록 하기 위해서다. 멀티에이전트 통신의 핵심 패턴이다.
- Command 기반 라우팅은 정적 엣지보다 유연하지만, 각 노드가 “어디로 갈지”를 스스로 결정해야 하므로 시스템 프롬프트 설계 부담이 증가한다.
- 네트워크 패턴 멀티에이전트의 품질 향상은 구조 설계보다 시스템 프롬프트 튜닝과 모델 선택에서 더 큰 영향을 받는다.
QUOTES
- “각각의 에이전트를 하나의 노드로 바라봅니다”
- “리서치 에이전트는 리서치만 해야 하고요. 파일은 파일 생성 에이전트한테 역할을 넘겨 줘야 합니다”
- “AI 메시지를 휴먼 메시지로 변경하는 부분이 있는데요. 이 부분은 다른 에이전트한테 이 작업 결과를 핸드오프를 할 때 해당 메시지를 사람이 요청한 지시로 새롭게 인식하도록”
- “커맨드를 사용해서 그때 상황에 맞춰서 HTML 제너레이터로 보내 줄지 혹은 종료할지를 결정”
- “모델을 바꾸면 또 다른 결과가 나올 거고 또 시스템 프롬프트를 어떻게 작성해 주냐에 따라서 이 보고서의 품질이나 그런 결과들은 또 커스텀이 충분히 가능할 것 같습니다”
REFERENCES
| 이름 | 유형 |
|---|---|
| 공원나연 | person |
| 만들면서 배우는 AI 에이전트 개발 입문+실전 | book |
| LangGraph | framework |
| [[wiki/concepts/LangChain | LangChain]] |
| Tavily-Search | tool |
| GPT-4 | tool |
| LangGraph Studio | tool |
| UV | tool |
FACTS
- 영상은 「만들면서 배우는 AI 에이전트 개발 입문+실전」 도서 7.3절 실습 내용이다
- 네트워크 패턴 멀티에이전트는 리서처(Tavily Search)와 HTML 제너레이터(커스텀 파일툴) 두 노드로 구성된다
- Tavily Search API 키가 필요하며 환경변수에 등록해야 한다
uv run langgraph dev명령으로 LangGraph Studio를 로컬 실행한다- 리서처 에이전트가 “최종 답변” 텍스트를 포함하면 HTML 제너레이터를 거치지 않고 종료된다
- HTML 제너레이터가 완료 후 “최종 답변”을 출력하지 않으면 리서처 노드로 되돌아간다
RECOMMENDATIONS
- 시스템 프롬프트의 suffix 부분에 에이전트 역할 경계를 명확히 작성해 역할 혼재를 방지할 것
get_model()같은 중앙 모델 관리 함수로 멀티에이전트 간 일관된 LLM을 유지할 것- LangGraph Studio를 개발 초기에 활용해 노드 간 메시지 흐름을 시각적으로 검증할 것
- 에이전트 구조를 기본 틀로 삼고 도구(tool)와 시스템 프롬프트만 교체해 다양한 멀티에이전트를 파생시킬 수 있다