agno 介绍
了解项目的详细信息和使用方法
简介
Agno 是一个轻量级的多模态智能体开发库。它将大语言模型封装为统一接口,并赋予其记忆、知识、工具调用和推理等超能力。
- 快速构建能生成文本、图像、音频和视频的智能体
- 按需添加记忆、知识库、工具和推理能力
- 开源项目,随处可运行
下面是一个能进行网络搜索的智能体示例:
python1from agno.agent import Agent 2from agno.models.openai import OpenAIChat 3from agno.tools.duckduckgo import DuckDuckGoTools 4 5agent = Agent( 6 model=OpenAIChat(id="gpt-4o"), 7 tools=[DuckDuckGoTools()], 8 markdown=True 9) 10agent.print_response("纽约有什么新鲜事?", stream=True)
🚨 开源AI智能体黑客马拉松!🚨
我们联合AI智能体生态伙伴发起全球AI智能体黑客马拉松——欢迎所有开发智能体、RAG系统、工具调用或多智能体系统的开发者、创业团队参与!
💰 最高2万美元奖金池
- 🏅 10名优秀奖:各300美元
- 🥉 10名季军:各500美元
- 🥈 5名亚军:各1000美元
- 🥇 1名冠军:2000美元
- 🏆 总冠军特别奖:5000美元 🏆
🎁 附加奖励
- 前5名项目将入选热门仓库 Awesome LLM Apps
🤝 合作伙伴
📅 活动时间线:
- 4月3日 - 最终日期公布
- 4月10日 - 评奖标准发布
- 4月15日(暂定) - 活动开始
- 5月30日(暂定) - 活动结束
加入我们,开启智能体开发月!
奖金将采取滚动发放机制,直至所有奖项颁发完毕。
⭐ 点击Star关注本仓库获取最新动态
🤝 想成为合作伙伴或评委?
如果你是AI智能体领域企业或有意担任评委,请联系X平台上的 Shubham Saboo 或 Ashpreet Bedi。让我们共同打造最大规模的开源AI智能体黑客马拉松。
核心特性
Agno以简洁、高速和模型无关性著称:
- 闪电速度:智能体创建速度比LangGraph快10000倍(参见性能测试)
- 模型无关:支持任意模型和供应商,无锁定
- 多模态:原生支持文本、图像、音频和视频
- 多智能体:构建专业化智能体团队
- 记忆管理:将智能体会话和状态存入数据库
- 知识库:使用向量数据库实现RAG或动态小样本学习
- 结构化输出:让智能体返回结构化数据
- 实时监控:在agno.com跟踪智能体表现
快速开始
安装
shell1pip install -U agno
什么是智能体?
智能体是能自主解决问题的智能程序。
与传统程序不同,智能体具备记忆、领域知识和工具调用能力(如网络搜索、数据库查询、API调用)。它们能根据上下文和工具返回结果动态调整执行策略。
我们可以用自主程度来划分智能体等级:
- Level 0:无工具的基础推理型智能体
- Level 1:具备自主任务执行工具
- Level 2:整合记忆与推理能力
- Level 3:多智能体协作处理复杂工作流
基础智能体示例
最简单的智能体仅执行推理任务,无工具和记忆功能。
python1from agno.agent import Agent 2from agno.models.openai import OpenAIChat 3 4agent = Agent( 5 model=OpenAIChat(id="gpt-4o"), 6 description="你是一位充满激情的新闻记者,擅长讲故事!", 7 markdown=True 8) 9agent.print_response("告诉我一个纽约的突发新闻故事。", stream=True)
运行前请安装依赖并设置OPENAI_API_KEY
环境变量:
shell1pip install agno openai 2 3export OPENAI_API_KEY=sk-xxxx 4 5python basic_agent.py
带工具的智能体示例
为避免虚构内容,我们为记者智能体添加网络搜索工具:
python1from agno.agent import Agent 2from agno.models.openai import OpenAIChat 3from agno.tools.duckduckgo import DuckDuckGoTools 4 5agent = Agent( 6 model=OpenAIChat(id="gpt-4o"), 7 description="你是一位充满激情的新闻记者,擅长讲故事!", 8 tools=[DuckDuckGoTools()], 9 show_tool_calls=True, 10 markdown=True 11) 12agent.print_response("告诉我一个纽约的突发新闻故事。", stream=True)
安装依赖后运行:
shell1pip install duckduckgo-search 2 3python agent_with_tools.py
现在你将获得真实可靠的新闻报道。
带知识库的智能体示例
智能体可将知识存储在向量数据库中,用于RAG或动态小样本学习。
Agno智能体默认采用Agentic RAG,即自主检索完成任务所需的具体信息。
python1from agno.agent import Agent 2from agno.models.openai import OpenAIChat 3from agno.embedder.openai import OpenAIEmbedder 4from agno.tools.duckduckgo import DuckDuckGoTools 5from agno.knowledge.pdf_url import PDFUrlKnowledgeBase 6from agno.vectordb.lancedb import LanceDb, SearchType 7 8agent = Agent( 9 model=OpenAIChat(id="gpt-4o"), 10 description="你是泰国菜专家!", 11 instructions=[ 12 "优先从知识库检索泰国菜食谱", 13 "若问题更适合网络搜索,则补充网络结果", 14 "知识库信息优先于网络结果" 15 ], 16 knowledge=PDFUrlKnowledgeBase( 17 urls=["https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"], 18 vector_db=LanceDb( 19 uri="tmp/lancedb", 20 table_name="recipes", 21 search_type=SearchType.hybrid, 22 embedder=OpenAIEmbedder(id="text-embedding-3-small"), 23 ), 24 ), 25 tools=[DuckDuckGoTools()], 26 show_tool_calls=True, 27 markdown=True 28) 29 30# 知识库加载完成后可注释掉 31if agent.knowledge is not None: 32 agent.knowledge.load() 33 34agent.print_response("如何制作椰奶鸡汤?", stream=True) 35agent.print_response("泰国咖喱的历史渊源是什么?", stream=True)
安装依赖后运行:
shell1pip install lancedb tantivy pypdf duckduckgo-search 2 3python agent_with_knowledge.py
多智能体团队示例
当工具数量超出语言模型处理能力或涉及不同领域时,建议使用专业化智能体团队分工协作。
python1from agno.agent import Agent 2from agno.models.openai import OpenAIChat 3from agno.tools.duckduckgo import DuckDuckGoTools 4from agno.tools.yfinance import YFinanceTools 5from agno.team import Team 6 7web_agent = Agent( 8 name="网络搜索员", 9 role="执行网络信息检索", 10 model=OpenAIChat(id="gpt-4o"), 11 tools=[DuckDuckGoTools()], 12 instructions="必须标注信息来源", 13 show_tool_calls=True, 14 markdown=True, 15) 16 17finance_agent = Agent( 18 name="金融分析师", 19 role="获取金融数据", 20 model=OpenAIChat(id="gpt-4o"), 21 tools=[YFinanceTools(stock_price=True, analyst_recommendations=True, company_info=True)], 22 instructions="使用表格呈现数据", 23 show_tool_calls=True, 24 markdown=True, 25) 26 27agent_team = Team( 28 mode="coordinate", 29 members=[web_agent, finance_agent], 30 model=OpenAIChat(id="gpt-4o"), 31 success_criteria="包含清晰版块和数据洞察的完整金融报告", 32 instructions=["必须标注信息来源", "使用表格呈现数据"], 33 show_tool_calls=True, 34 markdown=True, 35) 36 37agent_team.print_response("AI半导体公司的市场前景和财务表现如何?", stream=True)
安装依赖后运行:
shell1pip install duckduckgo-search yfinance 2 3python agent_team.py
性能表现
在Agno,我们对性能有着极致追求。因为即便是简单AI工作流也可能需要启动数千个智能体。当用户规模增长时,性能就成为关键瓶颈。Agno专为高性能智能体系统设计:
- 智能体初始化:平均约2微秒(比LangGraph快约10000倍)
- 内存占用:平均约3.75Kib(比LangGraph节省约50倍内存)
测试环境:Apple M4芯片MacBook Pro
虽然智能体运行时受推理速度限制,但我们仍要最大限度减少执行时间、降低内存占用、并行化工具调用。这些优化在规模应用时将产生显著效益。
初始化耗时测试
我们测量带1个工具的智能体启动时间。通过1000次测试获取基准数据:
shell1# 设置虚拟环境 2./scripts/perf_setup.sh 3source .venvs/perfenv/bin/activate 4 5# Agno测试 6python evals/performance/instantiation_with_tool.py 7 8# LangGraph测试 9python evals/performance/other/langgraph_instantiation.py
测试环境:Apple M4芯片MacBook Pro,本仓库Github Action也运行相同测试
测试结果显示:
0.020526秒(LangGraph)/ 0.000002秒(Agno)≈ 10263倍
Agno智能体初始化速度比LangGraph快约10000倍。随着工具数量和知识库的增加,这个优势会更加明显。
内存占用测试
使用tracemalloc
库测量内存。先计算空函数基线内存,再运行智能体1000次计算差值。
LangGraph内存占用 / Agno内存占用 ≈ 54.3倍
LangGraph智能体内存占用是Agno的约50倍。在实际生产环境中运行数千个智能体时,内存优化将直接降低运营成本。
结论
虽然我们提供与其他框架的对比基准,但需要强调的是:准确性和可靠性比速度更重要。
未来几周我们将发布在Github Action上运行的准确性测试报告。由于不同框架设计差异,后续基准测试将主要聚焦Agno自身的性能优化。
Cursor配置技巧
使用Cursor开发Agno智能体时,建议添加官方文档作为知识源:
- 在Cursor设置中找到文档管理选项
- 添加
https://docs.agno.com
到文档URL列表 - 保存设置
现在Cursor将能智能提示Agno文档内容。
文档、社区与更多示例
- 文档:docs.agno.com
- 入门示例:入门指南
- 完整示例库:示例库
- 社区论坛:community.agno.com
- 交流群:Discord
贡献指南
欢迎贡献代码,请阅读贡献指南了解流程。
遥测说明
Agno会匿名统计模型使用情况以优化开发优先级。可通过设置环境变量AGNO_TELEMETRY=false
禁用此功能。