context_management=[{“type”: “type”}] in tests, not ‘compaction’

这个报错通常出现在查看或运行 OpenAI Python SDK 自带的 Responses 接口测试示例时:测试代码把 context_management 的 type 写成了占位值 "type" ,而 SDK 类型定义与 API 规范只支持 "compaction" 。优先排查你参考的示例/测

快速结论:这个报错通常出现在查看或运行 OpenAI Python SDK 自带的 Responses 接口测试示例时:测试代码把 context_managementtype 写成了占位值 "type",而 SDK 类型定义与 API 规范只支持 "compaction"。优先排查你参考的示例/测试是否来自旧版生成内容,而不是你的业务代码逻辑。

适用环境:OpenAI Python SDK v2.20.0;Python 3.12;操作系统 AnyOS(Issue 标注)。Issue 未提供 CUDA、显卡等依赖信息。

最快修复方案:context_management 中的 "type" 改为 "compaction",即使用 {"type": "compaction", "compact_threshold": 1000}。这是 Issue 中明确指出的唯一受支持枚举值。

注意事项:该修复已在 main 分支合并(#3896),但截至 v3.16.2 尚未包含该修正,正式发布前旧版本中仍可能看到错误的生成示例。若你直接依赖 SDK 源码中的示例,需注意版本差异,不要仅凭测试文件判断 SDK 行为。

问题场景

用户在使用 OpenAI Python SDK 的 client.responses.create() 时,参考了 tests/api_resources/test_responses.py 或生成示例中的 context_management 参数写法。示例里 type 的取值是占位符 "type",导致按照示例传参时无法触发实际的上下文压缩逻辑。该问题属于 SDK 自动生成的测试/示例文件中的取值错误,而非用户业务代码本身的问题。

报错原文

context_management=[{"type": "type"}] in tests, not 'compaction'

原因分析

最可能的原因是:测试文件和示例代码由 Stainless 根据 OpenAPI 规范自动生成,生成过程中把 context_management[].type 的占位符 "type" 当成了实际取值写进示例,而没有替换为规范中唯一支持的枚举值 "compaction"。SDK 源码 src/openai/types/responses/response_create_params.py 的注释也写明目前仅支持 'compaction'。因此使用 "type" 时,API 不会执行预期的上下文管理逻辑。由于问题出在生成器/规范层面,直接改测试文件并不是根本修复方式。

环境排查

  • 确认 OpenAI Python SDK 版本:Issue 报告版本为 v2.20.0。
  • 确认 Python 版本:Issue 报告为 3.12。
  • 确认 context_managementtype 的实际取值是 "type" 还是 "compaction"
  • 确认参考的测试或示例代码是来自 SDK 安装包、本地源码,还是旧版本生成内容。
  • 如启用了 Pydantic 校验,确认校验是否通过;Issue 中提到该参数在有/无 Pydantic 校验下均可工作。

解决步骤

  1. 把你的调用代码中的 context_management 改为正确枚举值:
response = client.responses.create(
    background=True,
    context_management=[
        {
            "type": "compaction",
            "compact_threshold": 1000,
        }
    ],
)
  1. 如果你是在阅读 SDK 自带的测试文件或生成示例,注意该处占位符 "type" 是自动生成遗留问题,不要照搬。
  2. 升级到包含 #3896 修正的 SDK 版本;在升级前,Issue 明确指出修正“pending release and is not included in v3.16.2”,因此 v3.16.2 及更早版本中仍可能存在错误示例。
  3. 不要仅修改 tests/api_resources/test_responses.py 来“修复”,因为该文件由 Stainless 从 OpenAPI 规范自动生成,真正修复需落在规范/生成器,已在 #3896 处理。

验证方法

使用 {"type": "compaction", "compact_threshold": 1000} 调用 client.responses.create(),确认请求正常提交;Issue 评论指出 API 在参数正确时会实际执行上下文管理逻辑,且在有/无 Pydantic 校验的情况下均可工作。若你升级到包含 #3896 的版本,可检查稳定版与 beta 测试中生成示例是否都已改为 "type": "compaction"

参考来源

openai/openai-python #2868

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 24836

发表回复

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