AutoGen 进阶教程:配置、记忆、检索与工具

原标题AutoGen Advanced Tutorial: Configuration, Memory, Retrieval and Tools

Matthew Berman 讲解 2023 年 AutoGen 界面中的多智能体配置、缓存、检索、可教学记忆和函数调用。

MBMatthew Berman主持 · Forward Future
频道
Matthew Berman
发布
2023年10月26日
视频
38:07
阅读
8 分钟
幻灯片
6
原文
英语
在 YouTube 打开
往下滚动阅读时,视频会缩到右下角继续播放。字幕跟随阅读语言。
阅读语言共 2 种语言可读
由 AI 从英语原文翻译。打开“对照原文”可以逐段核对。
摘要

30 秒看懂

在这期 2023 年 10 月的教程中,Matthew Berman 探索当时的 AutoGen 配置和增强推理功能,随后演示检索增强智能体、持久备忘录、Docker 执行、函数调用和可复用工作流。该框架的 API 与默认设置此后已有变化,因此示例需要对照对应版本的文档使用。

  1. 1模型配置与备用方案当时的 `llm_config` 和 `config_list` 示例为智能体分配模型,并在请求失败后尝试其他配置。
  2. 2带种子的缓存种子选择缓存命名空间,让匹配的请求复用已保存的回答。
  3. 3检索智能体检索代理将外部文档分块并搜索,为智能体提供相关上下文。
  4. 4持久备忘录可教学智能体示例将选定事实和偏好保存在聊天记录之外,以供后续检索。
  5. 5函数调用模型提出对已声明函数的调用,具体实现由应用提供并注册。
  6. 6可复用工作流智能体将 arXiv 搜索、分析和绘图流程整理成一套操作方案。

要点建议

  1. 智能体配置可选择不同模型,并根据 AutoGen 版本提供备用配置项。
  2. 缓存可以复用先前的回答并降低重复推理成本,但缓存输出并非新的模型运行结果。
  3. 检索智能体使用外部文档作为上下文;可教学智能体可以跨对话保存并检索选定的备忘录。
  4. 函数调用将模型提出的调用与应用定义、注册的具体实现分开。
  5. 运行生成代码需要合适的执行环境和权限;Docker 本身必须已安装并运行。
  6. 教程展示的是历史 API,当前默认设置和方法名称应对照所安装版本核实。
全文

按章节阅读整理后的全文

只看原始文稿
01

模型配置与备用方案

Berman 介绍当时的模型配置、模板、错误处理及各智能体的模型选择,并展示本地与托管端点。

在这期 2023 年 10 月的 AutoGen 进阶教程中,我介绍智能体模型配置、缓存、增强推理、检索、可教学智能体、Docker、函数调用和可复用工具。示例反映的是当时展示的 AutoGen;API 和默认设置已经变化,请查阅所安装版本的文档。

智能体的 `llm_config` 包含模型相关设置,其中包括 `config_list`。在演示的实现中,列表可以包含多个模型配置,前面的请求失败时会依次尝试后面的配置。助手智能体和用户代理智能体都可以使用这一思路。

提示词模板可以使用上下文字典提供的值。无需反复改写指令,只需提供问题描述之类的变量,并复用固定的提示词框架。当多个智能体共享指令结构但需要不同输入时,这很有用。

教程展示的配置选项包括启用或禁用缓存、模型配置列表和函数定义。所示文档还介绍了如何处理速率限制和超时,包括在所有配置都尝试完毕后返回失败标记的选项。具体行为取决于版本和设置。

重试设置可以指定总重试时长和等待间隔。我提到递增退避可能很有用,但展示的示例使用固定间隔。温度、token 上限和采样选项等其他模型参数也可以在支持的情况下传入。

在当时的示例中,缓存种子选择已保存回答的命名空间。使用同一种子重复完全相同的缓存请求,可以避免再次调用推理;更换种子或清除相关缓存则会触发新的结果。这是一种缓存机制,并不保证独立的模型运行普遍具有确定性。

配置列表可以直接写在代码中,也可以从 JSON 文件加载,并按选定模型过滤。我的示例先尝试 GPT-4 配置,再尝试 Azure 托管配置,前面的选项失败后再尝试 GPT-3.5。每一项都指定适合相应提供商的模型和连接信息。

历史模型配置列表
幻灯片 1 / 6历史模型配置列表JSON 示例列出了按顺序使用的模型和端点设置。

