想象你搬进新家,墙上的插座已经预留好了,但你手头的设备五花八门:老式两脚插头、圆脚插头、USB-C 充电器……如果每个设备都要专属插座,家里会变成盘丝洞。Agno 要做的,就是那个“什么插头都能插”的万能插座——它不关心你用的是哪款手机,只保证电流稳定送达。 在 AI 领域,“插头”就是各大模型厂商的 API,比如 OpenAI 的 GPT、Anthropic 的 Claude、Google 的 Gemini。很多 Agent 框架深度绑定某一家模型,就像只认一种插头的专一插座;而 Agno 偏把自己做得极简,只定义一套通用的“取电接口”,让任何模型插上来就能干活。它还提供工具扩展、记忆存储,让开发者像拼插座面板一样,快速组装出能查天气、能上网搜索、能处理复杂对话的 AI 智能体。

岗位关联

对 AI 应用开发者来说,掌握 Agno 意味着用最少的代码、不绑定任何模型厂商,快速交付可维护的 Agent 应用——这是把“大模型能力”转化为“产品功能”的一把轻量钥匙。

目录
  1. 可视化演示
  2. 设计理念
  3. 模型无关
  4. 轻量特性
  5. Agent构建
  6. 工具集成
  7. 存储记忆
  8. 框架对比
  9. 快速上手
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

展示Agno框架的模型无关架构、主流框架对比与工具集成能力,支持模式切换动态演示Agent框架的核心设计理念。

本节配有交互动效(进入视口后自动加载,约 3KB)。

Agno模型无关架构 多LLM统一接入层 Agno核心路由与调度 Agent = Model + Tools + Memory 模型无关设计实现LLM自由切换

设计理念

装修新家时,你可能见过两种思路:一种是装“全屋智能中控”,把灯光、空调、窗帘全部接入一个复杂的中央系统,功能强大但布线繁琐、排查故障困难;另一种是只装一排可靠的插座,每个插座各司其职,坏了哪一个单独换掉就行。Agno 的设计者显然偏爱后者。Agno 最早源于 Phidata 项目,它的目标不是做一个“包罗万象的操作系统”,而是做一个“简单透明、各模块可自由组合”的轻量底座。

简单意味着什么?意味着别人用一段晦涩难懂的抽象层才能实现的功能,在 Agno 里就是几行直白的 Python。透明意味着你随时能打开源码看清楚 Agent 内部发生了什么,而不是面对一个“黑盒魔法箱”。模块化则像插座面板上的每个插孔——模型、工具、存储都是独立部件,按需拼装。

这种理念在工程上表现为“最小依赖”:Agno 的核心不强制绑定任何第三方重库,装什么模型插件就用什么能力,没装的部分绝不来打扰你。很多框架为了“全能”而塞进大量用不上的模块,Agno 的选择是保持骨架精简。

说到底,设计 Agno 的人相信:墙上的插座不需要智能,它只需要可靠。把“智能”留给插上去的设备,把“简单”留给开发者,这正是 Agno 最核心的精神底色。

模型无关

出差到国外,你发现插座孔型不对——这时候你需要的是一个“转换插头”:无论当地是两脚扁孔还是三脚圆孔,转换插头都能让你的充电器正常工作。Agno 的“模型无关”设计,本质就是这样一个国际通用转换头。它不关心你用的模型叫 GPT 还是 Claude,只定义一个标准的“取电接口”。

在技术上,这个标准接口就是 Agno 的 Model 抽象基类。OpenAI、Anthropic、Google 等各家模型,都被包装成实现同一接口的适配器(如 OpenAIChat、Claude)。无论底层调用方式怎么变,上层 Agent 永远只用一套方法,就像插座永远只用一种孔型规格。

这个模型的响应过程,可以简化为如下对应关系:

更妙的是,切换模型只需要改一行配置:Agent(model=OpenAIChat(...)) 换成 Agent(model=Claude(...)),其余逻辑原封不动。这就是“模型无关”带来的最大红利——模型是产品里最容易被替换的零件,而 Agno 让这个替换变成拔插头、换插头、再插上,三秒钟完工。

