如何把 agno 的 Agent、Team 与 Workflow 存进数据库并加载回来复用?

发布时间:2026/9/12 3:34:41

如何把 agno 的 Agent、Team 与 Workflow 存进数据库并加载回来复用? 如何把 agno 的 Agent、Team 与 Workflow 存进数据库并加载回来复用【免费下载链接】agnoBuild, run, and manage agent platforms.项目地址: https://gitcode.com/GitHub_Trending/ag/agno在 agno 中Agent、Team 和 Workflow 都是 Python 对象默认只存在于代码里。如果你想把它们的配置持久化、版本化并在另一个进程或另一台机器上原样加载回来运行agno 的 Agent-as-Config 特性支持把它们存进 PostgreSQL 或 SQLite再通过 ID 加载回带完整功能的对象。本文按 cookbook 中93_components目录的示例走一遍「保存 → 加载 → 验证 → 删除」的完整路径并覆盖加载含工具/自定义函数/Pydantic Schema 的组件时必需的 Registry。适用前提Python 环境中已安装 agno有一个可用的数据库PostgreSQL推荐用于生产或 SQLite仅限开发示例中使用的是 OpenAI 模型加载回来的组件会实际调用模型运行。准备数据库cookbook 提供的脚本cookbook/scripts/run_pgvector.sh用 Docker 启动一个 PostgreSQL 容器。执行它前需要本地装有 Docker副作用是启动一个名为pgvector的常驻容器占用宿主机 5532 端口并创建名为pgvolume的数据卷数据落在该卷内。./cookbook/scripts/run_pgvector.sh脚本内容就是这一条docker run命令关键参数数据库名ai、用户名ai、密码ai端口映射5532:5432镜像agnohq/pgvector:18。对应的连接字符串在后续所有代码中统一使用from agno.db.postgres import PostgresDb db PostgresDb(db_urlpostgresqlpsycopg://ai:ailocalhost:5532/ai)开发阶段也可以用 SQLite 代替不需要起容器from agno.db.sqlite import SqliteDb db SqliteDb(db_urlsqlite:///agents.db)保存 Agent 并加载回来保存的完整示例见 save_agent.py。核心是创建 Agent 时通过db参数绑定数据库然后调用agent.save()返回新版本号from agno.agent.agent import Agent from agno.db.postgres import PostgresDb from agno.models.openai import OpenAIChat db PostgresDb(db_urlpostgresqlpsycopg://ai:ailocalhost:5532/ai) agent Agent( idagno-agent, modelOpenAIChat(idgpt-5-mini), nameAgno Agent, dbdb, ) version agent.save() print(fSaved agent as version {version})按文档示例首次运行会打印形如Saved agent as version 1的输出具体版本号取决于保存次数不要把它当成固定值。加载侧示例见 get_agent.py。用get_agent_by_id按 ID 取回取到就直接运行验证方式是看它是否真的能回答from agno.agent.agent import get_agent_by_id, get_agents # noqa: F401 from agno.db.postgres import PostgresDb db PostgresDb(db_urlpostgresqlpsycopg://ai:ailocalhost:5532/ai) agent get_agent_by_id(dbdb, idagno-agent) if agent: agent.print_response(How many people live in Canada?) else: print(Agent not found)结果判断很直接ID 存在且未被硬删除时Agent 会输出对问题的回答ID 不存在时打印Agent not found。get_agents(dbdb)可以列出数据库中全部 Agent用来核对保存是否落库。保存 Team成员 Agent 作为关联组件一起入库Team 保存时会把成员 Agent 作为 linked components 一并存下。示例见 save_team.pyfrom agno.agent import Agent from agno.db.postgres import PostgresDb from agno.models.openai import OpenAIChat from agno.team import Team db PostgresDb(db_urlpostgresqlpsycopg://ai:ailocalhost:5532/ai) researcher Agent( idresearcher-agent, nameResearcher, modelOpenAIChat(idgpt-5.6-luna), roleResearch and gather information, ) writer Agent( idwriter-agent, nameWriter, modelOpenAIChat(idgpt-5.6-luna), roleWrite content based on research, ) content_team Team( idcontent-team, nameContent Creation Team, modelOpenAIChat(idgpt-5.6-luna), members[researcher, writer], descriptionA team that researches and creates content, dbdb, ) version content_team.save() print(fSaved team as version {version})加载侧见 get_team.py。加载回来的 Team 保留了委派能力可以直接print_response它会把任务分派给成员from agno.db.postgres import PostgresDb from agno.team.team import get_team_by_id, get_teams # noqa: F401 db PostgresDb(db_urlpostgresqlpsycopg://ai:ailocalhost:5532/ai) team get_team_by_id(dbdb, idcontent-team) if team: team.print_response(Write about the history of the internet., streamTrue) else: print(Team not found)验证方式与 Agent 相同流式输出最终回答说明成员链恢复成功ID 不存在则打印Team not found。保存 Workflow步骤与执行者以链接形式入库Workflow 保存时每个 Step 会记录链接到执行它的 Agent/Team。示例见 save_workflow.pyfrom agno.agent import Agent from agno.db.postgres import PostgresDb from agno.models.openai import OpenAIChat from agno.workflow.step import Step from agno.workflow.workflow import Workflow db_url postgresqlpsycopg://ai:ailocalhost:5532/ai db PostgresDb(db_urldb_url) hackernews_agent Agent( idhackernews-agent, nameHackernews Agent, modelOpenAIChat(idgpt-5.6-luna), roleExtract key insights and content from Hackernews posts, ) web_agent Agent( idweb-agent, nameWeb Agent, modelOpenAIChat(idgpt-5.6-luna), roleSearch the web for the latest news and trends, ) research_step Step(nameResearch Step, agenthackernews_agent) content_planning_step Step(nameContent Planning Step, agentweb_agent) content_creation_workflow Workflow( idcontent-creation-workflow, nameContent Creation Workflow, descriptionAutomated content creation from blog posts to social media, dbdb, steps[research_step, content_planning_step], ) version content_creation_workflow.save(dbdb) print(fSaved workflow as version {version})加载侧见 get_workflow.pyfrom agno.db.postgres import PostgresDb from agno.workflow.workflow import get_workflow_by_id, get_workflows # noqa: F401 db PostgresDb(db_urlpostgresqlpsycopg://ai:ailocalhost:5532/ai) workflow get_workflow_by_id(dbdb, idcontent-creation-workflow) if workflow: workflow.print_response(inputAI trends in 2024, markdownTrue) else: print(Workflow not found)加载回来后按步骤顺序执行各 Step输出为 MarkdownID 不存在则打印Workflow not found。核对、删除与版本三类组件的列表与删除操作是同一套模式# 列出所有已保存的组件核对保存结果 from agno.agent.agent import get_agents from agno.team.team import get_teams from agno.workflow.workflow import get_workflows agents get_agents(dbdb) teams get_teams(dbdb) workflows get_workflows(dbdb)删除分软删和硬删两种默认是软删# 软删除标记为已删除记录仍留在数据库 agent.delete() # 硬删除从数据库永久移除不可恢复 agent.delete(hard_deleteTrue)使用hard_deleteTrue前确认不需要这条配置——它是永久删除。版本规则每次调用save()都会为该组件创建一个新版本。README 中给出的示例是首次保存得到 version 1修改instructions后再保存得到 version 2。需要说明的是按指定版本加载get_agent_by_id(..., version1)在文档中标注为 coming soon当前只能加载最新版本。加载含工具、自定义函数或 Schema 的组件Registry序列化时有些组件无法写成 JSON工具Toolkit/Function、自定义函数、Pydantic Schema 只保存名称完整对象需要加载时通过Registry还原。对照表如下来自 README组件是否序列化如何还原Agent ID、name、description是-Model 配置是-Instructions、prompts是-ToolsToolkit、Function仅名称通过 Registry 还原完整可调用对象自定义函数仅名称通过 Registry 还原完整可调用对象Pydantic Schema仅名称通过 Registry 还原完整类完整示例见 registry.pyfrom agno.agent.agent import Agent, get_agent_by_id from agno.db.postgres import PostgresDb from agno.models.openai import OpenAIChat from agno.registry import Registry from agno.tools.duckduckgo import DuckDuckGoTools from pydantic import BaseModel db PostgresDb(db_urlpostgresqlpsycopg://ai:ailocalhost:5532/ai) class BasicOutputSchema(BaseModel): message: str def sample_tool(): return Hello, world! registry Registry( nameAgno Registry, descriptionRegistry for Agno, tools[DuckDuckGoTools(), sample_tool], models[OpenAIChat(idgpt-5-mini)], dbs[db], schemas[BasicOutputSchema], )加载时把 Registry 传给get_agent_by_id工具与 Schema 即被还原成可用对象agent get_agent_by_id(dbdb, idregistry-agent, registryregistry) agent.print_response(Call the sample tool)验证方式是让加载回来的 Agent 实际调用 Registry 里注册的工具示例中打印Hello, world!即为文档演示的期望行为。可选分支AgentOS 自动收集 Registry如果组件是挂在一个AgentOS上运行的不必手动声明 Registry构造AgentOS时会递归遍历传入的每个 agent、team、workflow包括嵌套 team 和所有 workflow step 类型如Condition的 else 分支、Router的 choices自动把其引用的 models、tools、databases、vector databases 收集进 registry去重按 id/name手动传入 Registry 的组件会保留、发现到的组件只合并不重复。可参考 auto_populate_registry.py离线检查与 auto_populate_registry_os.py通过GET /registry查看服务中的组件。执行顺序与已知限制cookbook 推荐的运行顺序见 93_components/README.md./cookbook/scripts/run_pgvector.sh # 先跑保存 python cookbook/93_components/save_agent.py python cookbook/93_components/save_team.py python cookbook/93_components/save_workflow.py # 再跑加载 python cookbook/93_components/get_agent.py python cookbook/93_components/get_team.py python cookbook/93_components/get_workflow.py # Registry 示例 python cookbook/93_components/registry.py需要注意的边界SQLite 定位是开发用README 明确建议生产用 PostgreSQL每次save()生成新版本但按版本加载尚未提供coming soonget_*_by_id拿到的是当前版本delete()默认软删除hard_deleteTrue为永久删除使用前确认工具、自定义函数、Pydantic Schema 不随序列化保存跨进程/跨机器复用时必须在加载端提供包含这些对象的 Registry否则无法还原完整功能。【免费下载链接】agnoBuild, run, and manage agent platforms.项目地址: https://gitcode.com/GitHub_Trending/ag/agno创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/12 3:34:41