兼容 OpenAI 的端点也可以指向本地托管或远程开放权重模型。我的示例让 Code Llama 和 Mistral 运行在不同的本地端点上,并将编程模型分配给 coder 智能体,另一个模型分配给 product-manager 智能体。服务器和硬件必须实际支持所选模型。

不同智能体可以使用不同的模型设置,一个团队也可以组合托管模型和本地模型。这种灵活性有助于按角色选择模型,但性能、兼容性、延迟和可用硬件决定了具体组合是否实用。

02

缓存与增强推理

教程解释带种子的缓存和当时的推理封装接口,并介绍调优、API 统一、模板和日志。

缓存示例将保存的回答放在按种子区分的目录中。重复测试时,缓存命中可通过返回已存结果节省时间,并可能节省 API 费用;删除缓存目录或更换种子后,应用就可以请求新的回答。如果应用配置不当,缓存结果也可能掩盖模型或提示词的变化。

带种子的回答缓存
幻灯片 2 / 6带种子的回答缓存示例展示缓存目录以及种子为 42 的智能体配置。

AutoGen 当时的增强推理接口与其多智能体对话框架是不同部分。它提供了对补全调用的封装,支持缓存、配置回退、错误处理、模板和调优等功能。称其为可直接替换接口的描述适用于 2023 年展示的 API,并不自动适用于新版 SDK。

性能调优会在推理预算内搜索表现良好的设置。示例分别指定验证数据、评估函数、指标、搜索空间和预算。对于数学任务,用户自定义的评估器可以将答案与已知解进行比较,并报告是否成功。

教程中的调优示例探索模型、提示词和 token 设置等参数,目标是最大化各测试案例的综合成功指标。示例分别设置了推理预算和优化预算。结果是否有意义,取决于所提供的验证数据、评估器和搜索空间。

在预算内调优配置
幻灯片 3 / 6在预算内调优配置代码提供数据、评估函数、成功指标和分别设置的预算。

在当时的接口中,API 统一使多个托管或本地模型端点可以通过共同的配置方式使用。前一个配置失败时,回退机制会尝试另一个;它并不保证每个提供商都支持相同参数或产生等价结果。

模板避免了每次都手动添加相同指令。我用“逐步解释你的推理”作为可复用后缀的例子,通过上下文插入任务。这条指令在我的部分测试中有所帮助,但并不保证普遍改善回答。

演示的日志接口记录调用历史以便调试,当时的文档将其标记为实验功能。接下来我介绍检索增强生成:智能体可以使用外部文档提供相关上下文,补充模型最初已有的知识。

03

检索与可教学智能体

Berman 演示从文档中检索及自定义嵌入和向量存储,随后展示持久备忘录与用户偏好。

检索示例将 `RetrieveAssistantAgent` 与 `RetrieveUserProxyAgent` 结合使用。检索配置指定问答任务和文档路径。示例将文档分块、对文本生成嵌入并检索相关内容,让智能体回答关于 AutoGen 的问题。

不使用检索文档时,对照示例返回了关于“autogen”另一种含义的泛泛回答。检索可以提供更相关的上下文,但最终答案的质量仍取决于来源、检索过程和模型行为。

示例中的嵌入函数和文本切分方式都可以自定义。我展示了使用 OpenAI 或 Hugging Face 嵌入以及 LangChain 文本分割器的替代方案。嵌入将文本转换为可比较相关性的向量,但它只是检索系统的一个组成部分。

展示的默认方案使用 Chroma;另一个示例通过自定义客户端和检索逻辑,使用 Qdrant 进行检索。在群组聊天中,启用检索的用户代理可以提供信息,另一个代理负责代码执行,其他助手则承担编程角色。

教程随后介绍可教学智能体:它将选定信息保存为持久备忘录,并在以后的对话中检索。这是外部记忆,并不保证底层模型权重经过重新训练,也不保证每条记忆都会被正确召回。

可教学智能体配置
幻灯片 4 / 6可教学智能体配置示例定义了记忆重置、存储路径和召回阈值。

当时的 `teach_config` 示例包含日志详细程度、是否重置数据库、数据库目录、召回阈值和最大检索次数。较高的距离阈值可能召回更多记忆,但相关性可能下降。在该示例中,重置数据库会丢弃之前保存的备忘录。

演示中,用户教给智能体有关 Vicuna 和 Orca 的事实,清除聊天记录后,再让它利用存储的记忆进行比较。这个例子展示的是持久性,而不是独立事实核查:Vicuna 由 LMSYS 基于 LLaMA 微调开发,并不像口述示例暗示的那样仅仅是 Meta 发布的模型。

