Agno 是一个用 Python 编写的开源 Agent 框架,前身是 2023 年启动的 Phidata,2025 年 1 月正式更名。它解决的核心问题是:LLM 应用开发中模型厂商众多、Agent 编排代码大量重复。Agno 把「模型无关」作为第一设计原则,通过统一的 Model 接口接入 OpenAI、Anthropic、Google Gemini、Mistral、Ollama 等十余家模型提供商,并内置记忆(Memory)、知识库(Knowledge)、工具调用(Tools)与多 Agent 协作能力。与 LangChain 相比,Agno 的概念收敛在少数几个对象上,代码直观、学习成本低;与 LlamaIndex 相比,它不把自己绑定在 RAG 场景,而是把 Agent 作为一等公民。本文按「速览 → 安装 → 上手 → 能力详解 → 生产部署 → 选型对比 → 误区与面试」的顺序展开,读者可在 30 分钟内装好环境并跑通第一个 Agent。

岗位关联

对于 AI 从业者,Agno 是理解「模型无关抽象」与「Agent 编排」最佳实践的轻量入口:掌握它能显著降低多模型 Agent 项目的开发与维护成本,也是进阶复杂框架(LangChain/CrewAI)之前的高性价比前置技能。

目录
  1. 为什么需要 Agno:多模型 Agent 开发的重复劳动
  2. 安装与环境配置:4 步就绪
  3. 快速上手:8 分钟跑通第一个 Agent
  4. 核心能力详解:5 大支柱
  5. 生产部署与监控:从上线到运维
  6. 版本迭代
  7. AI 应用场景
  8. 常见误区
  9. 面试题
工具类型
LLM Agent 应用框架(开源)
开发商
Agno(原 Phidata)
开源协议
MPL-2.0(可商用)
GitHub Stars
无
主要语言
Python
当前版本
0.8.x(截至训练数据最新正式版)
安装方式
pip install agno
官方文档
上手难度
★★☆☆☆(低,一个 Agent 类即上手)
适合人群
LLM/Agent 工程师、RAG 团队、AI 产品开发者
同类工具
LangChain、LlamaIndex、CrewAI
托管服务
无

速览卡是工具类内容的固定首屏模块:30 秒判断「这工具是什么、能不能商用、适不适合我」。

为什么需要 Agno:多模型 Agent 开发的重复劳动

构建 LLM Agent 时,每个模型厂商(OpenAI、Anthropic、Google、Mistral 以及 Ollama 本地模型)都有自己的 SDK、消息格式和工具调用(function calling,即让模型输出结构化调用指令的能力)约定。直接在业务代码里适配这些差异,会产生大量样板代码:手动维护对话历史、自己解析工具调用并回填结果、为每个模型写一套请求构造逻辑。项目一旦需要切换模型或做 A/B 对比,改动面大且容易引入不一致。

Agno 把「模型无关」做成框架的核心:模型只通过统一的 models 接口注入(例如 OpenAIChat、AnthropicChat、Gemini、Ollama),Agent 内部自动完成消息格式转换、工具调用解析与回填、流式输出。切换模型通常只需要替换一个类并重跑,业务代码不动。同时 Agent 类内置短期记忆(会话上下文)、长期记忆(storage 持久化)与知识库(RAG),这些高频能力无需自行实现。

与 LangChain 大量抽象组件不同,Agno 坚持「少即是多」:核心概念只有 Agent、Model、Memory、Knowledge、Tools 五类对象,绝大多数场景从一个 Agent 实例开始。这让它在快速原型和中小型生产服务中特别顺手,代码量直观可审。

安装与环境配置:4 步就绪

第一步:创建并激活虚拟环境,需要 Python 3.9 以上。开发 Agent 应用强烈建议用 venv 隔离依赖,避免与系统 Python 冲突。

第二步:安装 agno 主包。

第三步:按需安装要使用的模型 SDK。Agno 的模型接入是独立子包,用哪个模型装哪个 SDK。

第四步:配置 API Key,可通过环境变量注入,或写进 .env 文件由 python-dotenv 加载。

bash19 行
# 1. 虚拟环境(Windows 用 .venv\Scripts\activate)python -m venv .venvsource .venv/bin/activate # 2. 安装框架本体pip install agno # 3. 按需安装对应模型 SDKpip install openai                # OpenAI 及兼容接口pip install anthropic             # Claudepip install google-generativeai   # Geminipip install ollama                # 本地模型 # 4. 配置 API Key(环境变量方式)export OPENAI_API_KEY="sk-..."export ANTHROPIC_API_KEY="sk-ant-..." # 5. 验证安装python -c "from agno.agent import Agent; print('agno ok')"

