Serial Agent Pipeline
Serial Agent Pipeline
정의
Serial Agent Pipeline은 여러 에이전트를 정해진 순서대로 직렬 배치해서 실행하는 멀티 에이전트 구조이다.
한 에이전트가 먼저 작업하고, 그 결과가 State에 누적된 뒤 다음 에이전트가 이어서 작업한다.
Mermaid스크롤로 확대 · 드래그로 이동
이번 실습 구조
이번 노트북의 직렬 배치 예시는 다음 구조이다.
Python
실행 흐름:
Mermaid스크롤로 확대 · 드래그로 이동
중요한 코드 포인트
1. 에이전트도 노드가 될 수 있다
Python
create_react_agent()가 반환하는 것은 실행 가능한 LangGraph 객체이다.
따라서 일반 Python 함수뿐 아니라 agent 자체도 add_node()에 넣을 수 있다.
Python
이 말은 다음과 같다.
TEXT
관련: LangGraph create_react_agent, LangGraph Node
2. messages는 에이전트 사이의 전달 통로다
Python
messages는 각 에이전트가 만든 응답을 누적하는 공유 공간이다.
add_messages가 붙어 있기 때문에 각 노드가 반환한 새 메시지는 기존 메시지를 덮어쓰지 않고 뒤에 붙는다.
Mermaid스크롤로 확대 · 드래그로 이동
관련: LangGraph State, LangGraph StateGraph
3. reporter는 에이전트가 아니라 일반 노드다
Python
report_node는 도구를 고르는 agent가 아니다.
역할은 단순하다.
TEXT
즉 news_agent, stock_agent는 각각 도구를 가진 하위 에이전트이고, reporter는 결과를 종합하는 워크플로우 노드이다.
직렬 배치의 장점
- 실행 순서가 명확하다.
- 앞 단계 결과를 뒤 단계가 참고할 수 있다.
- 디버깅이 쉽다.
- 단계별 책임이 분리된다.
- 투자 리포트처럼 "수집 → 조회 → 종합" 흐름에 잘 맞는다.
직렬 배치의 단점
- 앞 단계가 늦으면 전체가 늦어진다.
- 서로 독립적인 작업도 순서대로 실행되어 시간이 더 걸릴 수 있다.
- 앞 단계의 잘못된 결과가 뒤 단계에 영향을 준다.
- State에 messages가 계속 쌓여 컨텍스트가 길어질 수 있다.
병렬 배치와의 차이
직렬 배치:
Mermaid스크롤로 확대 · 드래그로 이동
병렬 배치:
Mermaid스크롤로 확대 · 드래그로 이동
| 구분 | 직렬 배치 | 병렬 배치 |
|---|---|---|
| 실행 순서 | 정해진 순서대로 실행 | 여러 노드가 동시에 시작 가능 |
| 적합한 경우 | 앞 결과가 뒤 작업에 필요할 때 | 작업들이 서로 독립적일 때 |
| 속도 | 느릴 수 있음 | 더 빠를 수 있음 |
| 디버깅 | 쉬움 | 합류 지점 관리 필요 |
| 예시 | 뉴스 수집 후 주가 조회 후 리포트 | 뉴스와 주가를 동시에 수집 후 리포트 |
코드 구현 차이
직렬과 병렬은 tool, agent, State 정의가 거의 같을 수 있다.
차이는 대부분 add_edge()에서 생긴다.
직렬 배치 코드
Python
이 코드는 다음 뜻이다.
TEXT
핵심은 START에서 나가는 edge가 하나라는 점이다.
Mermaid스크롤로 확대 · 드래그로 이동
병렬 배치 코드
Python
이 코드는 다음 뜻이다.
TEXT
핵심은 START에서 나가는 edge가 두 개라는 점이다.
Mermaid스크롤로 확대 · 드래그로 이동
무엇이 같고 무엇이 다른가
같은 부분:
AgentStatemessages: Annotated[..., add_messages]stock_toolnews_toolnews_agent = create_react_agent(...)stock_agent = create_react_agent(...)report_nodebuilder.add_node(...)
다른 부분:
builder.add_edge(...)연결 방식- 실행 순서
- reporter가 결과를 받는 타이밍
실행 순서 차이
직렬:
TEXT
병렬:
TEXT
병렬이라고 해서 코드 줄이 완전히 동시에 실행되는 느낌으로만 이해하면 안 된다.
핵심은 그래프 구조상 news_agent와 stock_agent가 서로의 결과를 기다리는 의존 관계가 없다는 것이다.
언제 쓰면 좋은가
- 각 단계가 이전 단계의 결과를 반드시 참고해야 할 때
- 업무 절차가 명확히 순서화되어 있을 때
- 에이전트 간 의존 관계를 단순하게 유지하고 싶을 때
- 수집, 분석, 작성처럼 파이프라인 구조가 자연스러울 때
한 줄 정리
Serial Agent Pipeline은 여러 에이전트와 노드를
add_edge()로 일렬 연결해, 앞 단계의 메시지 결과를 뒤 단계가 이어받아 처리하게 만드는 LangGraph 멀티 에이전트 구조이다.
관련: