0

0

AutoGen 本地 LLM 配置指南:解决 api_type 错误

心靈之曲

心靈之曲

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

|

1119人浏览过

|

来源于php中文网

原创

autogen 本地 llm 配置指南:解决 api_type 错误

本文旨在解决用户在使用 AutoGen 框架与本地大型语言模型(LLM)集成时,遇到的 TypeError: create() got an unexpected keyword argument 'api_type' 错误。该错误是由于 AutoGen 库近期更新,移除了 config_list 中 api_type 参数的支持,以更好地兼容 OpenAI API 标准。通过移除配置中的 api_type 字段,用户可以顺利连接并使用本地 LLM 服务。

错误现象分析

当用户尝试使用 AutoGen 库配置本地 LLM 服务(例如通过 LM Studio 启动的 Llama 2 模型),并在 config_list 中指定 api_type: "open_ai" 时,程序会抛出 TypeError: create() got an unexpected keyword argument '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
)

运行上述代码将产生类似以下的错误堆栈信息:

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

此错误明确指出 create() 方法不接受 api_type 参数。尽管在 AutoGen 的早期版本或某些示例中可能存在此参数,但为了与 OpenAI 官方 API 保持一致性,AutoGen 核心库已移除对 api_type 的显式支持。现在,只要 api_base 指向一个兼容 OpenAI API 规范的端点(例如 /v1 路径),AutoGen 就会自动将其视为 OpenAI 兼容服务。

解决方案

解决此问题的方法非常直接:从 config_list 中的配置字典中移除 api_type 字段即可。AutoGen 会根据 api_base 的格式自动识别服务类型。

Adrenaline
Adrenaline

软件调试助手,识别和修复代码中错误

下载

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

from autogen import AssistantAgent, UserProxyAgent

# 修正后的 config_list,移除了 "api_type" 字段
config_list = [
    {
        "api_base": "http://localhost:1234/v1", # 确保指向本地LLM服务的V1兼容API端点
        "api_key": "NULL" # 对于本地LLM,通常设置为"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
)

关键修正点: 移除了 config_list 中字典内的 "api_type": "open_ai" 行。

注意事项与最佳实践

  1. api_base 的格式: 确保 api_base 指向的本地 LLM 服务端点是符合 OpenAI API 规范的,通常这意味着 URL 应该以 /v1 结尾(例如 http://localhost:1234/v1)。LM Studio、Ollama 等工具通常会提供这样的兼容端点。
  2. api_key 的处理: 对于本地 LLM 服务,api_key 字段通常不是必需的,但 AutoGen 的 OpenAI 客户端可能仍要求其存在。在这种情况下,可以将其设置为 "NULL"、"sk-xxxx" 或任何非空字符串作为占位符。
  3. 版本兼容性: AutoGen 库的更新迭代较快,API 可能会发生变化。在遇到类似 TypeError 或配置问题时,建议查阅 AutoGen 的官方文档或 GitHub 仓库(尤其是 CHANGELOG 或 Roadmap 部分),以获取最新的配置要求和 API 规范。
  4. 调试本地 LLM 服务: 在运行 AutoGen 之前,请确保您的本地 LLM 服务(如 LM Studio)已正确启动,并且其监听的端口与 api_base 中指定的端口一致。可以通过在浏览器中访问 api_base 地址(例如 http://localhost:1234/v1/models)来验证服务是否正常运行。

总结

TypeError: create() got an unexpected keyword argument 'api_type' 错误是由于 AutoGen 库为保持与 OpenAI API 的兼容性而移除了 api_type 参数所致。用户只需从 config_list 中移除此参数,并确保 api_base 正确指向本地 LLM 服务的 OpenAI 兼容端点,即可顺利使用 AutoGen 与本地 LLM 进行交互。定期查阅官方文档是保持代码与库最新版本兼容性的重要习惯。

相关专题

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

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

233

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

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1492

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

622

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

572

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

586

2024.04.29

c++ 根号
c++ 根号

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

25

2026.01.23

热门下载

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

精品课程

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

共4课时 | 19万人学习

Django 教程
Django 教程

共28课时 | 3.5万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.2万人学习

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

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