快速上手:8 分钟跑通第一个 Agent

最小可用流程不需要任何配置文件:实例化一个 Agent、指定模型、调用 print_response 即可输出回复。第一个示例建议用 gpt-4o-mini(成本低)或本地 Ollama,先验证链路通。

分步操作:

1. 在项目目录创建 .env,写入 OPENAI_API_KEY=sk-...。

2. 按上文安装 agno 与 openai 两个包。

3. 新建 hello_agent.py,粘贴下方最小示例。

4. 运行 python hello_agent.py,终端会流式打印回复。

5. 若输出正常,再改用 run 方法拿返回值做程序化处理。

进阶技巧:给 Agent 挂上工具后,它会自动完成「识别意图 → 调用工具 → 汇总结果」的多轮循环,无需手写 function calling 逻辑:

python16 行
# hello_agent.py —— 最小可用示例(真实 API)from agno.agent import Agentfrom agno.models.openai import OpenAIChat agent = Agent(    model=OpenAIChat(id="gpt-4o-mini"),    description="You are a helpful assistant.",    markdown=True,) # 流式打印回复(终端友好)agent.print_response("用一句话介绍你自己", stream=True) # 编程式获取返回对象resp = agent.run("请返回 JSON:{'ok': true}")print(resp.content)
python10 行
from agno.agent import Agentfrom agno.models.openai import OpenAIChatfrom agno.tools.duckduckgo import DuckDuckGoTools  # 需要 pip install duckduckgo-search agent = Agent(    model=OpenAIChat(id="gpt-4o-mini"),    tools=[DuckDuckGoTools()],    show_tool_calls=True,  # 打印工具调用过程)agent.print_response("搜索 2025 年 AI Agent 框架排名", stream=True)

核心能力详解:5 大支柱

支柱一·模型无关抽象层。Models 子包统一了各厂商接口,切换模型只需更换 model= 参数。除了公有云模型,还支持 Ollama(本地)、OpenRouter(聚合)等;私有化场景可把推理服务包装成 OpenAI 兼容接口接入。适合做多模型 A/B 对比与成本优化。

支柱二·记忆系统。会话内短期记忆默认开启;跨会话长期记忆需配置 storage,内置 SqliteStorage、DynamoDB 等后端;「agentic memory」可自动从对话中提取用户偏好并在后续会话自动应用(如记住用户喜欢简洁回答)。这是 Agno 相比裸调 SDK 的核心优势。

支柱三·知识库 RAG。Knowledge 类负责文档加载与向量化,配合向量数据库(Chroma、Qdrant、PgVector、Pinecone)实现检索增强(RAG,即先检索相关资料再让模型回答)。典型用法:读入 PDF/网页 → 存入向量库 → Agent 在回答前自动检索相关内容、降低幻觉。

支柱四·工具调用与内置 Toolkit。任意 Python 函数加类型注解和 docstring 即可作为工具,框架自动生成 JSON Schema 并完成调用闭环。内置 DuckDuckGo、Shell、File、SQL、Wikipedia、YFinance 等 Toolkit,省去从零封装第三方服务的工作。

支柱五·多 Agent 协作。支持「Agents as Tools」——把整个 Agent 实例作为另一个 Agent 的工具传入;Team 模式可让多个 Agent 分工协作,适用于调研、报表生成等流水线任务。

生产部署与监控:从上线到运维

部署方式一·FastAPI 包装。用 FastAPI 暴露 HTTP 接口,把 Agent 包在 POST 路由中。Agno 的 arun 是异步接口,FastAPI 原生支持;每个会话建议使用独立 Agent 实例或显式传入 session_id,避免状态串扰。

部署方式二·容器与无服务器。将上述应用打成 Docker 镜像,部署到 ECS、GKE 或 Cloud Run。Agno 本体除数据库/向量库外无外部依赖,镜像小、冷启动快,适合按请求弹缩。

可观测性。run 返回 RunResponse,其中 .metrics 含 token 用量、耗时、工具调用次数等结构化数据,可直接采集上报;设置 debug_mode=True 可输出完整内部执行日志,便于排查工具调用链路问题。

<p class="para-label">避坑清单:</p>