response=Models(query)\text{response} = \text{Model}_{s}\left(\text{query}\right)
公式想表达的是:给定一个查询(query),编号为 s 的某个模型会产出一个回复(response)。s 换成谁,输出就来自谁——框架代码本身不用改。
  1. 模型(Model_s)下标 s 代表模型编号,例如 s=1 表示 GPT、s=2 表示 Claude。它相当于“转换插头”内部已适配好的插座规格。
    Models\text{Model}_{s}
  2. 查询输入(query)用户发来的问题文本,相当于你要传输的“电能”,是整套系统的输入起点。
    query\text{query}
  3. 响应输出(response)模型返回的最终文本,是插座送出的“电流”,也就是用户看到的答案。
    response\text{response}

轻量特性

你出门旅行会带什么充电装备?有人拖着一个全功能充电站,有人只揣一枚口红大小的氮化镓充电头。Agno 就是后者。它不追求“你需要的我都有”,而是追求“你需要的我刚好够”——安装体积小、依赖精简、启动迅速,像一枚轻巧的充电头,塞进任何项目的口袋里都不觉得重。

轻量体现在三个可感知的层面。第一是代码量:构建一个基础 Agent 往往几行代码就够,没有冗长的配置样板;第二是依赖:核心库不捆绑一堆重型第三方组件,按需安装 agno[openai]、agno[anthropic] 等插件式依赖;第三是学习成本:因为抽象层薄,新手翻一翻源码就能理解运行机制,而不用在一堆文档和概念术语里绕圈子。

这种轻量还带来了实际的运维收益。容器镜像更小、冷启动更快、依赖冲突更少。在微服务架构里,一个轻量 Agent 服务可以像一个小型工具函数一样被快速部署和横向扩展,而不是动辄拉起一个“框架全家桶”。

当然,轻量不是简陋。Agno 通过模块化把“瘦”和“强”统一起来:核心骨架轻,但工具、存储、向量库等扩展模块随时插拔。就像那枚小充电头虽然小巧,却能通过转接线同时给手机、耳机、手表供电——轻,但不代表无能为力。

Agent构建

有了插座,有了插头,把它们组合起来才是一个完整的充电系统。在 Agno 里,Agent 类就是这个“系统”的化身——它把模型、工具、存储全部收纳进一个对象,并负责让电流按正确的回路流动。这个电流回路,就是 Agent 的任务循环:接收消息 → 模型推理 → 决定是否调用工具 → 把结果回传 → 生成最终回复。

你可以把 Agent 想象成一个训练有素的接线员:用户打来电话(消息),接线员判断问题(推理),如果需要查资料就拿起工具手册(工具调用),查到后整理成答案讲给用户(回复)。整个过程循环往复,直到问题解决。

用状态转移的语言来描述这个循环:

Agno 的 Agent 还内置了对话管理能力:你既可以用 print_response() 快速体验,也可以拿到完整响应对象做二次开发。会话存储则可选地挂接进来,让 Agent 记住“昨天聊到哪了”。这一切都被收纳在同一个类里,体验就像把一个插座面板整体装上墙——正反面线都接好了,你只管插设备。

st+1=A(st, msgt, tools)s_{t+1} = \mathcal{A}\left(s_t,\ \text{msg}_t,\ \text{tools}\right)
公式表示:Agent 类 A 在已有状态 s_t 的基础上,结合当前消息 msg_t 和工具集 tools,推导出新的状态 s_{t+1}。每一步对话都让状态向前滚动一步。
  1. 状态(s_t)t 时刻的对话上下文,包括历史消息和中间结果,相当于接线员脑中的“谈话记录”。
    sts_t
  2. 消息(msg_t)用户在 t 时刻发来的最新一条输入,是触发本次循环的“来电”。
    msgt\text{msg}_t
  3. 工具集(tools)Agent 可调用的函数集合,相当于接线员手边的资料库和打电话权限。
    tools\text{tools}
  4. 状态更新(s_{t+1})Agent 在推理和工具执行后产出的新状态,它包含了本轮的新信息,等待下一轮循环继续消费。
    st+1=A(⋅)s_{t+1} = \mathcal{A}\left(\cdot\right)

工具集成

现代插座面板早已不是单纯的取电口——它上面还有 USB 口、甚至 SATA 数据接口,插上之后不仅能充电,还能传数据。Agno 的工具集成就是 Agent 的“数据接口”:让模型不只会说话,还能真正做事——查天气、算数学、调数据库、发网络请求。

在 Agno 中,把任意 Python 函数变成工具只需要两步:定义函数,把它放进 tools 参数列表。剩下的事情由框架接手:当模型觉得需要外部能力时,会自动生成调用参数,框架自动执行函数,再把结果回传给模型继续推理。你不需要写任何解析逻辑,Agno 已经把这条“数据回路”焊死了。

