0

0

Autogen 本地 LLM 配置指南:解决 api_type 兼容性错误

碧海醫心

碧海醫心

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

|

447人浏览过

|

来源于php中文网

原创

Autogen 本地 LLM 配置指南:解决 api_type 兼容性错误

本教程旨在解决使用 Autogen 框架连接本地大型语言模型(如通过 LM Studio 运行的 LLM)时遇到的 TypeError: create() got an unexpected keyword argument 'api_type' 错误。该错误是由于 Autogen 近期为保持与 OpenAI API 兼容性,移除了 config_list 中 api_type 参数所致。解决方案是简单地从配置中移除此参数,确保本地 LLM 服务端正确运行即可。

理解 api_type 错误

在使用 autogen 框架与本地大型语言模型(llm)进行交互时,开发者可能会遇到一个 typeerror: create() got an unexpected keyword argument 'api_type' 的错误。这个错误通常发生在配置 config_list 尝试连接本地 llm 服务(例如通过 lm studio 启动的 llama 2 模型)时,尤其当用户在配置中显式指定 api_type: "open_ai" 参数时。

以下是导致此错误的典型代码片段:

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
)

运行上述代码时,程序会抛出如下回溯信息,明确指出 create() 函数接收到了一个意料之外的 api_type 关键字参数:

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

错误根源分析

这个 TypeError 的根本原因在于 Autogen 库的近期更新。为了更好地与 OpenAI 官方 API 的最新规范保持一致,Autogen 内部移除了对 config_list 中 api_type 字段的显式要求。

具体来说:

  1. 兼容性调整: Autogen 旨在提供与 OpenAI API 兼容的接口。随着 OpenAI API 客户端库的演进,某些参数可能不再需要或以不同方式处理。
  2. 自动推断: 对于符合 OpenAI API 规范的本地 LLM 服务(如 LM Studio 提供的 /v1 接口),Autogen 现在能够根据 api_base 的格式和服务的响应,自动推断其为 OpenAI 类型服务,因此不再需要或接受用户手动指定的 api_type 参数。
  3. 版本迭代: 软件库会不断更新和优化。在某个版本中有效的配置,在后续版本中可能因功能调整或接口优化而被移除或修改。

因此,当你在新版本的 Autogen 中继续使用已废弃的 api_type 参数时,就会触发 TypeError。

ModelArts
ModelArts

华为AI开发平台ModelArts,面向开发者的一站式AI开发平台

下载

解决方案:移除 api_type 参数

解决此问题的方法非常直接:从 config_list 的字典配置中移除 api_type 字段即可。Autogen 会正确识别你的本地 LLM 服务。

修正后的配置与完整示例

以下是修正后的 config_list 配置和完整的 Autogen 示例代码:

from autogen import AssistantAgent, UserProxyAgent

# 修正后的配置列表:移除 "api_type"
config_list = [
    {
        "api_base": "http://localhost:1234/v1", # 确保此地址与你的本地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", # 设置为NEVER以实现全自动对话
    max_consecutive_auto_reply=100, # 设置最大连续自动回复次数
    # 添加一个终止条件,以避免无限循环
    is_termination_msg=lambda x: "terminate" in x.get("content", "").lower() or "exit" in x.get("content", "").lower(),
    # 配置代码执行环境,如果本地没有Docker,可以设置为False
    code_execution_config={"use_docker": False, "work_dir": "coding"}
)

# 定义任务
task = """请编写一个Python函数,该函数打印从1到100的所有数字。"""

print("--- 开始对话 ---")
# 启动对话
user_proxy.initiate_chat(
    assistant,
    message=task
)
print("--- 对话结束 ---")

注意事项与最佳实践

  1. 本地 LLM 服务运行状态: 在运行 Autogen 代码之前,请务必确保你的本地 LLM 服务(如 LM Studio、Ollama、vLLM 等)已启动并在 api_base 指定的端口上监听。例如,LM Studio 默认可能在 http://localhost:1234 运行,其 OpenAI 兼容接口通常是 http://localhost:1234/v1。你可以尝试在浏览器或使用 curl 命令访问 http://localhost:1234/v1/models 来验证服务是否可达。
  2. api_key: 对于本地 LLM 服务,api_key 字段通常可以设置为 "NULL" 或任何非空字符串,因为它通常不用于认证。如果你的本地服务确实需要 API Key,请替换为实际的 Key。
  3. Autogen 版本: 保持 Autogen 库更新到最新版本,以获得最佳兼容性和新特性。如果遇到问题,首先检查库的最新文档和发行说明,因为配置方式可能会随版本更新而变化。
  4. 错误排查: 如果在移除 api_type 后仍然遇到连接问题,请检查本地 LLM 服务的日志,确认其是否正常响应 API 请求。网络配置(如防火墙)也可能影响连接。
  5. 对话终止条件: 在 UserProxyAgent 中,设置 human_input_mode="NEVER" 可以实现全自动对话。为了避免无限循环,强烈建议设置 max_consecutive_auto_reply 和 is_termination_msg 来定义对话的终止条件,确保代理能够在完成任务后自行停止。
  6. 代码执行环境: 对于需要执行代码的任务,UserProxyAgent 的 code_execution_config 配置也很重要。例如,"use_docker": False 可以让代码在本地环境中直接执行,方便调试。"work_dir": "coding" 指定了代码执行的工作目录。

总结

TypeError: create() got an unexpected keyword argument 'api_type' 错误是 Autogen 库更新后,由于配置中使用了已废弃的参数而引起的。解决此问题的关键在于理解 Autogen 对 OpenAI API 兼容性的调整,并简单地从 config_list 中移除 api_type 参数。通过遵循本文提供的修正方法和最佳实践,你可以顺利地将 Autogen 框架与本地 LLM 服务集成,享受高效的代理协作体验。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

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

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

237

2023.09.22

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

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

458

2024.03.01

curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

441

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

178

2023.10.30

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

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

320

2023.08.03

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

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

212

2023.09.04

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

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

1502

2023.10.24

字符串介绍
字符串介绍

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

625

2023.11.24

C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

14

2026.01.30

热门下载

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

精品课程

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

共4课时 | 22.4万人学习

Django 教程
Django 教程

共28课时 | 3.7万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.3万人学习

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

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