今天还是聊聊生产级agent怎么搭这回事。
前面几期内容,我们聊了agent 常见的坑有哪些,memory怎么管理,还有一些rerank细节,今天从部署层面看看怎么选一个不错的agent框架。
现如今,针对复杂场景,多agent架构已经成为默认选择,相应的框架也已经数不胜数,但它们多多少少都存在两个问题,要么重demo,轻生产,稳定性有待提升;要么过于灵活,导致在需要快速交付、迭代的场景中,略显笨重。
针对这个问题,国产框架Agno 靠着高性能,以及快速落地生产,短短几个月,就拿下了30K+star。
那么它与LangGraph的区别是什么?怎么将其快速在生产环境部署?
本文将一一解答。
01
Agno是什么?与LangGraph的多智能体架构有什么区别?
Agno是专为生产环境设计的多智能体框架。它的架构分为两层:Agno框架层负责定义智能体的逻辑,AgentOS运行时层负责把这些逻辑变成可对外服务的HTTP接口。
其中,Agno框架层提供了三个核心抽象:Agent(智能体单元)、Team(多智能体协同)、Workflow(工作流编排)。开发者用纯Python代码定义智能体的能力、工具和知识源,框架负责LLM调用、工具执行、上下文管理。整个过程没有复杂的图编排,没有额外的DSL,都是直接的函数调用。
AgentOS运行时层则是生产部署的关键。它是异步优先、无状态的执行引擎,内置FastAPI集成,可以把本地开发的Agent直接转化为生产级HTTP服务。AgentOS提供了会话管理、流式响应、监控端点、水平扩展能力。开发者不需要自己写API层代码,也不需要考虑多线程和并发控制,AgentOS在底层已经处理好了这些问题。
整体的架构详情如下:
不难发现,与目前的主流多agent 框架LangGraph 相比,LangGraph 采用的是图状态机设计,将智能体系统建模为节点和边的组合,适合需要精确控制执行流程的场景。
Agno 则是独立的端到端解决方案,从框架层到运行时层提供完整的技术栈。开发者无需自行集成 API服务、会话管理和监控工具,AgentOS 已内置这些能力,强调的是快速从开发到生产的路径。
| 维度 | LangGraph | Agno |
| 编排方式 | 显式图定义(节点+边) | 声明式 Workflow |
| 状态管理 | 自定义 State 类 | 内置 Memory 系统 |
| 调试工具 | LangSmith(付费) | AgentOS UI(开源) |
| 运行时 | 需自行集成 | 独立 FastAPI 服务 |
| 部署复杂度 | 需配置 LangServe | 开箱即用 |
整体来看,LangGraph 重灵活控制,Agno 重快速交付。
在做选型时,我们可以根据项目阶段、技术栈和定制化需求权衡,必要时通过 POC 验证。
02
为什么选Milvus做知识层
确定了框架层的选型后,在记忆层,我们依然推荐选择Milvus,主要出于几个考虑。
Agno官方文档提供了Milvus的一级集成,agno.vectordb.milvus模块封装了连接管理、嵌入生成、批量写入等生产必需的功能。相比需要自己处理连接池和错误重试的方案,原生支持大幅降低了集成成本。
Milvus还能提供三种部署模式(Lite/Standalone/Distributed),可以从本地文件(./milvus.db)逐步升级到分布式集群。虽然切换过程需要数据迁移和配置调整,但代码层面的API接口保持一致,对于需要快速验证原型、然后逐步扩展到生产的团队来说比较实用。
我们先用单Agent演示基础流程,然后在生产环境的关键设计部分展示如何扩展到多智能体协同。这个demo构建一个知识库助手,并通过AgentOS提供HTTP服务。
03
快速开始:知识库助手的完整实现
1.部署 Milvus Standalone(Docker)
1.1下载部署文件
wget <https://github.com/Milvus-io/Milvus/releases/download/v2.5.12/Milvus-standalone-docker-compose.yml> -O docker-compose.yml1.2启动Milvus服务
docker-compose up -ddocker-compose ps -a2.核心实现
import os from pathlib import Path from agno.os import AgentOS from agno.agent import Agent from agno.models.openai import OpenAIChat from agno.knowledge.knowledge import Knowledge from agno.vectordb.milvus import Milvus from agno.knowledge.embedder.openai import OpenAIEmbedder from agno.db.sqlite import SqliteDb os.environ["OPENAI_API_KEY"] = "you-key-here" data_dir = Path("./data") data_dir.mkdir(exist_ok=True) knowledge_base = Knowledge( contents_db=SqliteDb( db_file=str(data_dir / "knowledge_contents.db"), knowledge_table="knowledge_contents", ), vector_db=Milvus( collection="agno_knowledge", uri="http://192.168.x.x:19530", embedder=OpenAIEmbedder(id="text-embedding-3-small"), ), ) # 创建Agent agent = Agent( name="Knowledge Assistant", model=OpenAIChat(id="gpt-4o"), instructions=[ "你是一个知识库助手,帮助用户查询和管理知识库的内容。", "使用中文回答问题。", "在回答问题之前,始终先搜索知识库。", "如果知识库为空,友好地提示用户上传文档。" ], knowledge=knowledge_base, search_knowledge=True, db=SqliteDb( db_file=str(data_dir / "agent.db"), session_table="agent_sessions", ), add_history_to_context=True, markdown=True, ) agent_os = AgentOS(agents=[agent]) app = agent_os.get_app() if __name__ == "__main__": print("\n🚀 启动服务...") print("📍 http://localhost:7777") print("💡 请在UI中上传文档到知识库\n") agent_os.serve(app="knowledge_agent:app", port=7777, reload=False)2.1运行Agent
python knowledge_agent.py3.连接AgentOS控制台
https://os.agno.com/
3.1注册登录
3.2选择连接AgentOS
3.3输入OS暴露的端口并自定义name
3.4进入知识库菜单添加文档并嵌入到Milvus
3.5测试效果
Milvus在这里的作用是提供高性能的语义检索能力。当知识库助手收到一个技术问题,它会通过search_knowledge工具把问题转换为向量,在Milvus中找到最相关的文档片段,然后基于这些片段生成回答。Milvus提供了三种部署模式,可以根据业务需求选择合适的方案,代码层面的接口保持一致。
上面的demo展示了基本用法,但如果要用于生产环境,还有几个架构层面的问题需要理解。
4.多智能体如何共享检索结果
Agno的Team模式支持share_member_interactions=True配置,这会把前序智能体的完整交互历史传递给后续智能体。如果第一个智能体从Milvus检索了某些数据,后面的智能体可以直接使用,不需要重复检索。这有两个效果:检索成本被摊销(一次查询,多次使用),以及检索质量被放大(如果第一次查询的结果不准确,错误会在整个团队中传播)。所以在多智能体系统中,Milvus的检索准确率比单智能体场景更重要。
补充Team代码示例:
from agno.team import Team analyst = Agent( name="数据分析师", model=OpenAIChat(id="gpt-4o"), knowledge=knowledge_base, search_knowledge=True, instructions=["分析数据并提取关键指标"] ) writer = Agent( name="报告撰写者", model=OpenAIChat(id="gpt-4o"), knowledge=knowledge_base, search_knowledge=True, instructions=["基于分析结果撰写报告"] ) team = Team( agents=[analyst, writer], share_member_interactions=True, # 共享知识检索结果 )5.架构设计:Agno与Milvus的分层
Agno的AgentOS是无状态的,可以水平扩展多个实例。会话历史存储在关系型数据库中,但这些是流程状态(谁说了什么)。真正的领域知识(向量化的文档、报告)完全存储在Milvus中。这种架构解耦的好处是:Agno层压力大了,加实例;Milvus压力大了,扩查询节点。两者互不影响,可以独立优化资源配置。Agno需要CPU和内存(LLM推理),Milvus需要磁盘I/O和GPU(向量计算),硬件需求也完全不同。
6.Agent运行质量监控
Agno本身有持续评估能力,但引入Milvus后需要扩展监控范围。实际运行中,你需要关注检索准确率(返回的文档是不是真的相关)、答案忠实度(回答是基于检索内容还是LLM瞎编的),以及端到端延迟的拆解——把总耗时分解到查询嵌入、向量检索、上下文构建、LLM推理这几个阶段,才能定位具体瓶颈。
监控这些指标的目的是及时发现系统退化。比如你的Milvus数据量从100万涨到1000万,如果发现检索延迟明显变长,就该考虑调整索引参数或者升级部署模式了。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。