<ul class="dash-list"><li>坑 1:高并发下不要共享单个 Agent 的会话状态——Agent 默认按 run 维护上下文,生产服务应为每个会话使用独立实例或传入 session_id,否则对话记忆串线。</li><li>坑 2:切换模型并非零成本——不同模型对 system prompt 与工具调用格式的敏感度差异很大,换模型后必须回归测试 function calling 链路。</li><li>坑 3:长期记忆默认不持久化——不配置 storage 时记忆只存在进程内存,服务重启即丢;生产环境务必配置 SqliteStorage 等后端并做好备份。</li></ul>

python16 行
# serve_agent.py —— 生产最小模板from fastapi import FastAPIfrom pydantic import BaseModelfrom agno.agent import Agentfrom agno.models.openai import OpenAIChat app = FastAPI()agent = Agent(model=OpenAIChat(id="gpt-4o-mini")) class ChatRequest(BaseModel):    message: str @app.post("/chat")async def chat(req: ChatRequest):    resp = await agent.arun(req.message)    return {"answer": resp.content}
维度AgnoLangChainLlamaIndexCrewAI
定位轻量级 Agent 框架,Agent 是一等公民通用 LLM 应用编排框架RAG/数据框架多智能体协作框架
编排范式单一 Agent 类 + Tools/TeamChain/Graph/Agent 多种抽象索引/检索管道 + Agent基于 Crew/Role 的流程编排
类型约束RunResponse 统一返回,Pydantic 结构化输出组件多、返回类型多样Response 对象统一,数据层强Task 输出类型自定义
学习曲线低,一个类跑通大部分场景高,组件概念繁多中,RAG 场景上手快中,需理解 Role/Process
生态集成内置 Toolkit 丰富,模型厂商支持广集成最广、资料最多数据连接器丰富偏少
生产部署轻量易嵌入,无重依赖成熟但需较多取舍RAG 生产方案成熟适合任务流自动化
LicenseMPL-2.0(可商用)MITMITMIT
适合谁追求低维护成本的 Agent 开发者需要深度定制管道的团队知识库/检索增强团队多角色工作流团队

选型建议:核心目标是「快速把 Agent 用起来且代码可维护」,选 Agno;需要深度定制 RAG 数据链路选 LlamaIndex;需要最全的第三方组件生态选 LangChain;要模拟多角色业务流程则优先 CrewAI。四者并非互斥,生产系统常以 Agno 或 LangChain 为骨架。

版本迭代

Agno 起源于 2023 年开源的 Phidata,2025 年 1 月正式更名并迁移仓库。更名后保持高频迭代:核心 API 稳定在「Agent + Model + Memory + Knowledge + Tools」五类对象,迭代重点从模型接入数量转向多 Agent 协作、语音与性能优化。(截至训练数据,可能已有更新版本)

版本时间变化提升
phidata 2.5.x2024-11更名前能力沉淀Agent、多模型接入、知识库 RAG 等能力成型,为更名重构提供基础
agno 0.1.02025-01品牌与 API 重构项目更名 agno,Python 包名由 `phi` 改为 `agno`,模型接入统一重构为 models 子包
agno 0.5.02025-04多智能体与生态完善 Team 多 Agent 协作与 Agents as Tools 模式,扩充模型厂商与内置工具
agno 0.8.02025-06性能与效率聚焦推理 token 消耗与响应速度优化,改善生产运行成本(截至训练数据的最新记录)
结论

Agno 作为框架不参与 MMLU 等模型能力榜单,因此无公开评测分数可比;版本间差异主要体现在工程指标上,官方迭代方向是减少 token 消耗、缩短响应时间与扩充生态。选型建议:新项目使用 0.8.x 及以上版本,更名早期的 0.1.x API 变动频繁,不建议作为基线。

AI 应用场景

多模型切换的企业客服 RAG Agent

阶段:文档智能 / RAG 管道构建

解决的问题:企业客服需要对比 GPT 与 Gemini 的回复质量,并支持切换到本地模型满足数据合规。直接对接多家 SDK 会产生大量重复适配代码;Agno 通过 Model 接口 + Knowledge 向量检索,让一套 Agent 代码即可切换模型。

具体案例:将产品手册 PDF 导入 PDFKnowledgeBase + PgVector 后,客服 Agent 在回答前自动检索相关段落;对比 3 个模型的回答质量只需切换 model= 参数,相比原生 SDK 方案代码量减少约 60%,切换耗时从改动适配层(约 2 天)降到单行代码。

