2023 年 AutoGen 教程:本地智能体设置与代码执行

原标题A 2023 AutoGen Tutorial: Local Agent Setup and Code Execution

Matthew Berman 构建本地助手与用户代理工作流,随后测试智能体如何生成和运行 Python。自这次教程以来,AutoGen 的软件包与 API 已发生变化。

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

30 秒看懂

在这段 2023 年 10 月的教程中,Matthew Berman 使用 conda 环境和 OpenAI 模型,在 VS Code 中设置早期 AutoGen 项目。他配置助手和用户代理,测试缓存与终止条件,并观察到代码执行成功的例子,也看到智能体误解指令的情况。 这是一份历史演示,而非当前安装指南。Microsoft 的[迁移指南](https://microsoft.github.io/autogen/dev/user-guide/agentchat-user-guide/migration-guide.html)介绍了不兼容的 API 变化,并表示 `pyautogen` 软件包的后续版本不再由 Microsoft 提供。视频中显示了一个 Berman 称已撤销的密钥;文章不予复现。

  1. 1本地环境视频创建了 Python 3.11.4 conda 环境,并安装当时使用的 AutoGen 软件包。
  2. 2模型配置与缓存示例配置了模型、超时、缓存种子和温度;现代版本使用不同的 API 和设置。
  3. 3助手与用户代理在演示的旧版设计中,代理控制人工输入、自动回复、终止条件和代码执行。
  4. 4停滞的首次测试GPT-3.5 示例循环往复,未完成文章任务,说明回复上限的重要性。
  5. 5检查实际输出GPT-4 示例将数字和代码写入文件,但并非总能遵循预期指令。

要点建议

  1. 教程将助手智能体与用户代理配对,两者可以交换消息并执行代码。
  2. 人工输入和自动回复上限可以控制监督方式及对话长度,但不能保证执行安全或正确。
  3. Berman 的首次 GPT-3.5 测试停滞,而后续 GPT-4 示例既展示了有用输出,也暴露出未能严格遵循请求的问题。
  4. 缓存命中可以复用完全匹配的请求,但缓存配置和种子名称在后续版本中已有变化。
  5. 不要将 API 密钥提交到源码仓库,并应隔离或禁用不可信生成代码的执行。
  6. 2023 年演示中的软件包、模型名称和 API 属于历史版本;应参考当前迁移文档。
全文

按章节阅读整理后的全文

只看原始文稿
01

设置本地环境

Berman 介绍 AutoGen,并在 VS Code 中创建 conda 环境。他安装了 2023 年教程使用的软件包。

我之前介绍过 AutoGen,现在想逐行演示本地 Python 配置。其思路是让 AI 智能体相互通信,并代表用户使用工具或代码。这段视频录制于 2023 年 10 月:其中的库接口和模型选择属于历史版本,后续 AutoGen 版本可能需要不同代码。

我将 AutoGen 描述为一种组装可定制智能体、让它们协作完成任务的方法。助手可以生成回答或代码,另一个智能体可以代表用户,也可能运行代码。这些能力取决于配置,并不意味着智能体能可靠地完成任何任务。

演示中我使用 VS Code、Anaconda 和 OpenAI 账户。我创建项目文件夹与 `app.py`,打开终端,并创建名为 `autogen`、使用 Python 3.11.4 的 conda 环境。我激活环境,并检查 VS Code 选中的解释器是否与该环境一致。

我安装当时显示为 `pyautogen` 的软件包并导入 `autogen`。不要把这一历史命令理解为安装其最新版本的建议:Microsoft 表示已不再管理该软件包,后续版本不由 Microsoft 提供。其迁移指南解释了受支持的软件包选择及重大 API 变化。

02

配置模型和智能体

他设置模型和缓存参数,然后创建助手及用户代理,并解释人工输入和执行设置。

旧版配置列表包含模型名称,最初是 GPT-3.5 Turbo 16k,以及 API 密钥。我在视频中生成并粘贴密钥,并表示会在发布前将其撤销。实际项目中,应将凭据保存在环境变量或密钥管理器中,避免写入源码仓库和录屏;这里不复现视频中的密钥。

`llm_config` 包含请求超时、该版本缓存行为使用的种子、配置列表,以及值为零的温度。我在编程示例中使用低温度。温度影响采样,并不能保证创造性或正确程度。

当找到匹配请求时,缓存可以避免重复调用 API,节省时间和成本。我展示了与种子 42 关联的缓存,并将其清除以强制重新运行。缓存行为取决于请求匹配和版本:后续 AutoGen 文档区分了 `cache_seed` 与模型服务商的采样 `seed`。

我创建一个带名称和模型配置的 `AssistantAgent`。可以通过系统消息为多个助手设定不同角色,例如 CTO 和 CEO。这个例子只使用一个助手和一个用户代理;赋予角色名称并不会让它们自动成为独立专家。

`UserProxyAgent` 代表用户行事,可以发送回复或执行生成的代码。旧版教程展示了三种人工输入模式:`ALWAYS`、`TERMINATE` 和 `NEVER`。根据旧版文档,`TERMINATE` 可以在收到终止消息或达到自动回复上限时提示用户,而不只是任务真正完成时。

旧版助手与用户代理
幻灯片 1 / 5旧版助手与用户代理示例开始在旧版 AutoGen API 中定义助手和用户代理。

我把 `max_consecutive_auto_reply` 设为 10,并定义终止消息检查。上限可以限制没有进展的对话及其成本,但不能保证任务已经完成。`web` 工作目录保存演示生成的文件。

输入与终止设置
幻灯片 2 / 5输入与终止设置展示的代理配置包含人工输入模式、自动回复上限和终止检查。

代理的代码执行设置允许运行生成的代码,这会对文件和环境产生真实影响。工作目录并非安全边界。应审查生成的代码并限制执行;旧版 AutoGen 文档建议用 Docker 隔离代码执行,也可以禁用执行。

03

运行并修改任务

首次测试陷入循环,后续示例使用 GPT-4 生成文件。输出揭示了模糊指令如何导致非预期结果。

我编写一个要求总结文章的任务,然后通过用户代理的 `initiate_chat` 方法发起对话,将助手和任务作为消息传入。展示的 2023 年 API 只是旧版设计示例;较新的 AutoGen 版本改变了智能体和执行接口。

没有进展的智能体对话
幻灯片 3 / 5没有进展的智能体对话首次运行循环产生客套回复,而没有完成请求的任务。

最初的 GPT-3.5 运行没有完成文章任务,智能体反而交换了无帮助的消息。我指出,10 次自动回复的上限有助于防止对话过长,并展示了此次运行创建的缓存。

为了进行更简单的测试,我切换到 GPT-4,清除缓存,并要求编写 Python 输出 1 到 100 的数字,将结果保存到文件。智能体生成了包含数字的 `numbers.txt`。作为写文件任务它成功了,但那不是我想要的代码文件。

写入文件的数字
幻灯片 4 / 5写入文件的数字工作目录包含一个写入生成数字的文本文件,暴露出结果与预期代码文件请求不一致。

我不小心在提供反馈前退出,于是修改提示词,明确要求将代码保存到文件。我清除先前输出并重新运行。这次演示在工作目录中生成了一个 Python 文件,说明准确的指令和实际产物都需要检查。

04

第二个任务与后续步骤

Berman 要求智能体修改第一个结果,然后检查文件。他讨论保护凭据和改善项目结构的方法。

我添加第二个任务,要求智能体把代码从输出 1–100 改为输出 1–200,并发起另一段对话。这次我把人工输入切换为 `NEVER`。这移除了工作流中的批准机会,但并不会使自动执行代码没有风险。

第二次运行没有完全遵循我的预期指令:原有 Python 文件仍在,智能体创建了一个包含 1 到 200 的文本文件,以及更新该文件的代码。我认为部分偏差来自提示词不够精确,但观察到的结果也说明生成式智能体可能误解任务。

第二次运行的结果
幻灯片 5 / 5第二次运行的结果助手报告一个包含 1–200 的数字文件;Berman 指出它并未完全符合指令。

我建议把模型和 API 密钥移到环境变量或单独的配置文件中,避免将秘密提交到仓库,并整理智能体定义。示例还可以扩展其他任务或智能体,但当前用户应遵循对应版本的文档,并核验生成的代码和输出。

同频道的其他文章

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
2 张幻灯片0:36EN → 简体中文
Matthew Berman· 2026年10月25日Kimi K3.1 与魔方求解演示Matthew Berman · Forward FutureMatthew Berman 展示一个被打乱的虚拟魔方如何复原,并对 Kimi K3.1 的测试给予积极评价。评估编程智能体Open-weight models
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
6 张幻灯片1:03:37EN → 简体中文
Matthew Berman· 2026年10月23日Matthew Berman 团队测试 Kimi K3.1:动画、游戏与图表Matthew Berman, Alex, Brian · Forward Future一场团队直播问答变成了对 Kimi K3.1 的非正式测试,内容涵盖个人智能体工作流、动态图形、浏览器游戏和基准图表。编程智能体Generative media评估+2
0:53EN → 简体中文
Matthew Berman· 2026年10月22日Sam Altman 谈 AI 与新知识的发现Sam Altman · OpenAIAltman 预计,数学发现方面的进展将延伸到生物学、材料和能源领域。AI for scienceMathematicsComputational Biology+1