상위: Agno
요약
Agno의 Team은 여러 전문화된 에이전트가 협업하여 복잡한 태스크를 해결하는 구조이다. 리더 에이전트가 멤버에게 작업을 위임하고, 3가지 모드(Coordinate, Route, Broadcast)로 협업 패턴을 선택한다. 트리 구조로 서브팀을 중첩할 수 있다.
Team 모드
Coordinate (기본)
리더가 태스크를 분석하고, 적절한 멤버에게 위임하거나 직접 응답한다. 가장 유연한 모드.
Route
요청을 분석하여 가장 적합한 단일 에이전트로 라우팅한다. 고객 지원 트리아지처럼 "누가 처리할지"만 결정한다.
Broadcast
모든 멤버에게 동시에 작업을 위임한다. 여러 관점이 필요하거나 병렬 처리가 필요할 때 사용한다.
코드 예시
from agno.agent import Agent
from agno.team import Team
from agno.models.openai import OpenAIChat
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.tools.yfinance import YFinanceTools
# 전문화된 에이전트들
researcher = Agent(
name="Researcher",
model=OpenAIChat(id="gpt-4o"),
tools=[DuckDuckGoTools()],
instructions="You research topics thoroughly.",
)
analyst = Agent(
name="Financial Analyst",
model=OpenAIChat(id="gpt-4o"),
tools=[YFinanceTools()],
instructions="You analyze financial data.",
)
writer = Agent(
name="Writer",
model=OpenAIChat(id="gpt-4o"),
instructions="You write clear, engaging reports.",
)
# 팀 구성
investment_team = Team(
name="Investment Committee",
mode="coordinate",
members=[researcher, analyst, writer],
instructions="Collaborate to produce investment reports.",
markdown=True,
)
investment_team.print_response(
"Analyze Tesla stock and write a report",
stream=True,
)
언제 Team을 사용하는가
Team이 필요한 경우:
- 태스크가 여러 전문 도구/도메인을 요구
- 단일 에이전트의 컨텍스트 윈도우가 부족
- 에이전트별 역할이 명확히 분리됨
단일 Agent로 충분한 경우:
- 태스크가 한 도메인에 한정
- 토큰 비용이 중요
- 시스템 복잡도를 최소화하고 싶음
Team의 장점
- 전문화: 에이전트가 특정 도메인을 마스터
- 병렬 처리: 독립적 서브태스크를 동시에 처리
- 유지보수: 문제를 특정 에이전트에 격리하여 디버깅
- 확장성: 에이전트를 추가하여 기능 확장 (기존 코드 수정 불필요)
Workflow와의 차이
| Team | Workflow | |
|---|---|---|
| 실행 방식 | 유연한 협업 (동적) | 예측 가능한 파이프라인 (순차적) |
| 적합한 경우 | 복잡하고 동적인 문제 해결 | 정해진 단계를 반복 실행 |
| 제어 | 리더 에이전트가 런타임에 결정 | 개발자가 단계를 미리 정의 |
| 감사 | 동적 의사결정 추적 | 명확한 감사 추적(audit trail) |
관련 개념
- Agno: Agno 프레임워크 MOC
- Agno Agent: 단일 에이전트 구성
- Agno Reasoning Tools: 추론 도구