本教程将带你从零开始,一步步构建一个完整的多 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)# 测试搜索Agentprint("\n🔍 测试Web搜索Agent:")search_result = web_search_agent.run("搜索2024年AI芯片的最新发展")print(f"搜索结果: {search_result.content[:200]}...")# 测试新闻Agentprint("\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("👋 再见!")breakif 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 resultexcept Exception as e:print(f"尝试 {attempt + 1} 失败: {e}")if attempt == max_retries - 1:raisereturn 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 DuckDuckGoToolsagent = Agent(name="示例 Agent",role="处理特定任务",model=qwen_model,tools=[DuckDuckGoTools()],instructions="具体的行为指令"
)
Team(团队)
Team 是多个 Agent 的协作容器,负责:
- 协调 Agent 工作:分配任务和管理执行流程
- 信息共享:在 Agent 之间传递信息
- 结果整合:汇总各 Agent 的输出
- 质量控制:确保最终结果符合要求
from agno.team.team import Teamteam = 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 Toolclass 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 协作系统。