AI编程助手
AI免费问答

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

心靈之曲   2025-08-05 23:42   986浏览 原创

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 的格式自动识别服务类型。

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

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 进行交互。定期查阅官方文档是保持代码与库最新版本兼容性的重要习惯。

大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。