整个调用链可以用两步公式概括:

这套机制的工程价值在于“自动”二字。模型自己决定何时调用工具、传什么参数,开发者无需维护一套硬编码的 if-else 分发逻辑。Agno 内置了不少常用工具(如 DuckDuckGo 搜索、yfinance 行情),但真正强大的,是你把公司内部的 API 也包装成这样的“USB 口”——业务流程与模型能力瞬间打通。

tool_result=f(args)\text{tool\_result} = f\left(\text{args}\right)
final=Model(context⊕tool_result)\text{final} = \text{Model}\left(\text{context} \oplus \text{tool\_result}\right)
第一行:工具函数 f 接收模型生成的参数 args,返回结果 tool_result。第二行:模型把原始上下文与工具结果拼接(⊕)起来,继续推理出最终答案 final。这就像接线员先翻查资料,再结合通话内容回答用户。
  1. 工具函数(f)你写的普通 Python 函数,比如“查询天气”“计算圆面积”,它负责完成一项具体任务。
    f(args)f\left(\text{args}\right)
  2. 工具结果(tool_result)函数返回的字符串或结构化数据,是模型此前不知道的“外部信息”。
    tool_result\text{tool\_result}
  3. 上下文拼接(⊕)把原始对话内容和工具结果合并到同一个上下文中,让模型在完整信息下做判断。⊕ 表示合并操作。
    context⊕tool_result\text{context} \oplus \text{tool\_result}
  4. 最终回答(final)模型结合新信息生成的最终回复,相当于接线员把查到的资料翻译成用户听得懂的话。
    final\text{final}

存储记忆

插座不会记住你昨晚在哪充电,但一个好用的房间,会在床头固定留一个充电位。Agno 的存储与记忆模块,做的就是这样一件事:给 Agent 装一个“床头柜”,让它记得用户是谁、聊过什么、上次任务进行到哪一步。这不是魔法,而是一套可插拔的存储接口。

Agno 的 Storage 抽象层允许你把会话历史持久化到不同后端:内置的 SqliteStorage 用本地 SQLite 文件存储,MemoryStorage 适合临时测试,你也可以接入自己的数据库实现。每个会话用 session_id 标识,就像不同的“床头柜抽屉”分别对应不同用户。

当 Agent 需要恢复状态时,它会把该会话的历史消息重新加载进上下文:

有了记忆,Agent 才真正具备“用户粘性”:它能回答“我上周问的那个问题后来怎么样了”,能在客服场景中无缝接续上一通电话的内容。Agno 把这份记忆也做成了“插座”——不用时插拔自如,用的时候随时从档案柜里抽出记录。

contextt=Storage(session_id)∪historyt\text{context}_t = \text{Storage}\left(\text{session\_id}\right) \cup \text{history}_t
公式表示:t 时刻的完整上下文,等于存储系统中该会话 ID 对应的历史消息,与当前轮次新增消息的并集。存储像一座档案柜,每一格抽屉都完整记录一个用户的对话轨迹。
  1. 存储系统(Storage)负责读写会话数据的组件,可以理解为酒店的“档案柜”,按房间号存放谈话记录。
    Storage(session_id)\text{Storage}\left(\text{session\_id}\right)
  2. 会话 ID(session_id)唯一标识一次对话的编号,相当于档案柜上的抽屉标签。
    session_id\text{session\_id}
  3. 历史合并(∪)把档案柜里的旧记录与当前新消息汇合,∪ 表示取两者的并集,构成完整上下文。
    ∪ historyt\cup \ \text{history}_t
  4. 当前上下文(context_t)最终交给模型的全部信息,它让 Agent 的回复有“记忆”、有连贯性。
    contextt\text{context}_t

框架对比

装修市场上,插座方案五花八门:有人喜欢全屋智能中控,有人喜欢模块化自由组装,还有人直接雇一支装修团队事事代劳。Agent 框架的世界也一样。和 Agno 同台竞技的,是几套风格迥异的方案,理解它们的差异,才能选对适合自己的装修队。

LangChain 像“全屋智能中控”,功能覆盖链式调用、记忆、检索、Agent 编排,生态庞大而全面,但也因此抽象层级多、学习曲线陡峭。LangGraph 则更像“模块化管道系统”,把 Agent 流程建模成显式的图结构,适合复杂状态机和精细控制,但配置成本高。CrewAI 走“多角色协作”路线,好比一队各司其职的电工、木工同时进场,适合模拟多 Agent 分工,却未必是单 Agent 任务的最简解。至于 OpenAI Agent SDK,它紧贴 OpenAI 自家模型,方便但“插座孔型”是专属的。