自动化调研与信息汇总 Agent

阶段:Agent 编排 / 工具调用

解决的问题:行业调研需要搜索引擎、网页读取、结构化输出三步串行,手写 function calling 循环繁琐易错。Agno 将 DuckDuckGoTools 等以 JSON Schema 暴露给模型,Agent 自动完成多轮调用与结果汇总。

具体案例:用 Agno 构建的周报调研 Agent 串联「搜索 → 打开链接 → 提取要点 → 输出 Markdown 报告」,实测单次调研耗时从人工约 30 分钟压缩到约 3 分钟,且输出格式由 Pydantic 约束、可直接入库。

本地模型私有化 Agent 服务

阶段:模型私有化部署 / Agent 服务化

解决的问题:数据不能出内网时,需要本地推理 + Agent 编排的组合方案。Agno 支持 Ollama 模型,框架本体无云依赖,可整体内网部署。

具体案例:在内网用 Ollama + agno 构建内部制度问答 Agent,向量库与模型推理全部本地完成,单次问答延迟约 2-5 秒,敏感数据零外流,满足内部合规审计要求。

常见误区

误区Agno 就一个 Agent 类,东西太少了,生产肯定不够用,不如 LangChain 全面。

正解两者设计目标不同。LangChain 追求组件广度,Agno 把高频能力(记忆、知识库、工具、协作)收敛到少量对象上并做深。Agent + RAG + Team 三种组合即可覆盖大多数生产场景,且抽象少意味着出问题时更容易定位、代码可审性更好。

为何常见:用 LangChain 的组件数量来衡量 Agno 的能力,把「抽象少」误认为「能力少」。

误区网上教程都是 phidata,现在叫 agno,是不是换了个新框架?旧代码还能用吗?

正解agno 就是 Phidata 更名后的项目,2025 年 1 月仓库迁移为 agno-agi/agno。核心概念延续但 API 重构:Python 包名从 phi 改为 agno,模型导入路径从 phi.model.openai 改为 agno.models.openai,升级需按迁移指南调整 import。

为何常见:仓库名、包名、官网全部更换,搜索结果的新旧内容混杂,容易误判为两个不相关项目。

误区反正是换 `model` 参数的事,那用哪个都一样,直接选最便宜的。

正解模型无关指的是接口层统一,不代表能力一致。不同模型在指令遵循、工具调用稳定性、中文质量上差异明显,尤其 function calling 的触发率与参数正确率。上线前应针对场景做模型评测,并配置降级策略(如失败时回退到更稳的模型)。

为何常见:把「统一的开发接口」误解为「统一的模型能力」,忽略了模型本身的质量差异。

误区Agent 记得我上次说了什么,重启服务后它应该还记得。

正解默认短期记忆只在进程内,服务重启即丢失。要实现跨会话记忆,必须显式配置 storage(如 SqliteStorage)并传入 session_id,按需开启 agentic memory 的偏好提取。

为何常见:交互中「看起来记得」让用户误以为有持久化,实际只是同一进程内的会话上下文。

误区问题没答好,Agent 应该会自己多跑几轮直到答对为止。

正解Agno 默认 Agent 执行「一次推理 + 工具调用循环」,不会对最终输出做自我反思重试。需要多轮自我修正时,需自行实现循环(如把反思结果再喂回模型)或用工具触发再生成。

为何常见:把「ReAct 风格的工具循环」与「自我反思/重试」混为一谈,前者是工具闭环,后者是额外的推理策略。

面试题

Q1. Agno 的前身是哪个开源项目?

单选题 · easy

  • A.由 LangChain 改名而来
  • B.由 Phidata 改名而来← 正确答案
  • C.由 Haystack 改名而来
  • D.由 Semantic Kernel 改名而来

答案:B。Agno 由 Phidata 于 2025 年 1 月更名而来,仓库同步迁移为 agno-agi/agno。LangChain、Haystack、Semantic Kernel 都是独立发展的框架,与 Agno 无继承关系。

Q2. 安装 Agno 框架的正确命令是?

单选题 · easy

  • A.pip install phidata
  • B.pip install agno← 正确答案
  • C.pip install langchain
  • D.pip install haystack-ai

答案:B。更名后 PyPI 包名为 agno。phidata 是旧包名,langchain 与 haystack-ai 是其他框架的包名,均不正确。

Q3. Agno 采用的开源许可证是?

