[Bug]: OpenAI API key format

用户在定义 AutoGen Agent(如 ConversableAgent、AssistantAgent、RetrieveUserProxyAgent)时,从环境变量或 JSON 配置文件中读取 OpenAI API key,系统输出警告信息,且后续调用 generate_reply 时可能触发

[Bug]: OpenAI API key format

[Bug]: OpenAI API key format

快速结论:该报错通常出现在使用 AutoGen 的 ConversableAgent、AssistantAgent 或 RetrieveUserProxyAgent 时,OpenAI API key 格式未被系统内置的正则规则识别。优先排查 API key 是否包含新格式(例如以 “sk-proj-” 开头且分段较多)并尝试升级 AutoGen。

问题场景

用户在定义 AutoGen Agent(如 ConversableAgent、AssistantAgent、RetrieveUserProxyAgent)时,从环境变量或 JSON 配置文件中读取 OpenAI API key,系统输出警告信息,且后续调用 generate_reply 时可能触发 UnicodeEncodeError。

报错原文

[autogen.oai.client: 08-13 18:12:58] {164} WARNING - The API key specified is not a valid OpenAI format; it won't work with the OpenAI-hosted model.
UnicodeEncodeError: 'ascii' codec can't encode character '\u201c' in position 7: ordinal not in range(128)

原因分析

可能原因有二:

  1. API key 格式变更:OpenAI 近期生成的新型 API key 结构已不同于旧有格式。旧格式匹配的正则规则为 ^sk-([A-Za-z0-9]+(-+[A-Za-z0-9]+)*-)?[A-Za-z0-9]{32,}$,而新格式形如 sk-proj-[35]-[4]-[48]-[16]-[11]_[25]_[2]-[8](方括号内为字母数字位数),这种带 “-proj-” 且多段混合下划线的 key 无法通过该正则校验。
  2. UnicodeEncodeError:此错误可能由系统环境编码(如 ASCII)与输出内容(包含中文双引号等字符)冲突引起,与 API key 警告无直接因果关系,但两者在相同会话中先后出现。

环境排查

  • 确认 AutoGen 版本(例如 0.2.34 之前或之后)。
  • 确认 Python 环境编码(可执行 locale.getpreferredencoding())。
  • 确认使用的 Agent 类型:ConversableAgent、AssistantAgent、RetrieveUserProxyAgent 等。
  • 确认 API key 是来自环境变量、直接字符串还是 JSON 配置文件。

解决步骤

  1. 升级 AutoGen:升级到 0.2.34 或更高版本(如 0.2.35)。有用户反馈升级至 0.2.34 后问题解决;但有用户在 0.2.35 下仍观察到警告,说明可能需要进一步调整。
  2. 验证 API key 格式:检查所使用的 API key 字符串是否包含类似 “sk-proj-” 的前缀或下划线。如果是,则确认新版 key 格式不被旧版正则规则识别。
  3. 修改 API key 来源:可尝试直接从环境变量读取(如 os.environ.get("OPENAI_API_KEY"))而非用 os.environ.get("my_OPENAI_API_KEY"),确保变量名无误且 key 值前后无空格。
  4. 解决 UnicodeEncodeError:如果警告消失后仍遇到该错误,检查系统 locale 设置或使用 Python 3 默认 UTF-8 环境运行。

注意:如果升级后警告仍存在,可能是正则规则尚未完全适配所有新版 key 格式。可尝试手动修改源码中的正则表达式或等待后续版本更新。

验证方法

重新运行触发警告的脚本,确认输出中不再出现 [autogen.oai.client: ...] WARNING - The API key specified is not a valid OpenAI format,且 Agent 能够正常调用 OpenAI 模型(如 gpt-4、gpt-3.5-turbo)。同时确认 agent.generate_reply() 不再抛出 UnicodeEncodeError。

参考来源

microsoft/autogen #3345

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 11055

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注