0

0

Autogen 集成本地LLM:api_type 参数错误解析与配置指南

DDD

DDD

发布时间:2025-08-05 23:22:12

|

642人浏览过

|

来源于php中文网

原创

Autogen 集成本地LLM:api_type 参数错误解析与配置指南

本文旨在解决在使用 Autogen 框架集成本地大型语言模型(LLM)时,遇到的 TypeError: create() got an unexpected keyword argument 'api_type' 错误。该错误是由于 Autogen 近期更新中为保持与 OpenAI API 兼容性而移除了 config_list 配置中的 api_type 参数所致。文章将详细解析错误原因,并提供正确的配置方法,帮助用户顺利运行 Autogen 与本地 LLM 的交互。

理解 Autogen 与本地 LLM 集成

autogen 是一个强大的多智能体编程框架,它允许开发者通过配置不同的智能体来自动化复杂的任务。在使用 autogen 时,通常需要配置一个或多个大型语言模型(llm)作为智能体的“大脑”。除了使用 openai 的官方 api 外,autogen 也支持通过兼容 openai api 接口的本地 llm 服务(如 lm studio、ollama 等)进行集成。

典型的 Autogen 配置会使用 config_list 来定义 LLM 的连接参数,其中包括 api_base(API 端点地址)和 api_key(API 密钥,对于本地模型通常设为 "NULL" 或任意字符串)。在某些旧版本的 Autogen 中,为了明确指定 API 类型,还会包含 api_type 参数。

以下是一个常见的、可能导致问题的配置示例:

from autogen import AssistantAgent, UserProxyAgent

config_list = [
    {
        "api_type": "open_ai",  # 导致错误的参数
        "api_base": "http://localhost:1234/v1",
        "api_key": "NULL"
    }
]

llm_config = {'config_list': config_list}

assistant = AssistantAgent(
    name="assistant",
    llm_config = llm_config
)

user_proxy = UserProxyAgent(
    name="user_proxy",
    human_input_mode="NEVER",
    max_consecutive_auto_reply=100,
)

task = """write a python method to output numbers 1 to 100"""

user_proxy.initiate_chat(
    assistant,
    message=task
)

当运行上述代码时,如果 Autogen 版本较新,可能会遇到以下错误:

TypeError: create() got an unexpected keyword argument 'api_type'

TypeError: create() got an unexpected keyword argument 'api_type' 错误分析

这个 TypeError 明确指出 create() 方法接收到了一个它不期望的关键字参数 'api_type'。从堆栈跟踪中可以看出,这个错误发生在 Autogen 内部调用 OpenAI 兼容客户端的 create 方法时。

错误发生的根本原因在于 Autogen 框架的演进。为了更好地与 OpenAI 官方 API 的最新版本保持兼容性,Autogen 团队在近期版本中对 LLM 配置方式进行了调整。其中一项重要的改变是移除了 config_list 中对 api_type 参数的显式要求或支持。

这意味着,当 Autogen 内部的 openai 客户端尝试处理 config_list 时,如果其中包含 api_type 参数,它会将其作为无效参数传递给底层的 openai.completions.create 或 openai.chat.completions.create 方法,从而导致 TypeError。

Miniflow
Miniflow

AI工作流自动化平台

下载

解决方案:移除 api_type 参数

解决此问题的方法非常直接:从 config_list 配置中移除 api_type 参数即可。由于 Autogen 已经默认将所有 config_list 中的配置视为兼容 OpenAI API 的格式,因此不再需要通过 api_type: "open_ai" 来显式声明。对于本地 LLM 服务,只要它们提供了兼容 OpenAI 接口的端点,Autogen 就能正确识别并使用。

以下是修正后的代码示例:

from autogen import AssistantAgent, UserProxyAgent

# 修正后的 config_list,移除了 "api_type" 参数
config_list = [
    {
        "api_base": "http://localhost:1234/v1", # LM Studio 等本地LLM服务的地址
        "api_key": "NULL" # 本地LLM通常不需要API Key,设为"NULL"即可
    }
]

llm_config = {'config_list': config_list}

assistant = AssistantAgent(
    name="assistant",
    llm_config = llm_config
)

user_proxy = UserProxyAgent(
    name="user_proxy",
    human_input_mode="NEVER",
    max_consecutive_auto_reply=100,
)

task = """write a python method to output numbers 1 to 100"""

user_proxy.initiate_chat(
    assistant,
    message=task
)

通过移除 api_type 参数,Autogen 将能够正确地解析配置,并使用本地 LLM 服务进行交互。

最佳实践与注意事项

  1. 保持 Autogen 更新: 遇到类似问题时,首先检查您使用的 Autogen 版本是否为最新。Autogen 作为一个活跃开发的开源项目,其 API 和内部实现会不断更新。通过 pip install --upgrade pyautogen 命令可以更新到最新版本。
  2. 查阅官方文档与更新日志: 遇到配置问题时,Autogen 的官方文档和 GitHub 仓库的发布说明(Release Notes)是解决问题的最佳资源。它们会详细说明任何破坏性变更(breaking changes)和新的配置选项。
  3. 兼容性: 确保您的本地 LLM 服务(如 LM Studio、Ollama 等)确实提供了与 OpenAI API 兼容的接口。大多数流行的本地 LLM 解决方案都旨在提供这种兼容性,但仍需确认其文档。
  4. 调试: 如果问题依然存在,可以尝试在 llm_config 中添加 verbose=True 来获取更详细的日志输出,这有助于定位问题。

总结

在使用 Autogen 框架集成本地 LLM 时,遇到 TypeError: create() got an unexpected keyword argument 'api_type' 错误,是由于 Autogen 版本更新后移除了 config_list 中 api_type 参数的支持。解决方案是简单地从配置中移除该参数。遵循本文提供的修正方法和最佳实践,可以帮助您更顺畅地在 Autogen 中利用本地 LLM 的强大能力,构建和运行多智能体应用。

相关专题

更多
pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

339

2023.10.09

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

412

2024.12.20

pip设置清华源
pip设置清华源

设置方法:1、打开终端或命令提示符窗口;2、运行“touch ~/.pip/pip.conf”命令创建一个名为pip的配置文件;3、打开pip.conf文件,然后添加“[global];index-url = https://pypi.tuna.tsinghua.edu.cn/simple”内容,这将把pip的镜像源设置为清华大学的镜像源;4、保存并关闭文件即可。

760

2024.12.23

python升级pip
python升级pip

本专题整合了python升级pip相关教程,阅读下面的文章了解更多详细内容。

349

2025.07.23

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

234

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

437

2024.03.01

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

278

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

212

2023.09.04

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

45

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 20.1万人学习

Django 教程
Django 教程

共28课时 | 3.5万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号