单选题 · easy

  • A.采用 MIT 宽松许可证
  • B.采用 Apache 2.0 许可证
  • C.采用 MPL-2.0 许可证← 正确答案
  • D.采用 GPL-3.0 许可证

答案:C。Agno 使用 MPL-2.0(Mozilla Public License)文件级开源协议,允许修改后以源码形式提供并商用。MIT 与 Apache 2.0 是其他主流 LLM 框架常用协议,GPL-3.0 具有强传染性。

Q4. 要保存跨会话的长期记忆,需要配置哪个组件?

单选题 · mid

  • A.Model(模型接口)
  • B.Knowledge(知识库)
  • C.Storage(持久化存储)← 正确答案
  • D.Tools(工具集合)

答案:C。跨会话记忆必须由 Storage 后端持久化,如 SqliteStorage。Model 负责模型调用,Knowledge 负责 RAG 检索,Tools 负责工具执行,三者都不承担对话记忆的持久化。

Q5. agent.run("...") 方法的返回值类型是?

单选题 · mid

  • A.返回纯字符串(str)
  • B.返回 RunResponse 对象← 正确答案
  • C.返回 Python 字典
  • D.返回 None 空值

答案:B。run 返回 RunResponse 对象,其 .content 属性为模型输出文本,.metrics 含 token 用量与耗时等结构化数据。直接打印文本应使用 print_response,裸字符串不是返回值类型。

Q6. 将模型从 OpenAI 切换到 Anthropic,最直接的做法是?

单选题 · mid

  • A.重写所有业务代码逻辑
  • B.替换 Agent 的 model 参数← 正确答案
  • C.更换 API Key 即可
  • D.重新安装整个框架

答案:B。模型无关是 Agno 的核心特性,只需把 OpenAIChat 换成 AnthropicChat 并配置对应 API Key,业务代码无需改动。更换 Key 只解决鉴权、不解决模型接入,重写代码与重装框架均无必要。

Q7. 关于 Agno 的 Knowledge 知识库组件,说法正确的有?

多选题 · mid

  • A.支持从 PDF 和网页加载文档← 正确答案
  • B.需要配合向量数据库做检索← 正确答案
  • C.只能使用 OpenAI 的 embedding
  • D.检索结果自动进入回答上下文← 正确答案

答案:ABD。Knowledge 支持 PDF、网页等多种来源,配合 Chroma、PgVector 等向量库完成检索,检索结果会自动拼入上下文供模型作答。embedding 模型可配置多家(OpenAI、Ollama 等),并非只能使用 OpenAI。

Q8. 关于 Agno 生产部署与监控,正确的说法有?

多选题 · hard

  • A.run 结果含 token 用量等 metrics← 正确答案
  • B.高并发场景应为会话独立管理状态← 正确答案
  • C.默认 memory 会自动持久化到磁盘
  • D.可用 FastAPI 异步包装 arun 接口← 正确答案

答案:ABD。RunResponse.metrics 包含 token 与耗时数据;高并发下共享 Agent 实例会导致会话状态串线,应按会话独立管理或传 session_id;arun 是异步接口,可被 FastAPI 直接 await。默认 memory 只存进程内,不会自动持久化,故 C 错。

Q9. 在 Agno 的工具调用流程中,框架自动完成的有?

多选题 · hard

  • A.将函数签名转成 JSON Schema← 正确答案
  • B.解析模型返回的工具调用参数← 正确答案
  • C.执行函数并回填结果到上下文← 正确答案
  • D.自动清洗所有工具的输出数据

答案:ABC。Agno 将带类型注解的 Python 函数自动转为 JSON Schema,解析模型返回的调用参数,执行后把结果回填上下文形成闭环。工具输出是否需要清洗属于业务逻辑,框架不会也无法自动清洗任意工具的返回数据。

Q10. 让一个 Agent 去调用另一个 Agent,推荐的官方方式是?

单选题 · extreme

  • A.用 subprocess 拉起新进程
  • B.将 Agent 实例作为 tool 传入← 正确答案
  • C.通过 HTTP 接口自调用
  • D.复制代码并自行维护两份

答案:B。Agno 官方支持「Agents as Tools」:把 Agent 实例直接放进另一个 Agent 的 tools 列表,由父 Agent 自动决定何时调用子 Agent 并解析其输出。subprocess 与 HTTP 自调用是绕开框架的做法,复制代码则破坏可维护性。