Agno 的差异化定位非常清晰:最轻、最透明、模型无关。它不给用户强加复杂的图结构或多角色协作模式,而是专注于把“单个 Agent + 工具 + 存储”这个最常见场景打磨到极致。如果你的需求是做多步骤有向图的复杂流程,LangGraph 可能是更好的选择;但如果你只想快速构建一个能对话、能调用工具的 Agent,Agno 的“即插即用”会显得格外清爽。

选框架不是选最好,而是选最合适。全屋智能中控适合大宅豪装,一枚便携充电头则适合经常出差的人。Agno 的适用场景,正是那些希望掌控细节、不想要太多魔法、把模型当作可替换零件的开发者。

快速上手

好的插座从来不需要说明书——看一眼孔型就能把插头怼进去。Agno 的上手体验也是这个调性:安装一个包、导入一个类、传几个参数,Agent 就跑起来了。对小白来说,这是最友好的一课。

第一步是安装,一行命令完成:pip install agno,如果需要 OpenAI 模型再补上一个 agno[openai]。第二步是准备 API Key,通过环境变量 OPENAI_API_KEY 配置。第三步就是写核心代码——创建一个 Agent 实例并指定模型,然后调用 print_response() 把问题丢给它。整个过程不超过十行代码,且不需要理解任何框架内部原理。

如果还要接入工具,只需把自定义函数放进 tools 列表;想要记忆,加一个 storage 参数。Agno 把复杂度全部收敛到参数配置里,让“连接工具”“保存会话”这样的高级需求,也像换插头一样直观。你可以像搭积木一样,从零搭建一个带搜索能力、带数据库查询、带多轮记忆的完整 Agent,而每块积木的接口都是同一套风格。

快速上手不等于“玩具级”。恰恰相反,Agno 允许你逐渐深入:查看源码理解每个环节、自定义 Model 适配新厂商、实现自己的存储后端。它像一枚打开就能用的插座,但你随时可以拆开面板看看里面的接线——看清了,才能放心把重要的设备插上去。

AI 应用场景

智能客服机器人快速迭代

阶段:模型选择与替换、Agent 构建

解决的问题:传统客服系统开发周期长,且直接使用厂商 SDK 会导致业务代码与模型厂商强耦合——今天用 GPT,明天想换更便宜的国产模型,就得重写对接层。Agno 的模型无关特性让客服团队只需替换 model 参数,同一套业务逻辑无缝迁移,像更换插座面板上的插头一样简单。

具体案例:某电商公司用 Agno 构建售后客服 Agent:模型用 GPT-4o 打磨话术,上线后评估成本,改用更经济的开源模型,切换仅一行代码。客服 Agent 还挂接了“订单查询”“退换货申请”两个工具函数,用户提问时模型自动调用,整个推理与回复过程全部自动化。

证券投研信息分析助手

阶段:工具集成、函数调用

解决的问题:分析师需要同时查看行情、搜索新闻、汇总研报,传统做法是手工打开多个系统复制粘贴。Agno 的工具集成能力把数据源封装成函数,模型按需自动调用,相当于给分析师配了一位“自动翻资料库”的接线员。

具体案例:投研团队用 Agno 聚合 yfinance 行情工具、DuckDuckGo 搜索工具和内部研报 API。分析师提问“某公司最近股价和新闻怎么样”,Agent 自动调用行情函数获取价格、搜索工具抓取新闻,再把结果拼成结构化摘要输出。整个过程模型自主决定调用顺序,团队只需维护工具函数。

教育辅导多轮对话系统

阶段:存储记忆、状态恢复

解决的问题:学生辅导通常跨越多天,如果 Agent 每次重开对话就“失忆”,教学效果大打折扣。传统方案需要自己维护历史消息表并手动注入上下文,而 Agno 的存储模块自动完成会话持久化与恢复。

具体案例:在线教育平台用 Agno 构建数学辅导 Agent,启用 SqliteStorage 后,学生隔天回来问“昨天那道几何题还有没有别的解法”,Agent 能从数据库恢复历史对话并准确续接。模型可随时切换(GPT、Claude、国产模型),学生无感知,平台则获得最大的供应商议价空间。

Python 演示

