Agno 的 Culture(文化) 是一个实验性功能,旨在为你的多智能体(Multi-Agent)系统提供一个共享的知识层。它允许不同的 Agent 存储和检索通用的原则、最佳实践和可复用的经验。
简单来说,Culture 让智能体能够"共同成长"。一个 Agent 从交互中学到的宝贵经验,可以通过 Culture 分享给所有其他 Agent,让整个系统从集体智慧中获益
为什么需要 Culture?
Culture 解决了智能体系统中的一个根本问题:知识的孤立性。没有 Culture,每个 Agent 都从零开始,学到的经验无法积累和传承。
-
一致性 (Consistency):所有 Agent 遵循统一的沟通标准、格式规范和最佳实践。
-
进化性 (Evolution):系统会随着时间的推移,从 Agent 的成功和失败中不断学习和改进。
-
效率性 (Efficiency):Agent 无需反复"重新学习"同样的教训。
-
广泛应用场景:
-
技术文档团队:保持统一的写作风格和结构。
-
客户支持团队:应用经过验证的问题解决模式。
-
开发助手:遵循组织的编码标准。
-
内容生成:遵守品牌语调和格式指南。
-
Culture vs. Memory:共享知识 vs. 个人记忆
理解 Culture 的核心,在于区分它与 Memory(记忆)的不同。
| 特性 | Culture (文化) | Memory (记忆) |
|---|---|---|
| 知识类型 | 通用原则、最佳实践、共享经验 | 用户特定的事实、偏好和个性化信息 |
| 作用范围 | 所有智能体、所有用户、所有会话 | 特定用户、特定会话 |
| 类比 | "我们这儿(公司/团队)的做事方式" | "我对你的了解" |
| 示例 | "技术文档应遵循'操作性思维'原则" | "用户 Sarah 喜欢用电子邮件沟通" |
Culture 如何工作?
其工作流程可以概括为:
-
加载 (Load):Agent 在开始任务时,会自动加载相关的文化知识到上下文中。
-
应用 (Apply):Agent 在推理和生成回复时会应用这些知识。
-
反思 (Reflect):任务完成后,Agent 会反思整个交互过程。
-
更新 (Update):基于反思,Agent 会更新或添加新的文化知识到数据库中
三种 Culture 管理模式
Agno 提供了三种由浅入深的管理模式,你可以根据需求选择。
1. 自动模式 (Automatic Culture)
这是最简单、最推荐的模式。设置 update_cultural_knowledge=True 后,系统会在每次 Agent 运行后自动反思交互并更新文化知识。
from agno.agent import Agent
from agno.models.deepseek import DeepSeek
from dotenv import load_dotenv
load_dotenv()
deepseek = DeepSeek(id="deepseek-chat")
agent = Agent(
model=deepseek,
instructions=["你是一个智能助手,可以调用工具来执行操作。"],
markdown=True,
add_culture_to_context=True, # 读取文化
update_cultural_knowledge=True, # 自动更新文化
)
agent.print_response("你好,请介绍一下自己", stream=True)
2. 智能体模式 (Agentic Culture)
设置 enable_agentic_culture=True,Agent 将获得创建、读取、更新和删除文化知识的工具,由 Agent 自己决定何时以及如何管理文化。
from agno.agent import Agent
from agno.db.sqlite import SqliteDb
from dotenv import load_dotenv
from agno.models.deepseek import DeepSeek
load_dotenv()
deepseek = DeepSeek(id="deepseek-chat")
db = SqliteDb(db_file="agno.db")
agent = Agent(
model=deepseek,
db=db,
add_culture_to_context=True,
enable_agentic_memory=True, # 👈 自动提取记忆
user_id="xiaoxiaoer",
instructions=["你是一个智能助手"],
)
agent.print_response("你好,请介绍一下自己", stream=True)
3. 手动模式 (Manual Culture)
可以通过 CultureManager 手动创建和管理文化知识。这种方式最灵活,适合需要精确控制文化内容的场景
from agno.agent import Agent
from agno.culture.manager import CultureManager
from agno.db.sqlite import SqliteDb
from dotenv import load_dotenv
from agno.models.deepseek import DeepSeek
load_dotenv()
deepseek = DeepSeek(id="deepseek-chat")
db = SqliteDb(db_file="tmp/demo.db")
culture_manager = CultureManager(db=db, model=deepseek)
# 2. 定义一条文化原则[reference:44]
message = (
"所有技术指南都应遵循'操作性思维'原则:\n"
"1. **陈述目标** --- 我们要实现什么结果以及为什么。\n"
"2. **展示步骤** --- 列出清晰、可复现的步骤。\n"
"3. **揭示陷阱** --- 提及常出错的地方以及如何及早发现。\n"
"4. **定义验证** --- 如何确认它正常工作。\n"
"5. **闭环** --- 建议下一步的迭代或改进。\n"
)
# 3. 创建文化知识条目[reference:45]
culture_manager.create_cultural_knowledge(message=message)
# 4. 查看所有文化知识[reference:46]
cultural_knowledge = culture_manager.get_all_knowledge()
agent = Agent(
model=deepseek,
db=db, #使用一个db会自动加载文化知识
add_culture_to_context=True,
user_id="xiaoxiaoer",
instructions=["你是一个智能助手"],
)
agent.print_response("你好,请介绍一下自己", stream=True)