同一机制也可以保存用户偏好,例如用三个要点概括摘要。反馈会转换成备忘录,供以后任务可能检索使用,用户不必在每次对话中重复该偏好。

04

代码执行与函数调用

教程讨论 Docker 隔离,并介绍函数如何声明、实现和注册。Wolfram 示例展示了模型提出的工具调用。

对于生成的代码,我建议使用 Docker 隔离,并展示了指定 Python 容器和工作目录的代码执行配置。仅安装 Python 的 Docker 包,并不等于安装并运行 Docker 本身。视频中关于自动回退到宿主机执行的说法取决于具体版本;必须核对当前行为,不能直接假定。

函数调用允许智能体提出对应用定义函数的结构化调用。在示例中,配置描述了 Python 和 shell 函数,包括名称和参数,而普通应用代码负责实现它们。

注册函数实现
幻灯片 5 / 6注册函数实现代码将声明的 Python 和 shell 工具名称映射到应用函数。

用户代理注册一个映射,将声明的名称对应到实际函数。模型可以建议一次调用,由应用执行已注册的实现并返回结果。这个分工很重要:模型不能仅凭说出工具名称就获得工具,代码执行也需要适当限制。

另一个示例为一道数学不等式注册了 Wolfram 查询函数。助手建议使用该函数并提供所需查询,应用随后执行函数并返回结果。工具输出仍需结合具体任务进行解释和检查。

05

学习可复用的工具方案

智能体搜索论文、分析结果并生成图表。后续请求将这一流程整理成可复用方案。

最后,我展示智能体完成一个研究流程:搜索关于信任校准的 arXiv 论文,分析应用领域并生成柱状图。代码失败时,用户代理反馈错误,智能体再进行修改。

创建可复用工作流方案
幻灯片 6 / 6创建可复用工作流方案后续请求让助手将此前的研究流程整理为可复用步骤。

后续请求让助手回顾成功的步骤,并生成可复用方案和通用函数。该方案可以用于以后的任务,也可以存入可教学智能体以便检索。目标是复用经过测试的工作流,同时仍要审查生成的代码和结果。

同频道的其他文章

12 张幻灯片34:21EN → 简体中文
Matthew Berman· 2026年10月27日Matthew Berman 解读 Anthropic 的上市文件、AI 增长与治理Matthew Berman, Sam Altman · Forward Future主持人审视 S-1 中的财务指标、算力战略和投票结构,并质疑 AI 快速发展与安全之间的张力。AnthropicAI Safety企业 AI+2
0:26EN → 简体中文
Matthew Berman· 2026年10月25日Sam Altman 谈 AI 世界中的人类价值与问题解决Sam Altman · OpenAI在一段简短的访谈摘录中,Altman 思考解决难题的乐趣,以及人在解读结果时的作用。Human-AI CollaborationFuture of WorkAI Strategy
2 张幻灯片0:36EN → 简体中文
Matthew Berman· 2026年10月25日Kimi K3.1 与魔方求解演示Matthew Berman · Forward FutureMatthew Berman 展示一个被打乱的虚拟魔方如何复原,并对 Kimi K3.1 的测试给予积极评价。评估编程智能体Open-weight models
2 张幻灯片0:21EN → 简体中文
Matthew Berman· 2026年10月24日AI 生成的 Kimi 基准图表使用了虚构分数Matthew Berman · Forward FutureMatthew Berman 要求生成一张 Kimi K3.1 Pro 基准图表,随后发现图中的数字只是示意性占位值。Benchmarks评估Generative media
6 张幻灯片25:50EN → 简体中文
Matthew Berman· 2026年10月24日Kimi K3.1 Pro 实测:3D 演示出色,表现不一,价格有竞争力Matthew Berman · Forward FutureMatthew Berman 测试这款开放权重模型的编程、3D 渲染和视觉讲解能力,并比较基准成绩与价格。Open-weight modelsBenchmarksAI cost & performance+1
2 张幻灯片32:20EN → 简体中文
Matthew Berman· 2026年10月23日本地 AI 究竟适合谁?成本、取舍与混合模式的未来Matthew Berman · Forward FutureMatthew Berman 权衡数据控制和自主权,与硬件成本、设置复杂度及推理速度之间的关系。Local inferenceOpen-weight modelsAI cost & performance+1