AutoGen 任务中心记忆(Task-Centric Memory)实战指南:让 Agent 学会跨会话快速学习
【免费下载链接】autogenA programming framework for agentic AI项目地址: https://gitcode.com/GitHub_Trending/au/autogen
AutoGen 的任务中心记忆(Task-Centric Memory)是一套处于实验研究阶段的记忆子系统,它让 Agent 不必改动自身代码即可获得"快速、持久、类记忆式"的学习能力——既能把用户在某次会话中给出的建议、纠正、示范沉淀下来,也能从自身的试错经验中学习,并在下一次会话开始时自动检索、复用这些经验。本文以仓库中python/samples/task_centric_memory目录下的完整样例代码与配置为骨架,系统讲解其安装、五种学习场景的用法、YAML 配置项语义,并结合 memory_controller.py 与 MemoryBank 实现 的源码,说明其底层存储与检索原理,帮助读者把这一能力接入自己的 AutoGen 应用。
任务中心记忆解决什么问题
大模型 Agent 的"记忆"天然受限于上下文窗口:一次会话结束后,用户教给它的偏好、修正过的错误、示范过的解题过程都会丢失;而把海量历史记录全部塞进上下文既不经济,检索效率也低。任务中心记忆(Task-Centric Memory)的出发点,是让 Agent 在不依赖上下文窗口的前提下,持续、快速地学习,具体能力包括:
- 直接进行记忆的存储与检索(直接读写 task–insight 记忆对);
- 从用户的建议与纠正中学习;
- 从用户的操作示范中学习;
- 从Agent 自身经验(试错)中学习;
- 在遇到与历史任务相似的新任务时,避免重蹈覆辙。
这些样例代码位于仓库的 python/samples/task_centric_memory 目录,每个样例都连接了一个可选择的 Agent(默认AssistantAgent,也可切换为MagenticOneGroupChat),且无需修改 Agent 自身任何代码。每个样例是独立的 Python 脚本,通过 YAML 数据文件与配置文件驱动,方便按需修改。
⚠️ 状态说明:该目录与底层实现模块均明确标注
EXPERIMENTAL, RESEARCH IN PROGRESS(见 样例 README 与 模块 README),属于进行中的研究性功能,接口与行为可能随版本演进而调整。
核心架构与组件
为了让下文各样例更好理解,先给出整体组件划分(模块级 README 中的架构示意),任务中心记忆系统由以下部分构成:
- Memory Controller(记忆控制器):实现各种快速学习方法,管理信息与记忆库(Memory Bank)之间的流动,负责记忆的创建、存储、检索与校验。
- Memory Bank(记忆库):底层是一个向量数据库(vector DB)及相关结构,用于持久化保存记忆(memo)。源码见 _memory_bank.py。
- Agent or Team(被加持的 Agent/团队):如样例中默认的
AssistantAgent,或可选的MagenticOneGroupChat团队。 - Apprentice / App / Service:负责实例化 Agent 与记忆控制器、并在两者之间路由信息的应用层代码。"Apprentice(学徒)"这个名字意在表明:记忆 + Agent 的组合像学徒一样在工作中快速学习。仓库在 utils/apprentice.py 中提供了一个最小参考实现(
Apprentice类),仅供演示与测试;大多数生产应用会用自己的代码替代它。
值得强调的是接入方式有两种:
- 侵入式:像模块 README 的 Quickstart 那样,在自定义的
RoutedAgent里直接调用memory_controller.retrieve_relevant_memos(),把检索到的记忆手工拼进发给模型的消息里; - 非侵入式(样例采用):通过 Teachability 这一实现了
autogen_core.memory.Memory接口的封装,把它作为AssistantAgent(memory=[...])的 memory 参数挂载,即可在不改 Agent 代码的前提下获得可教能力。
安装与环境准备
样例目录内没有任何独立的requirements.txt,安装依赖即安装 AutoGen 本体与对应的扩展包:
pip install -U "autogen-agentchat" "autogen-ext[openai]" "autogen-ext[task-centric-memory]"其中:
autogen-agentchat:提供AssistantAgent、Console等高层 AgentChat API;autogen-ext[openai]:提供OpenAIChatCompletionClient等 OpenAI 模型客户端扩展;autogen-ext[task-centric-memory]:安装实验性的任务中心记忆模块(即autogen_ext.experimental.task_centric_memory包)。
随后把 OpenAI 密钥写入环境变量:
export OPENAI_API_KEY="sk-..."若你使用的是其他模型或非 OpenAI 后端,可修改样例目录下的 utils.py(其中的create_oai_client()封装了OpenAIChatCompletionClient的创建,参数直接取自 YAML 配置的client区块)以及各脚本中OpenAIChatCompletionClient(model=...)一行,按需换成其他客户端实现。
样例全景与运行方法
五个样例按复杂度递增排列,运行前请先在终端切换到python/samples/task_centric_memory目录再执行命令:
| 场景 | 脚本 | 配置文件 | 学习形式 |
|---|---|---|---|
| 让 AssistantAgent 可教(交互式演示) | chat_with_teachable_agent.py | 无(参数在脚本内) | 用户建议/教导的跨会话复用 |
| 直接记忆存储与检索评测 | eval_retrieval.py | configs/retrieval.yaml | 直接读写 task–insight 记忆 |
| 从用户建议与纠正中学习 | eval_teachability.py | configs/teachability.yaml | 用户教导 |
| 从用户示范中学习 | eval_learning_from_demonstration.py | configs/demonstration.yaml | 一次示范 |
| 从自身经验中学习(自教) | eval_self_teaching.py | configs/self_teaching.yaml | 后台试错学习循环 |
运行每个评测脚本的典型命令形式为:
python eval_retrieval.py configs/retrieval.yaml python eval_teachability.py configs/teachability.yaml python eval_learning_from_demonstration.py configs/demonstration.yaml python eval_self_teaching.py configs/self_teaching.yaml注意:脚本统一按python <script> <path to *.yaml file>的方式接收配置文件路径参数(见各脚本__main__段对sys.argv的解析),漏传配置会打印用法提示后退出。
由于模型输出具有非确定性,每次运行结果会有波动,README 中给出的"接近 100%""通常成功"等结论是经验性描述,而非保证值。
配置与数据文件结构
所有评测样例都由"PageLogger 配置 → 模型客户端参数 → Apprentice/MemoryController/MemoryBank 参数 → test 数据与超参"四层 YAML 驱动。以一个典型的teachability.yaml(内容取自 configs/teachability.yaml)为例:
PageLogger: level: DEBUG # DEBUG, INFO, WARNING, ERROR, CRITICAL, or NONE. path: ./pagelogs/teachability client: model: gpt-4o-2024-08-06 temperature: 0.8 max_completion_tokens: 4096 presence_penalty: 0.0 frequency_penalty: 0.0 top_p: 1.0 max_retries: 65535 Apprentice: name_of_agent_or_team: AssistantAgent # AssistantAgent or MagenticOneGroupChat disable_prefix_caching: 1 # If true, prepends a small random string to the context, to decorrelate repeated runs. MemoryController: max_train_trials: 10 max_test_trials: 3 MemoryBank: path: ./memory_bank/teachability relevance_conversion_threshold: 1.7 n_results: 25 distance_threshold: 100 test: task_file: data_files/tasks/autogen_package.yaml # The task being tested. insight_file: data_files/insights/add_topic.yaml # Advice provided to help solve the task.PageLogger 区块
任务中心记忆运行时会输出详细的页面化日志。level取值为DEBUG、INFO、WARNING、ERROR、CRITICAL或NONE(NONE表示完全关闭日志);path指定 HTML 页面日志的输出目录,如./pagelogs/teachability。运行后可在浏览器打开该目录下生成的页面(例如./pagelogs/teachability/0 Call Tree.html)实时观察一次运行中记忆是如何被创建、检索与注入上下文的。该日志类实现在 utils/page_logger.py。
client 区块
模型客户端参数。各参数被 utils.py 的create_oai_client()逐项读出并传给OpenAIChatCompletionClient:
| 参数 | 说明 |
|---|---|
model | 使用的模型名,如gpt-4o-2024-08-06 |
temperature | 采样温度,默认 0.8 |
max_completion_tokens | 生成上限,样例默认 4096,传入时作为max_tokens |
presence_penalty/frequency_penalty | 存在/频率惩罚,默认 0.0 |
top_p | 核采样,默认 1.0 |
max_retries | 请求最大重试次数,样例默认 65535(极高值,便于研究型长时任务) |
Apprentice / MemoryController / MemoryBank 区块
Apprentice下(检索样例中则是顶层的MemoryController)主要包含两层配置:
name_of_agent_or_team:选择把记忆挂到哪个目标上,注释明确给出两个合法值:AssistantAgent或MagenticOneGroupChat。AssistantAgent使用一套固定的多步系统提示词。disable_prefix_caching:置 1(真)时会在上下文前拼接一小段随机字符串,使多次重复运行的结果去相关,便于评测。
MemoryController与MemoryBank的可配置项与源码中的默认值对照如下(参见 memory_controller.py 与 _memory_bank.py):
| 配置路径 | 参数 | 源码默认值 | 作用 |
|---|---|---|---|
| MemoryController | generalize_task | True | 是否把任务改写为更一般化的表述 |
| MemoryController | revise_generalized_task | True | 是否先批判再改写一般化后的任务 |
| MemoryController | generate_topics | True | 检索是基于任务本身,还是基于从任务提取的话题(topic) |
| MemoryController | validate_memos | True | 是否对检索到的候选 memo 做最后的 LLM 校验 |
| MemoryController | max_memos_to_retrieve | 10 | retrieve_relevant_memos()返回 memo 的最大数量 |
| MemoryController | max_train_trials | 10 | 对一个任务训练时最多尝试的学习迭代次数 |
| MemoryController | max_test_trials | 3 | 判断任务失败时最多尝试的总次数 |
| MemoryController.MemoryBank | path | ./memory_bank/default | 记忆库目录 |
| MemoryController.MemoryBank | relevance_conversion_threshold | 1.7 | 相关度归一化阈值 |
| MemoryController.MemoryBank | n_results | 25 | 对任一给定话题最多返回的相关结果数 |
| MemoryController.MemoryBank | distance_threshold | 100 | 一条 memo 能被检索到所需的最大字符串距离 |
持久化机制(源码事实):MemoryBank会把向量/字符串相似度映射存到path/string_map目录,把 memo 字典以 pickle 形式存到path/uid_memo_dict.pkl;构造时若reset=False且 pkl 已存在,会从磁盘加载既有 memo(日志会输出LOADING MEMOS FROM DISK与N MEMOS LOADED);若reset=True则清空后重建。记忆原子单元是Memo数据类,仅含两个字段:task(任务描述,可为空)与insight(提示、方案、计划等任意有助于解决相似任务的文本)。
test 区块(各评测各不相同)
每个评测脚本的test区块承载各自的输入数据与超参,其语义分别见对应小节。数据本体统一放在data_files/下:tasks/目录中的 YAML 含task_description与expected_answer两个字段(expected_answer供Grader用模型核对答案是否正确);insights/目录中的 YAML 则含一条insight文本。例如 data_files/tasks/autogen_package.yaml 的任务是"能否在 autogen 下新建一个基于 autogen 的 copilot 扩展 Agent 的包",其配套建议 data_files/insights/add_topic.yaml 则是"放在独立 repo 并打上 autogen-extension topic 标签"这类需要"人类常识"才答得对的建议——这正是评测"从教导中学习"的素材。
场景一:让 AssistantAgent 可教(交互式演示)
chat_with_teachable_agent.py 是最短、最直观的入门样例,核心代码如下:
from autogen_agentchat.agents import AssistantAgent from autogen_agentchat.ui import Console from autogen_ext.models.openai import OpenAIChatCompletionClient from autogen_ext.experimental.task_centric_memory import MemoryController from autogen_ext.experimental.task_centric_memory.utils import Teachability async def main(): # Create a client client = OpenAIChatCompletionClient(model="gpt-4o-2024-08-06", ) # Create an instance of Task-Centric Memory, passing minimal parameters for this simple example memory_controller = MemoryController(reset=False, client=client) # Wrap the memory controller in a Teachability instance teachability = Teachability(memory_controller=memory_controller) # Create an AssistantAgent, and attach teachability as its memory assistant_agent = AssistantAgent( name="teachable_agent", system_message = "You are a helpful AI assistant, with the special ability to remember user teachings from prior conversations.", model_client=client, memory=[teachability], ) # Enter a loop to chat with the teachable agent print("Now chatting with a teachable agent. Please enter your first message. Type 'exit' or 'quit' to quit.") while True: user_input = input("\nYou: ") if user_input.lower() in ["exit", "quit"]: break await Console(assistant_agent.run_stream(task=user_input)) # Close the connection to the client await client.close()它演示了"三步接驳"的关键模式,这也是将任务中心记忆挂接到任何 Agent 的标准姿势:
- 创建
MemoryController(reset=False, client=client)——reset=False表示保留磁盘上已有的记忆库(若希望从空记忆开始,可在首次运行前删除memory_bank目录); - 用
Teachability(memory_controller=...)把控制器包装成实现了autogen_core.memory.Memory接口的封装; - 把该实例以
memory=[teachability]的形式作为AssistantAgent的memory参数传入。
Teachability之所以是"非侵入"的关键,在于它实现了Memory接口的update_context():每次对话轮次它都会检查最近一条用户消息,把其中的教导性文本抽取出来经模型处理存入记忆库,同时把检索到的相关记忆以Potentially relevant memories:开头的内容追加进模型上下文(见 utils/teachability.py),Agent 自身代码因此完全不需要改动。
运行与演示(README 实录,跨两次会话展示记忆生效):
# 首次运行前,清掉可能存在的旧记忆库 rm -r memory_bank python chat_with_teachable_agent.py Now chatting with a teachable agent. Please enter your first message. Type 'exit' or 'quit' to quit. You: How many items should be put in research summaries? ---------- user ---------- How many items should be put in research summaries? ---------- teachable_agent ---------- <generates a long discussion> You: Whenever asked to prepare a research summary, try to cover just the 5 top items. ---------- user ---------- Whenever asked to prepare a research summary, try to cover just the 5 top items. ---------- teachable_agent ---------- <discusses the advice> You: quit # 第二次启动(同一记忆库),Agent 已记住上一条教导 python chat_with_teachable_agent.py Now chatting with a teachable agent. Please enter your first message. Type 'exit' or 'quit' to quit. You: How many items should be put in research summaries? ---------- user ---------- How many items should be put in research summaries? ---------- teachable_agent ---------- [MemoryContent(content='Whenever asked to prepare a research summary, try to cover just the 5 top items.', mime_type='MemoryMimeType.TEXT', metadata={})] ---------- teachable_agent ---------- <generates a more appropriate answer>第二次会话中,Agent 在回答前先检索并注入了记忆(输出中的MemoryContent(...)正是从记忆库检索到的命中项),随后给出了符合教导的答案。这直观地展示了:学习发生在一次会话内,复用跨越了会话边界,全程依赖持久化的记忆库而非上下文窗口。若需清空记忆重来,删除对应memory_bank目录即可。
场景二:直接记忆存储与检索(评测精度与召回)
eval_retrieval.py 完全不涉及 Agent,是理解任务中心记忆数据模型的最小样例。它演示应用如何直接调用MemoryController:
- task(任务):应用可能交给 Agent 的任意文本指令;
- insight(洞见):有助于 Agent 完成此类任务的任意文本(提示、建议、示范或计划);
- memo(记忆):一条 task–insight 组合,是存储与检索的原子单位。
典型应用按某种交错顺序执行三步:反复调用add_memo()存储若干 task–insight 记忆对;反复调用retrieve_relevant_memos()为某个新任务检索相关记忆;把检索到的 insight 塞进 Agent 的上下文窗口(第三步在 memory_controller.py 的 docstring 快速示例以及模块 README 的MemoryEnabledAgent示例中都有体现——后者演示了把formatted_memos作为一条额外的UserMessage拼入模型输入)。
该脚本的评测逻辑(eval_retrieval.py):
reset_memory()清空记忆库;- 依据 configs/retrieval.yaml 中的
task_insight_relevance矩阵,对标记为2(互相相关且应存入记忆)的 task–insight 对调用add_memo()入库; - 对每个任务调用
retrieve_relevant_memos(),把检索结果与真实相关集合比对; - 累计命中数后计算并打印 precision(精确率)与 recall(召回率)。
retrieval.yaml的评测矩阵以行列对应任务与洞察,其中2表示该对互相相关且已存储,1表示互相相关但未存储,0表示互不相关:
test: tasks: - data_files/tasks/10_liars.yaml - data_files/tasks/100_vampires.yaml - data_files/tasks/autogen_package.yaml - data_files/tasks/cell_towers_1.yaml - data_files/tasks/cell_towers_2.yaml insights: - data_files/insights/add_topic.yaml - data_files/insights/cell_towers_2_demo.yaml - data_files/insights/liar_advice.yaml task_insight_relevance: # Rows and columns represent (respectively) the tasks and insights listed above. - [0, 0, 2] # 2 denotes a mutually relevant task-insight pair, stored in memory. - [0, 0, 1] # 1 denotes a mutually relevant task-insight pair, not stored in memory. - [2, 0, 0] # 0 denotes a mutually irrelevant task-insight pair. - [0, 1, 0] - [0, 2, 0]运行命令与经验性结果:
python eval_retrieval.py configs/retrieval.yamlREADME 指出该样例的 precision 与 recall 通常接近 100%(这是对样例规模的描述性结论,非产品指标承诺)。
场景三:从用户建议与纠正中学习
eval_teachability.py 评测"可教性":用脚本模拟三段对话,借此说明"先失败 → 给予建议(清空上下文)→ 靠记忆成功"的完整闭环:
- 清空记忆后向 Agent 抛出任务
task_description(预期 Agent 因缺少该知识而答错); - 上下文窗口清空后,把
insight作为用户消息喂给 Agent——此刻 Agent 学到了新知识,Apprentice会在后台把教导存入记忆库; - 再次清空上下文并重问任务,看 Agent 能否靠检索记忆而不是靠同窗口内的上下文来作答。
正确性由Grader(模型评分器,见 utils/grader.py)对照expected_answer判定。若改写为评价脚本之外的自定义应用,utils/apprentice.py 的Apprentice.handle_user_message()可被复用,也可完全换成自己的路由代码。
配套配置与数据(configs/teachability.yaml):
test: task_file: data_files/tasks/autogen_package.yaml # The task being tested. insight_file: data_files/insights/add_topic.yaml # Advice provided to help solve the task.运行:
python eval_teachability.py configs/teachability.yamlREADME 的经验性结论:借助记忆,该样例通常成功(即"教导前答错、教导后答对")。
场景四:从用户示范中学习
eval_learning_from_demonstration.py(配置见 configs/demonstration.yaml)检验的是"举一反三"能力:
- 让 Agent 连续 10 次执行一个它通常失败的推理任务(
main_task_file,例如cell_towers_1); - 上下文清空后,给 Agent 一次对相似但不同任务(
demo_task_file,例如cell_towers_2)的完整解题示范(demo_solution_file,例如cell_towers_2_demo); - 清空上下文后,再对原任务测 10 次,观察 Agent 能否把示范迁移应用到原始任务上。
test: main_task_file: data_files/tasks/cell_towers_1.yaml # The task being tested. demo_task_file: data_files/tasks/cell_towers_2.yaml # A similar but different task. demo_solution_file: data_files/insights/cell_towers_2_demo.yaml # A demonstration of solving the second task. num_trials: 10运行:
python eval_learning_from_demonstration.py configs/demonstration.yamlREADME 的经验性结论:示范存入记忆后,Agent 的成功率往往有可测量的提升。这里体现了"task 与 demonstration 一并作为 insight 存储、用于解决相似但不同任务"的设计——示范不是被当作死记硬背的答案,而是被当作可迁移的解题模式。
场景五:从自身经验中学习(自教学习循环)
eval_self_teaching.py(配置见 configs/self_teaching.yaml)演示最复杂的"自教(self-teaching)":Agent 不依赖任何用户输入,只凭自动的成功/失败反馈,在后台学习循环中自己找到解法并存入记忆。
关键前提是任务必须可验证且对环境无副作用(side-effect free),这样脚本才能用自动反馈代替人工评判。其流程可概括为(结合模块级 README 的 "Memory Creation and Storage" 描述):
- 对任务做若干次测试以发现失败;
- 一旦发现失败,让模型分析 Agent 的响应,执行"诊断推理或信息缺失的原因 → 把原因措辞成一句老师对学生式的泛化建议 → 把建议临时拼到任务描述上 → 回到第 1 步"的迭代;当某条建议能连续多次帮助 Agent 解题时,就把它作为 insight 写入记忆;
- 对每条待存的 insight,提示 LLM 生成一组自由形式、多词的话题,再对每个话题做向量嵌入,存入映射"话题 → 相关 insight"的向量库。
self_teaching.yaml的test区块进一步定义了训练与泛化测试的规模:
test: task_file_1: data_files/tasks/10_liars.yaml # Train and test on this task. task_file_2: data_files/tasks/100_vampires.yaml # Test generalization on this different, similar task. num_loops: 10 num_final_test_trials: 3脚本逻辑(eval_self_teaching.py):先以空记忆库开始,重复num_loops次"用任务 1 训练 → 在任务 1 上以use_memory=True测num_final_test_trials次 → 在相似但不同的任务 2 上同样测试"的外循环,分别累计两个任务的成功率,最后报告各自的总成功率。
运行:
python eval_self_teaching.py configs/self_teaching.yamlREADME 的经验性结论:借助记忆,Agent 在第二轮(记忆已存在)的测试中通常能同时成功完成两个任务——任务 2 的成绩正是对"泛化能力"的检验,证明学到的不是针对单一问题的死答案。
记忆的写入与读取流水线(源码级原理)
综合模块 README 与源码,可以归纳任务中心记忆在单次交互背后的完整流水线,这也是它区别于"简单把整段对话存起来再全文检索"的关键:
写入(Memory Creation and Storage)
- 依据学习类型产出 insight:用户建议被模型提取后作为 insight;用户示范与其 task 一并存储;自教循环则由后台学习循环产出建议;
- 对每条 insight,LLM 生成多个自由形式的多词话题;
- 每个话题被嵌入为定长向量,连同其指向的 insight 一起存进向量库(
string_map目录 +uid_memo_dict.pkl)。
读取(Memory Retrieval and Usage)
- 先由 LLM 把新任务改写为更一般化的形式(
generalize_task/revise_generalized_task); - 从一般化任务生成一组多词查询话题;
- 从向量库中为每个查询话题取回最相似的一批历史话题及其映射的 insight(
n_results上限); - 依据候选话题相对查询话题的聚合相似度过滤候选 memo(
distance_threshold/relevance_conversion_threshold控制归一化与阈值); - 最后一轮过滤中,用 LLM 校验那些看起来可能有助于当前任务的 insight(
validate_memos)。
通过校验的 insight 会以类似Important insights that may help solve tasks like this的标题列在任务描述之前,随任务一起交给 Agent 处理。
上下文注入(以 Teachability 为例):utils/teachability.py 在每次轮次更新上下文时,会取最近一条用户文本调用query()做记忆检索,将命中结果以Potentially relevant memories:的编号列表追加到模型上下文;同时把该条用户消息中的教导抽取出来转成可供add_memo()使用的记忆。检索-注入-沉淀三件事在每轮自动发生,使 Agent 无需改一行代码就同时具备"用得上旧记忆"与"存得下新教导"两种能力。
观测、调试与常见操作
- 可视化观测:运行评测前请留意配置顶部
PageLogger.level与path。设为DEBUG时,任务中心记忆会把函数的进入/离开、内存加载、检索计数、评测结果等全部写入path下的 HTML 页面(如./pagelogs/teachability/0 Call Tree.html),可用浏览器打开实时追踪"一条建议是如何被存下、又是如何被检索并注入的";若想完全关闭日志,把level设为NONE。 - 清空记忆:
MemoryController(reset=True, ...)或脚本里的reset_memory()会在启动/评测前清空记忆库;对持久化目录memory_bank/(以及为单个评测生成的memory_bank/<场景名>子目录)可直接删除,下次运行从空记忆开始。 - 重复运行的变量控制:
disable_prefix_caching: 1会在上下文前置入随机前缀以去相关;而由于模型输出本身非确定,同一评测多次运行的结果仍会波动,做对比时应取多轮均值。 - 切换目标 Agent/团队:将各配置中
Apprentice.name_of_agent_or_team从AssistantAgent改为MagenticOneGroupChat,即可把同样的记忆能力挂到多 Agent 群聊团队上,样例代码无需改动。
小结与扩展阅读
任务中心记忆把"记忆"从被动塞入上下文的做法,升级为一套"任务/话题驱动的快速学习"机制:MemoryController负责四种学习形式的写入与检索,MemoryBank用向量库做持久化,Teachability等封装把能力以Memory接口形式零侵入挂到 AutoGen Agent 上。五个样例分别覆盖了直接存储检索、用户教导、用户示范、自教学习与跨会话复用,配合PageLogger的页面日志,可逐帧观察记忆生命周期。
进一步深入可参考:
- 样例目录入口:python/samples/task_centric_memory/README.md
- 交互式可教 Agent:chat_with_teachable_agent.py
- 全部 YAML 配置与数据:configs、data_files
- 记忆控制器实现(配置项与默认值):memory_controller.py
- 记忆库与 Memo 数据模型:memory_bank.py
- Memory 接口封装与应用参考代码:utils/teachability.py、utils/apprentice.py
- 模块级设计文档与最小可用示例:task_centric_memory/README.md
需要再次强调的是,该功能标注为EXPERIMENTAL, RESEARCH IN PROGRESS,本文所涉配置项、接口与行为均以当前仓库(gpt-4o-2024-08-06等模型配置、YAML 结构、源码默认值)为准,接入生产系统前请务必结合你所用的 AutoGen 版本核对 API 兼容性。
【免费下载链接】autogenA programming framework for agentic AI项目地址: https://gitcode.com/GitHub_Trending/au/autogen
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考