Agno 多 Agent 协作框架 - 手把手从零开始教程
本教程详细介绍了如何使用Agno框架构建多Agent协作系统,从创建基础问答Agent到组建专业团队。内容分为四个步骤:首先创建配置模型和简单Agent;然后为Agent添加搜索工具;接着创建多个专业Agent(网络搜索专家、新闻分析师、技术顾问);最后组建Team实现Agent协作。每个步骤都提供完整代码示例、运行方法和预期输出,帮助开发者理解Agno框架的工作原理和团队协作机制。通过本教程,读
本教程将带你从零开始,一步步构建一个完整的多 Agent 协作系统。每一步都有详细的代码示例和解释,让你真正理解 Agno 框架的工作原理。
第一步:创建你的第一个 Agent
让我们从最简单的开始 - 创建一个能回答问题的 Agent。
1.1 创建基础文件
首先创建一个新文件 step1_simple_agent.py
:
from agno import Agent
from agno.models import Qwen
# 第一步:配置模型
qwen = Qwen(
model="qwen2.5-72b-instruct",
api_key="your-api-key-here", # 替换为你的API密钥
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
# 第二步:创建一个简单的Agent
simple_agent = Agent(
name="简单助手",
model=qwen,
instructions="你是一个友好的助手,能回答各种问题。"
)
# 第三步:测试Agent
if __name__ == "__main__":
response = simple_agent.run("你好,请介绍一下自己")
print(f"Agent回复: {response.content}")
1.2 运行第一个Agent
运行这个文件:
python step1_simple_agent.py
预期输出:
Agent回复: 你好!我是一个友好的AI助手,很高兴认识你!我可以帮助你回答各种问题...
1.3 代码解释
- Qwen模型配置:这是我们使用的大语言模型,需要配置API密钥和服务地址
- Agent创建:Agent是最基本的智能体,有名字、模型和指令
- run方法:这是与Agent交互的主要方式
第二步:给 Agent 添加工具
现在让我们给 Agent 添加一些实用的工具,比如搜索功能。
2.1 安装工具依赖
pip install duckduckgo-search
2.2 创建带工具的Agent
创建文件 step2_agent_with_tools.py
:
from agno import Agent
from agno.models import Qwen
from agno.tools.duckduckgo import DuckDuckGoTools
# 配置模型(和第一步相同)
qwen = Qwen(
model="qwen2.5-72b-instruct",
api_key="your-api-key-here",
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
# 创建带搜索工具的Agent
search_agent = Agent(
name="搜索助手",
model=qwen,
tools=[DuckDuckGoTools()], # 添加搜索工具
instructions="""
你是一个专业的搜索助手。
当用户询问最新信息时,请使用搜索工具获取准确的信息。
搜索后,请整理并总结搜索结果。
"""
)
# 测试搜索功能
if __name__ == "__main__":
# 测试1:普通问答(不需要搜索)
print("=== 测试1:普通问答 ===")
response1 = search_agent.run("什么是人工智能?")
print(f"回复: {response1.content}\n")
# 测试2:需要搜索的问题
print("=== 测试2:搜索最新信息 ===")
response2 = search_agent.run("2024年最新的AI技术发展趋势是什么?")
print(f"回复: {response2.content}")
2.3 运行带工具的Agent
python step2_agent_with_tools.py
预期输出:
=== 测试1:普通问答 ===
回复: 人工智能(AI)是计算机科学的一个分支...
=== 测试2:搜索最新信息 ===
回复: 根据我搜索到的最新信息,2024年AI技术发展的主要趋势包括:
1. 大语言模型的持续优化...
2. 多模态AI的突破...
2.4 工具的工作原理
当Agent遇到需要最新信息的问题时,它会:
- 识别需要搜索
- 调用DuckDuckGo搜索工具
- 获取搜索结果
- 整理并回复用户
第三步:创建多个专业Agent
现在我们创建多个各有专长的Agent。
3.1 创建专业Agent团队
创建文件 step3_multiple_agents.py
:
from agno import Agent
from agno.models import Qwen
from agno.tools.duckduckgo import DuckDuckGoTools
# 共享的模型配置
qwen = Qwen(
model="qwen2.5-72b-instruct",
api_key="your-api-key-here",
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
# Agent 1: 网络搜索专家
web_search_agent = Agent(
name="网络搜索专家",
model=qwen,
tools=[DuckDuckGoTools()],
instructions="""
你是一个专业的网络搜索专家。
你的任务是:
1. 根据用户需求进行精准搜索
2. 筛选和整理搜索结果
3. 提供准确、及时的信息
请始终使用搜索工具获取最新信息。
"""
)
# Agent 2: 新闻分析师
news_agent = Agent(
name="新闻分析师",
model=qwen,
tools=[DuckDuckGoTools()],
instructions="""
你是一个专业的新闻分析师。
你的任务是:
1. 搜索和收集相关新闻
2. 分析新闻的重要性和影响
3. 提供深入的新闻解读
4. 识别新闻趋势和模式
请用专业的新闻分析视角来回答问题。
"""
)
# Agent 3: 技术顾问
tech_advisor = Agent(
name="技术顾问",
model=qwen,
instructions="""
你是一个资深的技术顾问。
你的专长包括:
1. 软件开发和架构设计
2. 技术选型和最佳实践
3. 问题诊断和解决方案
4. 技术趋势分析
请提供专业、实用的技术建议。
"""
)
# 测试不同的Agent
def test_agents():
print("=== 测试网络搜索专家 ===")
search_result = web_search_agent.run("搜索2024年Python最新版本的特性")
print(f"搜索专家: {search_result.content}\n")
print("=== 测试新闻分析师 ===")
news_result = news_agent.run("分析最近AI领域的重要新闻")
print(f"新闻分析师: {news_result.content}\n")
print("=== 测试技术顾问 ===")
tech_result = tech_advisor.run("我想开发一个Web应用,应该选择什么技术栈?")
print(f"技术顾问: {tech_result.content}")
if __name__ == "__main__":
test_agents()
3.2 运行多Agent测试
python step3_multiple_agents.py
你会看到每个Agent都有自己的专业特色和回答风格。
第四步:组建Team进行协作
现在是最关键的部分 - 让多个Agent协作完成复杂任务!
4.1 创建Agent团队
创建文件 step4_team_collaboration.py
:
from agno import Agent, Team
from agno.models import Qwen
from agno.tools.duckduckgo import DuckDuckGoTools
# 模型配置
qwen = Qwen(
model="qwen2.5-72b-instruct",
api_key="your-api-key-here",
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
# 创建专业Agent(复用第三步的Agent)
web_search_agent = Agent(
name="Web Search Agent",
model=qwen,
tools=[DuckDuckGoTools()],
instructions="你是网络搜索专家,负责搜索和收集信息。"
)
news_agent = Agent(
name="News Agent",
model=qwen,
tools=[DuckDuckGoTools()],
instructions="你是新闻分析师,负责分析和解读新闻内容。"
)
# 关键步骤:创建Team
research_team = Team(
name="Research Team",
agents=[web_search_agent, news_agent], # 团队成员
instructions="""
你们是一个专业的研究团队。
工作流程:
1. Web Search Agent 负责搜索相关信息
2. News Agent 负责分析和整理信息
3. 团队协作完成深入的研究报告
请确保:
- 信息准确和及时
- 分析深入和专业
- 报告结构清晰
""",
show_chain_of_thought=True # 显示思考过程
)
# 测试团队协作
def test_team_collaboration():
print("=== 团队协作测试 ===")
# 复杂任务:需要搜索+分析
task = "研究2024年人工智能在医疗领域的最新应用和发展趋势"
print(f"任务: {task}\n")
print("团队开始协作...\n")
# 使用Team处理复杂任务
result = research_team.run(task)
print("=== 团队协作结果 ===")
print(result.content)
if __name__ == "__main__":
test_team_collaboration()
4.2 Team协作的工作原理
当你运行这个代码时,你会看到:
- 任务分配:Team自动将任务分配给合适的Agent
- 协作过程:Agent之间会交换信息和结果
- 结果整合:Team将各Agent的工作整合成最终结果
预期输出示例:
=== 团队协作测试 ===
任务: 研究2024年人工智能在医疗领域的最新应用和发展趋势
团队开始协作...
=== 团队协作结果 ===
# 2024年人工智能在医疗领域研究报告
## 最新应用
1. AI辅助诊断系统...
2. 智能药物发现...
3. 个性化治疗方案...
## 发展趋势
1. 多模态AI在医疗影像的应用...
2. 大语言模型在医疗问答的突破...
第五步:完整的实战项目
现在让我们基于 ago_multi_agent.py
创建一个完整的项目。
5.1 完整项目代码
创建文件 step5_complete_project.py
(基于 ago_multi_agent.py
):
from agno import Agent, Team
from agno.models import Qwen
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.tools.reasoning import ReasoningTools
# 配置Qwen模型
qwen = Qwen(
model="qwen2.5-72b-instruct",
api_key="your-api-key-here", # 请替换为你的API密钥
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
# 创建Web搜索Agent
web_search_agent = Agent(
name="Web Search Agent",
model=qwen,
tools=[DuckDuckGoTools()],
instructions="""
你是一个专业的网络搜索专家。
你的职责是:
1. 根据研究需求进行精准的网络搜索
2. 收集相关的、可靠的信息源
3. 整理和筛选搜索结果
4. 为团队提供准确的基础信息
请确保搜索的信息是最新的、权威的。
"""
)
# 创建新闻分析Agent
news_agent = Agent(
name="News Agent",
model=qwen,
tools=[DuckDuckGoTools()],
instructions="""
你是一个资深的新闻分析师和研究员。
你的职责是:
1. 深入分析收集到的信息
2. 识别重要趋势和模式
3. 提供专业的见解和解读
4. 撰写结构化的研究报告
请用批判性思维分析信息,提供有价值的洞察。
"""
)
# 创建推理研究团队
reasoning_research_team = Team(
name="Reasoning Research Team",
agents=[web_search_agent, news_agent],
tools=[ReasoningTools()], # 添加推理工具
instructions="""
你们是一个专业的推理研究团队,专门处理复杂的研究任务。
## 团队协作流程:
1. **信息收集阶段**:Web Search Agent 负责搜索和收集相关信息
2. **深度分析阶段**:News Agent 负责分析信息,识别关键点
3. **推理整合阶段**:使用推理工具进行逻辑分析和结论推导
4. **报告生成阶段**:生成结构化的研究报告
## 质量标准:
- 信息必须准确和最新
- 分析必须深入和专业
- 推理必须逻辑清晰
- 报告必须结构完整
## 输出格式:
请按以下格式输出研究报告:
# 研究报告:[主题]
## 执行摘要
## 关键发现
## 详细分析
## 趋势预测
## 结论和建议
""",
show_chain_of_thought=True
)
# 主函数:演示完整的研究流程
def main():
print("🚀 Agno 多Agent协作系统启动")
print("=" * 50)
# 研究任务列表
research_tasks = [
"分析2024年生成式AI技术的最新发展和商业应用",
"研究量子计算在未来5年的发展前景和挑战",
"调查可持续能源技术的最新突破和投资趋势"
]
for i, task in enumerate(research_tasks, 1):
print(f"\n📋 任务 {i}: {task}")
print("-" * 40)
try:
# 使用团队协作完成研究任务
result = reasoning_research_team.run(task)
print("✅ 研究完成!")
print("📊 研究报告:")
print(result.content)
except Exception as e:
print(f"❌ 任务执行失败: {str(e)}")
print("\n" + "=" * 50)
# 单独测试各个Agent
def test_individual_agents():
print("🧪 测试单个Agent功能")
print("=" * 30)
# 测试搜索Agent
print("\n🔍 测试Web搜索Agent:")
search_result = web_search_agent.run("搜索2024年AI芯片的最新发展")
print(f"搜索结果: {search_result.content[:200]}...")
# 测试新闻Agent
print("\n📰 测试新闻分析Agent:")
news_result = news_agent.run("分析人工智能对就业市场的影响")
print(f"分析结果: {news_result.content[:200]}...")
# 交互式研究模式
def interactive_research():
print("\n🎯 进入交互式研究模式")
print("输入 'quit' 退出")
while True:
user_query = input("\n请输入你想研究的问题: ")
if user_query.lower() == 'quit':
print("👋 再见!")
break
if user_query.strip():
print("\n🔄 团队开始研究...")
try:
result = reasoning_research_team.run(user_query)
print("\n📋 研究结果:")
print(result.content)
except Exception as e:
print(f"❌ 研究失败: {str(e)}")
if __name__ == "__main__":
# 选择运行模式
print("请选择运行模式:")
print("1. 预设任务演示")
print("2. 单个Agent测试")
print("3. 交互式研究")
choice = input("请输入选择 (1/2/3): ")
if choice == "1":
main()
elif choice == "2":
test_individual_agents()
elif choice == "3":
interactive_research()
else:
print("无效选择,运行默认演示")
main()
5.2 运行完整项目
python step5_complete_project.py
运行效果:
🚀 Agno 多Agent协作系统启动
==================================================
📋 任务 1: 分析2024年生成式AI技术的最新发展和商业应用
----------------------------------------
✅ 研究完成!
📊 研究报告:
# 研究报告:2024年生成式AI技术发展分析
## 执行摘要
2024年生成式AI技术呈现爆发式增长...
## 关键发现
1. 大语言模型能力显著提升
2. 多模态AI成为新趋势
3. 企业级应用快速普及
...
常见问题和解决方案
Q1: API密钥配置问题
问题:运行时提示API密钥错误
解决方案:
# 方法1:直接在代码中配置
qwen = Qwen(
model="qwen2.5-72b-instruct",
api_key="sk-your-actual-api-key", # 替换为真实密钥
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
# 方法2:使用环境变量(推荐)
import os
qwen = Qwen(
model="qwen2.5-72b-instruct",
api_key=os.getenv("QWEN_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1"
)
Q2: 工具导入失败
问题:ImportError: No module named 'agno.tools.duckduckgo'
解决方案:
# 安装必要的依赖
pip install agno
pip install duckduckgo-search
Q3: Team协作没有效果
问题:Team运行时只有一个Agent在工作
解决方案:
# 确保Team的instructions明确指定协作流程
team = Team(
name="Research Team",
agents=[agent1, agent2],
instructions="""
明确的协作指令:
1. Agent1负责搜索信息
2. Agent2负责分析信息
3. 两个Agent必须协作完成任务
""",
show_chain_of_thought=True # 显示协作过程
)
Q4: 响应速度慢
问题:Agent响应时间过长
解决方案:
# 优化模型配置
qwen = Qwen(
model="qwen2.5-72b-instruct",
api_key="your-api-key",
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
timeout=30, # 设置超时时间
max_tokens=1000 # 限制输出长度
)
进阶技巧和最佳实践
1. Agent角色设计
# ✅ 好的Agent设计
expert_agent = Agent(
name="数据分析专家",
model=qwen,
instructions="""
你是一个资深的数据分析专家,具有10年以上的行业经验。
你的专长:
- 统计分析和数据挖掘
- 商业智能和报表分析
- 预测建模和趋势分析
工作风格:
- 严谨、客观、基于数据
- 提供可操作的建议
- 用图表和数字说话
"""
)
# ❌ 不好的Agent设计
bad_agent = Agent(
name="助手",
model=qwen,
instructions="你是一个助手" # 太模糊
)
2. Team协作优化
# 高效的Team设计
optimized_team = Team(
name="产品研发团队",
agents=[market_researcher, tech_analyst, product_manager],
instructions="""
## 协作流程(严格按顺序执行):
### 第一阶段:市场调研
- Market Researcher: 调研市场需求和竞品
- 输出:市场调研报告
### 第二阶段:技术分析
- Tech Analyst: 基于市场报告分析技术可行性
- 输出:技术方案建议
### 第三阶段:产品规划
- Product Manager: 整合前两阶段结果,制定产品规划
- 输出:完整的产品规划文档
## 质量要求:
- 每个阶段必须有明确的输出
- 后续阶段必须基于前面的结果
- 最终输出必须包含所有阶段的关键信息
"""
)
3. 错误处理和重试机制
def robust_agent_call(agent, query, max_retries=3):
"""带重试机制的Agent调用"""
for attempt in range(max_retries):
try:
result = agent.run(query)
if result and result.content:
return result
except Exception as e:
print(f"尝试 {attempt + 1} 失败: {e}")
if attempt == max_retries - 1:
raise
return None
# 使用示例
try:
result = robust_agent_call(my_agent, "复杂的查询")
print(result.content)
except Exception as e:
print(f"所有尝试都失败了: {e}")
总结
通过这个手把手的教程,你已经学会了:
✅ 你现在掌握的技能:
- 基础Agent创建 - 从零开始创建智能Agent
- 工具集成 - 给Agent添加搜索等实用工具
- 多Agent设计 - 创建专业化的Agent团队
- Team协作 - 实现真正的多Agent协作
- 完整项目 - 构建生产级的多Agent系统
🚀 下一步建议:
-
实践项目:
- 创建自己的专业Agent(如代码审查、文档生成等)
- 构建特定领域的研究团队
- 开发自动化工作流程
-
深入学习:
- 探索更多工具集成
- 学习自定义工具开发
- 研究高级协作模式
-
生产部署:
- 添加日志和监控
- 实现API接口
- 优化性能和成本
💡 关键要点回顾:
- Agent = 模型 + 指令 + 工具
- Team = 多个Agent + 协作指令
- 成功的关键在于清晰的角色定义和协作流程
- 从简单开始,逐步增加复杂性
现在你已经具备了使用Agno框架构建强大多Agent系统的能力!开始创建你自己的AI助手团队吧! 🎉
多 Agent 协作的优势
- 任务分工明确:每个 Agent 专注于特定领域,提高专业性
- 并行处理能力:多个 Agent 可以同时处理不同任务
- 容错性强:单个 Agent 失败不会影响整个系统
- 可扩展性好:可以轻松添加新的 Agent 来扩展功能
- 协作智能:通过 Team 机制实现智能体间的信息共享和协调
适用场景
- 复杂研究任务(如市场分析、技术调研)
- 多源信息整合(如新闻聚合、数据分析)
- 内容生成与处理(如文档生成、翻译)
- 决策支持系统
- 自动化工作流程
环境配置
安装依赖
# 安装 Agno 框架
pip install agno
# 安装相关依赖
pip install duckduckgo-search
API 密钥配置
import os
# 配置通义千问 API 密钥
os.environ["DASHSCOPE_API_KEY"] = "your-api-key-here"
# 其他可能需要的 API 密钥
# os.environ["OPENAI_API_KEY"] = "your-openai-key"
# os.environ["ANTHROPIC_API_KEY"] = "your-anthropic-key"
基础设置
确保你的环境支持:
- Python 3.8+
- 稳定的网络连接(用于 API 调用)
- 足够的内存和计算资源
核心概念
Agent(智能体)
Agent 是 Agno 框架中的基本执行单元,每个 Agent 都有:
- 名称和角色:定义 Agent 的身份和职责
- 模型:使用的 AI 模型(如 Qwen、GPT 等)
- 工具:Agent 可以使用的外部工具
- 指令:指导 Agent 行为的规则和要求
from agno.agent import Agent
from agno.models.qwen import Qwen
from agno.tools.duckduckgo import DuckDuckGoTools
agent = Agent(
name="示例 Agent",
role="处理特定任务",
model=qwen_model,
tools=[DuckDuckGoTools()],
instructions="具体的行为指令"
)
Team(团队)
Team 是多个 Agent 的协作容器,负责:
- 协调 Agent 工作:分配任务和管理执行流程
- 信息共享:在 Agent 之间传递信息
- 结果整合:汇总各 Agent 的输出
- 质量控制:确保最终结果符合要求
from agno.team.team import Team
team = Team(
name="协作团队",
mode="coordinate", # 协作模式
members=[agent1, agent2],
instructions=["团队协作指令"]
)
Tools(工具)
工具为 Agent 提供外部能力:
- DuckDuckGoTools:网络搜索功能
- ReasoningTools:推理和分析工具
- 自定义工具:根据需求开发的专用工具
Model(模型)
模型是 Agent 的"大脑",支持多种 AI 模型:
- Qwen:通义千问模型
- OpenAI GPT:OpenAI 的 GPT 系列
- Claude:Anthropic 的 Claude 模型
代码详解
基于 ago_multi_agent.py
的完整代码分析:
1. 导入必要模块
import os
from agno.agent import Agent
from agno.models.qwen import Qwen
from agno.team.team import Team
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.tools.reasoning import ReasoningTools
2. 配置模型
# 配置 API 密钥
os.environ["DASHSCOPE_API_KEY"] = "your-api-key"
# 创建 Qwen 模型实例
qwen = Qwen(
id="qwen-flash", # 模型标识符
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
top_p=0.7, # 控制生成多样性
temperature=0.95, # 控制随机性
)
参数说明:
id
:模型标识符,选择具体的模型版本base_url
:API 服务地址top_p
:核采样参数,值越小生成越确定temperature
:温度参数,值越高生成越随机
3. 创建专门化 Agent
Web 搜索 Agent
web_agent = Agent(
name="Web Search Agent",
role="处理网络搜索请求和一般研究",
model=qwen,
tools=[DuckDuckGoTools()],
instructions="始终包含来源",
add_datetime_to_instructions=True,
debug_mode=True,
)
新闻 Agent
news_agent = Agent(
name="News Agent",
role="处理新闻请求和时事分析",
model=qwen,
tools=[DuckDuckGoTools(search=True, news=True)],
instructions=[
"使用表格显示新闻信息和发现。",
"明确说明来源和发布日期。",
"关注提供当前和相关的新闻见解。",
],
add_datetime_to_instructions=True,
debug_mode=True,
)
配置参数详解:
name
:Agent 的名称标识role
:Agent 的角色描述model
:使用的 AI 模型tools
:可用工具列表instructions
:行为指令(可以是字符串或列表)add_datetime_to_instructions
:是否添加时间信息debug_mode
:是否启用调试模式
4. 创建协作团队
reasoning_research_team = Team(
name="Reasoning Research Team",
mode="coordinate", # 协作模式
model=qwen,
members=[web_agent, news_agent],
tools=[ReasoningTools(add_instructions=True)],
instructions=[
"协作提供全面的研究和新闻见解",
"考虑当前事件和热门话题",
"使用表格和图表清晰专业地展示数据",
"以结构化、易于遵循的格式呈现发现",
"仅输出最终的综合分析,而不是单个代理响应",
],
markdown=True,
show_members_responses=True,
enable_agentic_context=True,
add_datetime_to_instructions=True,
success_criteria="团队已提供完整的研究分析,包括数据、可视化、趋势评估和基于当前信息和可靠来源的可操作见解。",
debug_mode=True,
)
Team 参数详解:
mode
:协作模式(coordinate、sequential、parallel 等)members
:团队成员 Agent 列表tools
:团队级别的工具markdown
:是否使用 Markdown 格式输出show_members_responses
:是否显示各成员的响应enable_agentic_context
:是否启用智能体上下文success_criteria
:成功标准定义
5. 执行任务
if __name__ == "__main__":
reasoning_research_team.print_response(
"""使用中文输出,研究并比较可再生能源的最新发展:
1. 获取可再生能源创新的最新消息
2. 分析可再生能源领域的最新发展
3. 比较不同的可再生能源技术
4. 推荐值得关注的未来趋势""",
stream=True,
show_full_reasoning=True,
stream_intermediate_steps=True,
)
执行参数说明:
stream
:是否流式输出结果show_full_reasoning
:是否显示完整推理过程stream_intermediate_steps
:是否流式显示中间步骤
实战示例
示例 1:创建单个 Agent
from agno.agent import Agent
from agno.models.qwen import Qwen
from agno.tools.duckduckgo import DuckDuckGoTools
# 创建模型
model = Qwen(id="qwen-flash")
# 创建专门的研究 Agent
research_agent = Agent(
name="Research Assistant",
role="专业研究助手",
model=model,
tools=[DuckDuckGoTools()],
instructions=[
"提供准确、详细的研究信息",
"引用可靠来源",
"以结构化方式组织信息"
]
)
# 使用 Agent
response = research_agent.run("研究人工智能在医疗领域的应用")
print(response.content)
示例 2:组建 Agent 团队
# 创建多个专门化 Agent
data_agent = Agent(
name="Data Analyst",
role="数据分析专家",
model=model,
tools=[DuckDuckGoTools()],
instructions="专注于数据收集和统计分析"
)
report_agent = Agent(
name="Report Writer",
role="报告撰写专家",
model=model,
instructions="将分析结果整理成专业报告"
)
# 创建协作团队
analysis_team = Team(
name="Analysis Team",
mode="sequential", # 顺序执行模式
members=[data_agent, report_agent],
instructions=[
"首先收集和分析数据",
"然后生成综合报告",
"确保报告专业且易懂"
]
)
# 执行团队任务
result = analysis_team.run("分析2024年电商市场趋势")
示例 3:配置不同协作模式
# 并行模式:多个 Agent 同时工作
parallel_team = Team(
name="Parallel Research Team",
mode="parallel",
members=[web_agent, news_agent],
instructions="同时进行网络搜索和新闻分析"
)
# 协调模式:智能分配任务
coordinate_team = Team(
name="Coordinate Team",
mode="coordinate",
members=[web_agent, news_agent],
instructions="根据任务需求智能分配工作"
)
最佳实践
Agent 设计原则
-
单一职责原则
# 好的设计:专门化 Agent translation_agent = Agent( name="Translator", role="专业翻译", instructions="只负责文本翻译任务" ) # 避免:功能过于复杂的 Agent # complex_agent = Agent( # name="Everything Agent", # role="处理所有任务" # 不推荐 # )
-
清晰的角色定义
agent = Agent( name="Market Analyst", role="专注于市场趋势分析和预测", instructions=[ "分析市场数据和趋势", "提供基于数据的预测", "使用图表和可视化展示结果" ] )
-
合适的工具配置
# 根据 Agent 职责配置相应工具 search_agent = Agent( name="Search Specialist", tools=[DuckDuckGoTools(search=True, news=True)], instructions="专门负责信息搜索和收集" )
Team 协作模式选择
-
Sequential(顺序模式)
- 适用于:有明确先后顺序的任务
- 示例:数据收集 → 分析 → 报告生成
-
Parallel(并行模式)
- 适用于:可以同时进行的独立任务
- 示例:多源信息收集、多角度分析
-
Coordinate(协调模式)
- 适用于:需要智能任务分配的复杂场景
- 示例:综合研究、多维度分析
错误处理
try:
result = team.run(task)
if result.success:
print(f"任务完成:{result.content}")
else:
print(f"任务失败:{result.error}")
except Exception as e:
print(f"执行错误:{e}")
# 实施备用方案
性能优化
-
合理设置模型参数
# 平衡性能和质量 model = Qwen( temperature=0.7, # 适中的随机性 top_p=0.9, # 适中的多样性 )
-
启用调试模式进行开发
agent = Agent( debug_mode=True, # 开发时启用 # debug_mode=False, # 生产时关闭 )
-
合理使用流式输出
# 对于长时间任务,使用流式输出提升用户体验 team.print_response( task, stream=True, stream_intermediate_steps=True )
扩展应用
自定义工具
from agno.tools.base import Tool
class CustomAnalysisTool(Tool):
def __init__(self):
super().__init__(name="Custom Analysis")
def analyze_data(self, data):
# 自定义分析逻辑
return f"分析结果:{data}"
# 在 Agent 中使用自定义工具
custom_agent = Agent(
name="Custom Agent",
tools=[CustomAnalysisTool()],
instructions="使用自定义工具进行分析"
)
复杂任务分解
# 将复杂任务分解为多个子任务
def complex_research_workflow(topic):
# 第一阶段:信息收集
collection_team = Team(
name="Information Collection",
members=[web_agent, news_agent],
mode="parallel"
)
raw_data = collection_team.run(f"收集关于{topic}的信息")
# 第二阶段:数据分析
analysis_agent = Agent(
name="Data Analyzer",
instructions="分析收集到的数据"
)
analysis_result = analysis_agent.run(f"分析数据:{raw_data}")
# 第三阶段:报告生成
report_agent = Agent(
name="Report Generator",
instructions="生成最终报告"
)
final_report = report_agent.run(f"生成报告:{analysis_result}")
return final_report
实际项目应用
新闻聚合系统
news_system = Team(
name="News Aggregation System",
members=[
Agent(name="News Collector", tools=[DuckDuckGoTools(news=True)]),
Agent(name="Content Analyzer", instructions="分析新闻内容"),
Agent(name="Summary Generator", instructions="生成新闻摘要")
],
mode="sequential",
instructions="收集、分析并总结最新新闻"
)
市场研究系统
market_research_system = Team(
name="Market Research System",
members=[
Agent(name="Data Collector", tools=[DuckDuckGoTools()]),
Agent(name="Trend Analyzer", instructions="分析市场趋势"),
Agent(name="Report Writer", instructions="撰写研究报告")
],
mode="coordinate",
instructions="进行全面的市场研究分析"
)
总结
Agno 多 Agent 协作框架提供了一个强大而灵活的平台,用于构建智能化的多智能体系统。通过合理的 Agent 设计、Team 协作和工具配置,可以实现复杂任务的自动化处理。
关键要点:
- 遵循单一职责原则设计 Agent
- 根据任务特点选择合适的协作模式
- 合理配置模型参数和工具
- 实施适当的错误处理和性能优化
- 根据实际需求扩展和定制功能
通过本教程的学习和实践,你应该能够熟练使用 Agno 框架构建自己的多 Agent 协作系统。
更多推荐
所有评论(0)