python30 行
from agno.agent import Agentfrom agno.models.openai import OpenAIChatfrom agno.models.anthropic import Claudefrom agno.storage.sqlite import SqliteStorage  def get_weather(city: str) -> str:    """模拟查询城市天气,返回天气描述字符串"""    weather_map = {"北京": "晴 25 摄氏度", "上海": "多云 28 摄氏度"}    return weather_map.get(city, "暂无该城市数据")  def main():    agent = Agent(        model=OpenAIChat(id="gpt-4o"),        tools=[get_weather],        storage=SqliteStorage(table_name="weather_agent", db_file="agent.db"),        add_history_to_messages=True,        markdown=True,        show_tool_calls=True,    )    agent.print_response("北京今天天气如何?")    agent.print_response("那上海呢?")     agent2 = Agent(model=Claude(id="claude-3-5-sonnet"))    agent2.print_response("用一句话介绍你自己")  if __name__ == "__main__":    main()
目的:演示 Agno 的核心三件事——用极简代码创建带工具和存储的 Agent、自动切换不同模型、多轮对话携带记忆。
  1. agent = Agent(创建 Agent 实例,像把插头插进万能插座,框架自动组织后续流程。
  2. model=OpenAIChat(id="gpt-4o"),指定当前使用的模型,相当于选择这次接入的是“GPT 牌插头”。
  3. tools=[get_weather],把自定义函数注册成工具,模型需要时自动调用,无需手写分发逻辑。
  4. storage=SqliteStorage(...),挂接 SQLite 存储,让会话历史持久化,Agent 从此“记得”之前的对话。
  5. add_history_to_messages=True,每次请求自动携带历史消息,实现多轮对话的上下文连贯。
  6. agent.print_response("北京今天天气如何?")启动任务循环,消息输入、推理、工具调用、结果回传全自动完成。
  7. agent2 = Agent(model=Claude(...))创建另一个使用 Claude 的 Agent,同一套 API 无缝切换厂商模型。

常见误区

误区很多初学者看到 Agno 的文档例子大量使用 `OpenAIChat`,就以为 Agno 是 OpenAI 的专属框架,别的模型都接不进去。

正解Agno 的核心是模型无关架构。OpenAIChat 只是众多适配器之一,同等级的适配器还有 Claude、Gemini、Ollama 等。所谓“万能插座”就是它不挑插头——换模型只需要替换 model 参数,业务代码完全不变。

为何常见:因为教程和示例为了简单总用最流行的 GPT 当默认选项,给人造成“官方主推=唯一支持”的错觉。

误区“代码量这么少、依赖这么轻,是不是只适合写 demo?真正上线还是得用 LangChain 那样的重型框架。”

正解轻量是设计选择,不是能力上限。Agno 提供工具集成、存储持久化、结构化输出等生产特性,并通过模块化扩展支持向量检索、多 Agent 协作。生产系统的核心诉求是可控、可维护、可替换,而 Agno 的简洁恰恰让这三者更容易实现。

为何常见:人们容易把“轻量”与“玩具”划等号,而实际上很多大规模 Agent 服务在轻量框架上跑得又快又稳。

误区看到“模型自动调用工具”的宣传,初学者以为只要配置好框架,模型就能凭空获得工具箱,不需要自己实现任何函数。

正解Agno 自动的是“调用决策”和“参数传递”,但工具本身必须由开发者编写。get_weather(city) 这样的函数——查询逻辑、返回值格式、异常处理——全部要你实现。框架负责把函数注册成工具,模型负责决定何时调用,两者缺一不可。

为何常见:“自动”两个字容易让人忽略了框架只是在编排既有能力,而非无中生有。

误区看到 `SqliteStorage` 之类的例子,以为记忆功能是框架强制要求的,不接数据库 Agent 就跑不起来。

正解存储是可选项。Agno 默认在内存中维护会话,不落盘也能正常对话;SqliteStorage 只是当你想跨进程保留历史时才需要。就像插座上的 USB 口——不插数据线,充电功能照常工作。

为何常见:因为存储相关的示例往往带有配置代码,初学者容易把“可选配置”误解为“必备前置条件”。

面试题

Q1. Agno 的核心设计定位是什么?

单选题 · easy

  • A.重量级全流程开发框架
  • B.轻量级模型无关Agent框架← 正确答案
  • C.专供OpenAI使用的闭源库
  • D.语言模型数据标注工具

答案:B。Agno 的设计定位就是“轻量级 + 模型无关”的 Agent 开发框架,如同万能插座不挑插头。A 是 LangChain 的路线,C 忽略了它对 Claude 等模型的支持,D 与 Agent 框架无关。

Q2. “模型无关”的核心含义是什么?

单选题 · easy

  • A.不需要任何模型也能运行
  • B.模型无需训练即可使用
  • C.同一套代码可切换不同大模型← 正确答案
  • D.只支持开源模型生态

答案:C。模型无关指框架通过统一接口兼容多种模型,切换 GPT、Claude 只需改一行配置,就像转换插头适配不同孔型。A 曲解了“无关”,B 说的是少样本学习,D 把范围缩小了。

Q3. 在 Agno 中更换模型的正确做法是什么?

单选题 · mid

  • A.修改框架核心源码
  • B.替换Agent的model参数← 正确答案
  • C.重新安装整个Agno库
  • D.同时训练两个备选模型

答案:B。Agno 把模型抽象成参数,更换模型只需替换 Agent(model=...) 中的实例,业务逻辑零改动。这正是“插座换插头”的设计哲学。A、C、D 都是对模型无关机制的误解。

Q4. Agno 与 LangChain 的主要区别是什么?

单选题 · hard

  • A.Agno功能比LangChain更多
  • B.LangChain抽象层级更简单
  • C.Agno更轻量且抽象更简单← 正确答案
  • D.两者架构设计完全相同

答案:C。LangChain 是功能全面的“全屋智能中控”,抽象层多、学习曲线陡;Agno 则追求最小依赖和透明代码,是“便携充电头”式的轻量方案。A 恰好说反,B 说反 LangChain 的特点,D 忽略了两者设计哲学的根本差异。

Q5. Agno 工具集成的流程包含哪些环节?

多选题 · mid

  • A.注册函数为可用工具← 正确答案
  • B.模型自动生成调用参数← 正确答案
  • C.手动解析函数返回结果
  • D.工具结果自动回传模型← 正确答案

答案:ABD。Agno 工具链路是:开发者注册函数为工具,模型判断需要时自动生成参数,框架执行函数并把结果回传给模型继续推理。C 错在“手动解析”——Agno 已经自动完成解析与回传,这正是它省心的关键。

Q6. Agent 任务循环的正确顺序是什么?

单选题 · mid

  • A.工具执行后再模型推理
  • B.输入消息推理工具回传← 正确答案
  • C.先模型推理再输入消息
  • D.工具调用完再输入消息

答案:B。标准循环是:用户消息输入 → 模型推理 → 判断是否调用工具 → 工具结果回传 → 生成最终回复。就像接线员先听来电、再判断、再查资料、最后答复。其他选项都打乱了这一顺序。

Q7. Agno 存储模块的主要作用有哪些?

多选题 · mid

  • A.保存会话历史消息← 正确答案
  • B.恢复跨会话长期记忆← 正确答案
  • C.存储模型权重参数
  • D.缓存模型训练数据集

答案:AB。Storage 负责把会话历史持久化到 SQLite 等后端,并在新会话中恢复上下文,实现“床头柜记忆”。模型权重和训练数据属于模型训练体系,与运行时存储完全无关。

Q8. 安装 Agno 框架的正确命令是什么?

单选题 · easy

  • A.pip install agno← 正确答案
  • B.pip install openai
  • C.npm install agno
  • D.pip install crewai

答案:A。Agno 是 Python 框架,官方安装命令是 pip install agno。B 只是 OpenAI 的 SDK,C 用错了包管理器,D 安装的是另一个 Agent 框架 CrewAI。

Q9. Agno 实现模型无关性依赖的核心机制是什么?

单选题 · extreme

  • A.统一接口抽象机制← 正确答案
  • B.模型间自动翻译转换
  • C.在框架内嵌全部权重
  • D.直接删除原有模型层

答案:A。Agno 定义统一的 Model 接口,各厂商模型通过适配器实现该接口,上层代码只面向接口编程。这不是模型间翻译(B),也不是内嵌权重(C),更不是删除模型层(D),而是与“转换插头”同构的接口抽象。

Q10. 下列哪些是 Agno 轻量级特性的具体体现?

多选题 · hard

  • A.依赖可按需裁剪← 正确答案
  • B.无重型抽象层设计← 正确答案
  • C.启动速度快如闪电← 正确答案
  • D.完全不依赖Python

答案:ABC。轻量体现在依赖插件化、抽象层薄、启动开销小,因此 A、B、C 都正确。D 错得离谱——Agno 是纯 Python 框架,轻量不等于脱离 Python 生态。