802.11n波束成形Simulink仿真解析:从SVD到CSI反馈

简介:针对802.11n WLAN物理层基带处理的一份Simulink仿真模型,面向通信工程专业学生、无线算法研究人员以及需要评估MIMO系统性能的工程人员。模型涵盖多种传输速率配置,包含空间复用、空间分集与波束成形(beamforming&#xff09…

2026/9/12 3:34:41

若依(RuoYi)App版开发框架解析与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/12 3:29:41

Python数据分析实战:从环境搭建到电商项目全流程解析

你有没有过这种经历:领导甩给你一份几十万行的Excel,让你两小时内说清楚“哪个区域的销售额在掉、哪个品类在涨、有没有明显的季节性规律”。打开文件的第一眼,电脑先卡三秒,筛选一次转半天,透视表拉完还得手动写结论。…

2026/9/12 4:29:47

PyMC 采样与推断方法实战指南:MCMC、变分推断与诊断调优

PyMC 采样与推断方法实战指南:MCMC、变分推断与诊断调优 【免费下载链接】scientific-agent-skills Turn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000 scientists worldwide. 165 ready-to-use validated skills…

2026/9/12 4:29:47

bd recall 命令深度指南:用 Beads 按 key 检索持久记忆

bd recall 命令深度指南&#xff1a;用 Beads 按 key 检索持久记忆 【免费下载链接】beads Beads - A memory upgrade for your coding agent 项目地址: https://gitcode.com/GitHub_Trending/beads1/beads 导读 bd recall <key> 是 Beads 持久记忆体系&#xff…

2026/9/12 4:29:46

ToF相机全链路解析:从光子到点云的硬件-驱动-应用协同

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/12 4:29:46

风光储并网系统Simulink建模与协同控制策略

1. 项目背景与核心价值风光储并网系统作为新能源电力领域的重要研究方向&#xff0c;其仿真建模对实际工程应用具有关键指导意义。这个Simulink模型研究项目聚焦永磁风机、光伏阵列与储能系统的协同运行机制&#xff0c;正是当前微电网和智能电网技术发展的前沿课题。在实际工程…

2026/9/12 2:05:33

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊&#xff01;#雷神 #复联”这类调侃式短标题&#xff0c;第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里&#xff0c;但细想一下就能发现&#xff0c;它真正碰到的根本不是…

2026/9/12 3:55:12

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊&#xff0c;可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”&#xff0c;你会发现&#xff0c;这场比较本质上是两个不同 IP 策略的长期结果对比&#xff1a;超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介&#xff1a;本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案&#xff0c;聚焦调制信号自动检测与识别这一典型无线通信任务&#xff0c;解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件&#xff08;10.73MB&#xff09;&…

2026/9/12 0:04:17

MATLAB仿生优化框架:长鼻浣熊算法多策略融合实现

简介&#xff1a;本资源是一份面向智能优化算法研究者与MATLAB初学者的仿生智能算法实践代码包&#xff0c;聚焦于长鼻浣熊优化算法&#xff08;COA&#xff09;的多策略改进与性能验证。针对传统COA易陷局部最优、收敛精度不足等问题&#xff0c;作者融合Circle映射初始化提升…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 JavaWeb 的校园一卡通管理系统的设计与实现 基于 JavaWeb 的校园卡业务管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 Java 的图书馆借阅管理平台的搭建与实现 基于 Java 的图书馆综合管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

2026/9/10 12:32:02

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行&#xff0c;Type-C接口算是典型的“看着简单&#xff0c;做起来全坑”的东西。光引脚就24个&#xff0c;高低速信号、电源、控制线全部塞在一个小小的连接器里&#xff0c;如果PCB布局不做规划&#xff0c;打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/10 15:19:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/10 15:49:53

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码