2026/9/16 3:39:09

Windows 11 上部署 AutoGen、AutoGen Studio 与 LiteLLM 的完整实战指南

Windows 11 上部署 AutoGen、AutoGen Studio 与 LiteLLM 的完整实战指南 提到 AutoGen 这个微软的多智能体框架我身边不少同事的第一反应是“环境是不是很难搞”尤其看到 AutoGen Studio 和 LiteLLM 这套组合时更是容易打退堂鼓。最近我刚好在一台全新的 Windows 11 机器上把 AutoGen、AutoGen Studio、LiteLLM 三件套完整部署了一遍从 Python 环境到可视化工作台再到统一模型网关整个过程不算短但踩完坑之后回头看绝大多数问题都是可以提前规避的。这篇记录就是给你一份能直接照着抄的 Windows 部署流程附带我实际执行过的命令、参数说明和折腾过程中遇到的各种报错无论你是第一次接触 AutoGen还是已经在 Linux 上跑过但想在 Windows 复现都可以参考。1. 为什么这套组合值得在 Windows 上折腾1.1 三件套各自解决什么问题先说清楚这套组合里每个角色是干什么的因为很多人第一次看文档会被一堆名词绕晕。AutoGen 是微软开源的 multi-agent 对话框架核心思路是让几个具备不同角色定位的大模型智能体通过对话协作完成复杂任务比如一个 Agent 负责计划拆解另一个 Agent 负责代码生成还有一个负责结果审查它们之间可以自动来回沟通最终收敛出一个更可靠的答案。AutoGen Studio 则是给 AutoGen 套了一层图形化外套。它把 Agent、Workflow、Session 这些概念变成了可以拖拖拽拽配置的网页界面不需要一开始就写大量 Python 代码适合先验证思路、做原型。要知道如果你只想快速看看多智能体协作是什么效果直接命令行写脚本的成本还是有点高的AutoGen Studio 把大部分门槛拆掉了。LiteLLM 在这里扮演的是模型网关它的存在非常有价值。真实项目里你很可能同时用到 OpenAI、Azure OpenAI、本地部署的模型或者其他云厂商的模型如果每个模型都用各自的 SDK 去对接代码会被各种供应商细节塞满。LiteLLM 提供了一套 OpenAI 兼容的接口你把自己的模型密钥和模型列表配在它上面AutoGen 只需要面向一个标准地址发起请求就行后续新增模型基本上不用动业务代码。1.2 Windows 部署的几个隐藏成本Linux 和 macOS 上的教程铺天盖地但 Windows 部署有几个特别容易被忽略的“隐藏成本”。第一个是 Python 环境。AutoGen 及 LiteLLM 的依赖链比较长新版代码对 Python 版本也有要求如果机器上装了最新版 Python直接 pip install 有概率掉进“某个依赖库还没有适配 Windows 预编译包”的坑一编译就报错。第二个是编译工具链。很多依赖库在 Windows 上没有预编译 wheelPyPI 会尝试从源码构建这时候系统里如果没有 Visual C Build Tools就会出现 fatal error C1083 这类让人头皮发麻的编译错误。第三个是权限和路径。Windows 对路径中的中文、空格、用户名带特殊字符都很敏感而且有些安装步骤需要管理员权限。很多人在 Linux 上一条命令装完的东西到 Windows 上就被这些细节卡住。下文我会把每一步都拆开讲清楚。1.3 我最终采用的环境清单整个部署过程我用了相对稳妥的组合如果你没有特殊原因建议直接参考这个清单能少踩很多坑。组件版本/参数说明操作系统Windows 11 Pro 23H2Windows 10 21H2 以上理论均可Python3.10.11团队兼容性最好不建议用 3.12Visual C Build Tools2022 版本安装“使用 C 的桌面开发”工作负载包管理pip Poetrypip 用于快速安装Poetry 用于项目级依赖锁定AutoGen 核心库autogen-agentchat 0.4.x新版框架架构更清晰AutoGen Studioautogenstudio 最新版与核心库配套LiteLLMlitellm[all] 最新版统一模型网关这套组合在官方文档里都找得到对应条目我实际跑下来稳定性和兼容性都没有问题。下面进入正题。2. 环境准备先把地基打牢2.1 Python 3.10 安装与 PATH 检查很多人在 Windows 上安装 AutoGen 失败不是因为 AutoGen 本身难装而是 Python 环境没弄干净。我第一次在一台机器上直接装了 Python 3.12后面安装某个依赖时就开始编译报错一查发现是依赖库对 3.12 的官方支持还没跟上。所以这里我强烈建议你选用 Python 3.10 或 3.11稳妥起见我使用的是 3.10.11。去 Python 官网下载 Windows installer 的时候有一个非常关键的细节安装向导第一页最下方的 “Add Python to PATH” 复选框一定要勾上。如果不勾后续在命令行里执行 python 会提示找不到命令虽然也可以手动加 PATH但完全没必要给自己添麻烦。装完之后打开新的 PowerShell注意一定是新开的窗口否则环境变量不会刷新执行python --version pip --version正常情况下会输出对应的版本号。如果 python 能识别但 pip 识别不了可以尝试python -m pip --version另外Windows 应用商店版的 Python 有时候会有一些奇怪的权限限制建议直接装官网版别用商店版。安装时选择 “Install Now” 还是 “Customize installation” 都行我习惯选择自定义安装并勾选所有可选特性包括 pip、py launcher 等后续省事。2.2 Visual C Build Tools 是 Windows 部署的隐形门槛这一步看着和 AutoGen 没关系但它是很多编译类报错的根源。AutoGen 和 LiteLLM 的依赖里包含了 pydantic-core、tokenizers 这类带 Rust/C 扩展的库在 Windows 上如果找不到编译需要的工具链pip 会尝试源码编译并立刻失败。有个很典型的报错长这样error: Microsoft Visual C 14.0 or greater is required. Get it with Microsoft C Build Tools解决办法是先下载 Visual Studio Build Tools 安装程序然后在“工作负载”里勾选“使用 C 的桌面开发”右侧会默认带上 MSVC 编译器和 Windows SDK。安装过程比较久但必须耐心等它装完建议重启一次系统再继续后续操作。装完后可以验证一下 C 编译器是否可用。重新打开 PowerShell执行where cl.exe在新版本的 Build Tools 中cl.exe 的路径通常不会被自动加入全局 PATH所以找不到也是正常的。此时你只要确保 Build Tools 已经安装成功就可以了pip 在安装包的时候会主动读取 vswhere 的位置不需要手动设置VSINSTALLDIR。2.3 Poetry 与 pip 国内镜像配置如果是自己临时玩玩只装核心库的话直接用 pip 也没问题。但如果你想长期维护一个 AutoGen 项目建议项目级依赖还是交给 Poetry 管理它生成的 lock 文件能锁定所有传递依赖的版本后续换机器复现环境会省很多事。安装 Poetry 最干净的方式是执行官方安装脚本(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -安装完成后需要把 Poetry 的可执行目录加到 PATH。默认路径是%USERPROFILE%\AppData\Roaming\Python\Scripts如果是在普通权限下安装的话。加好之后重新打开终端运行poetry --version确认。国内网络环境下无论是 pip 还是 Poetry 默认源都可能比较慢建议统一配置成国内镜像。pip 可以使用清华源执行一次配置命令pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simplePoetry 则在pyproject.toml所在目录或者全局配置里指定源poetry source add --priorityprimary tuna https://pypi.tuna.tsinghua.edu.cn/simple我之前没配镜像的时候装一个依赖能等十几分钟配置完基本上几十秒就完事了。这一步强烈建议做。3. 安装 AutoGen 核心库3.1 创建虚拟环境AutoGen 的依赖体系比较重不同项目之间很容易出现版本冲突所以我建议每个项目都建独立虚拟环境。如果你用 Poetry直接通过它创建项目即可poetry new my-autogen-demo cd my-autogen-demo poetry env use python3.10 poetry shell如果你想用轻量级的 venv也可以直接在项目目录里执行python -m venv .venv .\.venv\Scripts\Activate.ps1如果 PowerShell 提示无法加载脚本“Activate.ps1”说明系统默认禁止运行脚本。这是安全策略在起作用只需要以管理员身份打开 PowerShell 执行一次Set-ExecutionPolicy -Scope CurrentUser RemoteSigned然后重新激活虚拟环境即可。这一步在 Windows 上非常常见不懂底层原理的人经常会卡在这里其实就是个执行策略开关。3.2 安装 pyautogen / autogen-agentchat 的版本选择这里有个很容易混淆的点。AutoGen 早期版本的包名是pyautogenAPI 风格是from autogen import AssistantAgent。从 0.4 开始项目结构进行了大调整拆分出了autogen-core、autogen-agentchat等新包命名空间也变成了from autogen_agentchat import ...。如果你是在旧的教程上看到pip install pyautogen那对应的是旧版 API语法更传统但官方已经逐渐把新特性重心移到 0.4 系列。我这次部署使用的是新版pip install autogen-agentchat这个包会帮你带上autogen-core和autogen-ext等基础依赖。如果你后续还要用一些扩展能力比如与特定模型供应商的集成可以单独安装对应扩展pip install autogen-ext[openai]如果你确实只想用最经典的AssistantAgent和UserProxyAgent快速起一个 demo旧版pyautogen也能用但需要注意它和 0.4 版的 API 不兼容两者不要混装。同一个虚拟环境里同时出现 autogen 和 autogen_agentchat 两套包非常容易让人困惑我建议是二选一并全程保持一致。3.3 验证安装与模型配置安装完成后先验证一下基本导入是否正常python -c import autogen_agentchat; print(autogen agentchat ok)能输出提示信息就说明核心库装好了。接下来要给 AutoGen 配置大模型。新版 AutoGen 支持多种配置方式最简单的就是写一个OAI_CONFIG_LIST文件内容是一个 JSON 数组每一项对应一个模型配置。[ { model: gpt-4o, api_key: sk-你的密钥, base_url: http://localhost:4000 } ]这里我把base_url指向了 LiteLLM 的默认服务地址后面会详细说明为什么这么配。如果你暂时没接 LiteLLM也可以直接把api_key换成真实供应商密钥base_url留空或者不写AutoGen 会走该模型默认的官方地址。我更推荐把所有模型请求都收敛到 LiteLLM 这一层好处是密钥不需要散落在每个客户端脚本里而且模型切换非常灵活。为了验证配置是否正确可以写一个极简的测试脚本test_agent.pyimport asyncio from autogen_agentchat.agents import AssistantAgent from autogen_agentchat.ui import Console from autogen_ext.models.openai import OpenAIChatCompletionClient async def main(): model_client OpenAIChatCompletionClient( modelgpt-4o, api_keysk-你的密钥, base_urlhttp://localhost:4000, ) agent AssistantAgent( nameassistant, model_clientmodel_client, system_message你是一个简洁的助手。, ) await Console(agent.run(task用一句话介绍 AutoGen)) asyncio.run(main())第一次跑通这个脚本基本就说明 AutoGen 核心链路已经没问题了。4. AutoGen Studio 图形化工作台4.1 安装与启动AutoGen Studio 的安装在一个独立的虚拟环境或者同一个项目虚拟环境里都可以官方推荐在独立环境安装。详细的资源我参考了官方文档和社区的一些实录实际操作如下pip install autogenstudio安装完成后在命令行执行autogenstudio ui --port 8081首次启动会自动初始化数据库和应用目录默认端口是 8081如果你想换端口也可以改成 8082、9090 之类。启动成功的标志是终端里出现类似 “Application started” 的日志然后浏览器访问http://localhost:8081就能看到 Studio 界面。如果你不需要默认的 SQLite 存储可以通过--appdir指定一个目录存放应用数据autogenstudio ui --port 8081 --appdir D:\autogen-Studio\app这个参数适合想把数据放到非系统盘的人避免系统盘空间紧张。数据目录如果不指定默认会放在用户目录下一旦重装系统容易丢。4.2 浏览器登录与界面结构打开http://localhost:8081后AutoGen Studio 会展示一个相对简洁的后台管理界面。左侧导航一般包括 Build、Playground、Sessions、Models 等区域。Build 区域用来创建 Agent、Model、Workflow。你也可以先在这里配置模型连接信息把刚在代码里写的模型客户端在界面上填一遍。Studio 的好处是不用写代码你在界面上建立 Agent 并选择模型保存后立刻就能在 Playground 里发起对话测试。在一个比较典型的配置里我会建一个名为planner的 Agent系统消息设置为“负责把用户需求拆解为可执行步骤”再建一个名为executor的 Agent系统消息设置为“负责根据步骤编写代码并执行”。它们之间通过 Workflow 串联起来就能复现最基础的 multi-agent 协作流程。4.3 创建 Agent 和 Workflow在 Studio 中创建 Agent 的界面有点像在做表单核心字段包括name唯一标识不能有空格system_message角色设定model_client选择你在 Models 区域配置好的模型创建 Workflow 的流程则是把一个一个 Agent 按顺序拖放到流程里。Studio 支持线性和带条件分支的编排虽然图形界面能做的东西不如代码那么灵活但用来快速验证一个想法完全足够。我第一次用 Studio 时遇到一个惯性问题以为 Workflow 建好就能跑结果点了 Run 之后发现会话没有真正调用模型检查才发现是 Models 区域里没有配置模型密钥或者配置了但模型名和 Agent 里选的不一致。这里有个小技巧先在 Models 里把模型测试通再回去建 Agent 和 Workflow顺序不要反。4.4 与模型网关联通Studio 内部的 Agent 要真正跑起来必须有可用的模型端点。如果机器上已经启动了 LiteLLM 网关那在 Studio 的 Models 区域新增一条配置模型名称gpt-4o接口地址http://localhost:4000鉴权密钥可以是任意非空字符串也可以配置一个统一的密钥因为 LiteLLM 默认会启动一个 OpenAI 兼容接口所以 Studio 只需要把请求发到localhost:4000就能转发到真实模型。这一步接好之后整个链路就完整了浏览器里的 Studio 界面 - AutoGen 核心库 - LiteLLM 网关 - 真实的模型服务。5. LiteLLM 多模型网关配置5.1 LiteLLM 在整套链路中的定位LiteLLM 的作用是统一各种模型供应商的调用方式。比如你本地有一个 OpenAI 兼容服务同时还有 Azure OpenAI 和 Anthropic 的模型如果直接对接 AutoGen你要在客户端里分别处理不同的 base_url 和鉴权方式。而 LiteLLM 作为中间层对外只暴露一个标准 OpenAI 风格接口内部则根据配置把请求路由到不同模型。这个思路有点像你手机里装一个聚合支付应用不同支付渠道在底层各有各的接口协议但对你来说都只是扫同一个码。LiteLLM 就是模型这一层的聚合网关。你在 Windows 上部署它本质上是在本机起一个轻量服务让 AutoGen 和 Studio 都通过这个服务消费外部模型。5.2 安装与首次启动安装 LiteLLM 可以直接用 pip 安装完整版本pip install litellm[all]这里使用 all 模式是因为它会附带所有模型供应商的扩展依赖方便后续想接什么模型就接什么模型。如果你只想用 OpenAI 兼容的服务也可以只装基础版本但all一劳永逸后续不用再回来补依赖。启动一个最简单的网关服务litellm --model openai/gpt-4o --port 4000执行完以后LiteLLM 会监听本机的 4000 端口并默认尝试读取环境变量OPENAI_API_KEY作为调用密钥。你可以在启动前临时设置环境变量$env:OPENAI_API_KEY sk-你的密钥 litellm --model openai/gpt-4o --port 4000如果一切正常日志里会出现服务地址和模型列表信息。此时在另一个终端里测试一下curl http://localhost:4000/v1/models能返回到模型列表说明网关已经起来了。5.3 用 YAML 配置多个模型命令行启动方式适合快速验证但如果想管理多个模型建议写成 YAML 配置文件。下面是一个配置多个模型的简化示例model_list: - model_name: gpt-4o litellm_params: model: openai/gpt-4o api_key: os.environ/OPENAI_API_KEY - model_name: claude-3-5-sonnet litellm_params: model: anthropic/claude-3-5-sonnet api_key: os.environ/ANTHROPIC_API_KEY配置文件的好处是你可以在model_name里用自己习惯的别名比如把两个不同供应商的模型统一命名为main-chat-modelAutoGen 那边只需要配置一个模型名实际路由到哪个模型完全由网关控制。启动时指定配置文件litellm --config .\config.yaml --port 4000很多人在这一步会踩一个坑配置文件里写的模型名和真实模型名混在一起分不清楚。简单理解就是model_name是暴露给外部客户端看的名字litellm_params.model才是真正要请求的供应商模型标识。搞清楚这个映射关系后面排查问题会轻松很多。5.4 让 AutoGen 走 LiteLLM 的 OpenAI 兼容接口当 LiteLLM 网关跑起来后AutoGen 的核心库配置和 Studio 的模型配置都可以指向同一个地址。在代码里最直接的写法是用OpenAIChatCompletionClientmodel_client OpenAIChatCompletionClient( modelgpt-4o, api_keysk-dummy, base_urlhttp://localhost:4000, )注意这里api_key不一定是真实密钥因为 LiteLLM 可能没有开启鉴权只要请求头里存在一个非空的 Authorization 字段就行。如果 LiteLLM 服务配置了 master key 鉴权那这里就要填对应的 key。之前我在部署过程中试过把 AutoGen、AutoGen Studio 和 LiteLLM 三者在同一台 Windows 机器上全部本地运行最后浏览器开 8081LiteLLM 在 4000整个链路非常顺。如果你把 Windows 防火墙打开着一般本地访问 localhost 不会有问题但如果从局域网其他机器访问就需要在防火墙里允许对应端口这一点很多人会忽略。6. 常见问题与排查速查表6.1 安装阶段高频报错错误现象可能原因解决办法fatal error C1083缺少 Visual C Build Tools安装 Build Tools 并勾选“使用 C 的桌面开发”pip install 超时网络到官方源不稳定配置清华等国内镜像源之后再安装ModuleNotFoundError: autogen装的是 autogen_agentchat代码却 import autogen统一旧版包名和新版包名不要混用找不到 litellm 命令Python Scripts 目录不在 PATH重新打开终端确保虚拟环境已激活PowerShell 禁止运行脚本系统默认 RemoteSigned 未开启以管理员身份执行 Set-ExecutionPolicy这些错误里最容易被忽视的是 Build Tools。我记得有一次在干净虚拟机上装autogen-agentchat前面都很顺利等装到 tokenizers 的时候突然抛出一个红通通的编译错误当时第一反应是“Python 版本问题”折腾半天才发现是cl.exe环境缺失。后来重装了 Build Tools同样的命令一次性通过。6.2 启动阶段异常错误现象可能原因解决办法8081 端口被占用之前已有 Studio 实例或别的应用在监听换个端口比如 autogenstudio ui --port 80824000 端口被占用其他服务占用启动 LiteLLM 时用 --port 4001浏览器打不开界面服务启动失败看终端是否有 “Application startup complete” 日志Studio 里模型测试失败模型配置的 base_url 写错先 curl 测试网关地址是否通本地访问正常但远程无法访问Windows 防火墙拦截添加入站规则允许 8081/4000 端口端口占用这个问题在 Windows 上尤其常见因为后台服务太多你根本不知道某个端口被什么程序占了。排查命令是netstat -ano | findstr :8081然后根据进程 PID 去任务管理器里看是谁占的。如果是残留的 Studio 进程直接结束进程就行。如果不想杀进程换个端口最省事。6.3 运行时性能与并发建议在我实际使用中AutoGen 和 LiteLLM 同时跑在 Windows 上性能瓶颈通常不在 CPU 和内存而在“并发连接数”。当你启动多个 Agent 并行协作时对 LiteLLM 网关的请求会集中涌过来如果模型服务本身响应慢整个链路就会排队。建议初次尝试时控制 Agent 数量不要一上来就并行二三十个。内存方面AutoGen Studio 的网页服务和 LiteLLM 都是 Python 进程默认占用的内存并不高但在加载模型配置、处理长对话上下文时会明显上涨。如果内存少于 16GB建议不要把模型网关和其他重型应用放同一台机器。还有一个很实际的经验Windows 上 Python 进程在长时间运行后偶尔会出现内存占用只增不减的情况。这通常不是框架的问题而是 Python 自身的垃圾回收没及时触发。简单的办法是定期重启一下这些本地服务不用太在意。最后再分享一个小技巧LiteLLM 的日志默认会输出到终端内容比较详细如果觉得噪音太多可以加--log-level info控制日志级别。排查问题的时候再把级别调到 debug能看到每次请求路由到了哪个模型、响应耗时多少定位问题非常有用。