OC
OpenAI Python SDK 准备换掉 HTTPX,最容易出问题的是证书和测试
科技 · 2026-08-29 · AI 开发者工具 · 阅读 1

OpenAI Python SDK 准备换掉 HTTPX,最容易出问题的是证书和测试

OpenAI 官方 openai-python 仓库主分支新增了 HTTPX2 迁移说明,文档写明 SDK 的同步和异步 HTTP 客户端将使用 HTTPX2,安装 openai 时自动安装 HTTPX2,不再把旧版 httpx 和 certifi 作为传递依赖。HTTPX2 项目由 Pydantic 团队维护,定位为

作者:林岚|OC 开发者生态编辑

OpenAI 官方 openai-python 仓库主分支新增了 HTTPX2 迁移说明,文档写明 SDK 的同步和异步 HTTP 客户端将使用 HTTPX2,安装 openai 时自动安装 HTTPX2,不再把旧版 httpxcertifi 作为传递依赖。HTTPX2 项目由 Pydantic 团队维护,定位为下一代 Python HTTP 客户端。

一句话结论:普通 API 调用大多不需要改代码,真正需要提前检查的是最小化容器的 CA 证书、企业代理、自定义 Transport、监控钩子和依赖 HTTPX 的测试工具。

先说明版本边界:这份变化目前来自 OpenAI 官方 GitHub 仓库主分支的迁移文档,OpenAI Docs 尚未提供同主题的正式发布说明。生产团队应以自己实际安装版本的发行说明和依赖锁文件为准,不要只看到主分支文件就假定所有环境已经切换。

如果应用只是创建 OpenAI()AsyncOpenAI(),然后调用 Responses、流式输出或其他标准 SDK 接口,迁移文档称现有调用、重试、数值超时和解析后的响应模型保持不变。破坏性变化主要出现在 SDK 与网络层的接缝处。

默认客户端与自定义网络层迁移影响范围的对照场景

第一处是 TLS 信任库。旧 HTTPX 默认使用 certifi 提供的 CA 包;HTTPX2 改为操作系统信任库。这对完整桌面系统通常更自然,也更容易继承企业安装的根证书,但精简容器镜像可能根本没有系统 CA,依赖修改过的 certifi 或企业 TLS 检查代理的环境也可能突然出现证书验证失败。迁移文档建议安装系统 CA,或通过 SSL_CERT_FILESSL_CERT_DIR 和显式 SSLContext 配置信任来源。

第二处是自定义客户端。原来的 httpx.ClientTimeoutURLLimits 和 Transport 类型,需要替换为 httpx2 对应对象。SDK 提供 DefaultHttpx2Client 与异步版本来保留推荐的超时、连接池和重定向默认值,但自定义认证、事件钩子、代理、链路追踪和连接池监控都必须确认是否支持新的对象类型。

第三处是测试。若测试套件使用 MockTransport 或 RESPX 拦截 HTTPX 请求,只会补丁旧 HTTPX 的版本无法截获 HTTPX2 客户端。官方迁移文档保留了临时逃生通道:显式安装旧 httpx,再把旧客户端注入 SDK;但这条路径需要类型转换,而且被明确描述为迁移辅助方案,不应成为新的长期默认。

还有一个容易忽略的依赖问题:一些项目并没有在自己的依赖文件里声明 httpx,只是过去因为安装 OpenAI SDK 顺带获得了它。SDK 不再传递安装旧 HTTPX 后,这些项目自己的 import httpx 会失败。依赖锁定工具能帮助发现差异,但最终还是要把直接依赖写成直接依赖。

关键事实

  • 信息来源:OpenAI 官方 openai-python 仓库主分支迁移文档
  • 默认调用:标准 SDK 接口预计不需要修改
  • 主要变化:系统 CA 信任库、HTTPX2 类型、自定义 Transport、测试拦截
  • 版本提醒:生产环境应以实际 SDK 版本和发行说明为准

OC 判断

这不是 API 语义的大迁移,而是底层网络依赖的替换。越是“标准用法”的项目,影响越小;越是有企业代理、特殊证书、网络观测和复杂 Mock 的项目,越需要提前建立迁移矩阵。依赖升级最危险的地方,通常不是示例代码里的那一行请求。

为什么重要

  • 对开发者:检查是否直接使用 HTTPX 类型,以及是否误把传递依赖当成直接依赖。
  • 对运维团队:最小化容器和企业 TLS 代理需要验证系统 CA 配置。
  • 对测试团队:请求 Mock、认证钩子和链路追踪工具可能需要升级兼容版本。

参考来源

评论

围绕这篇文章补充信息、提出问题或分享观察。

0
暂无评论。

发表评论

继续看看 OC 用户围绕这个话题说了什么、做了什么。

相关帖子

更多

你们的Codex额度提前耗完了没?戒断反应如何?

<p>我在第三天就消耗了只剩1%,忍了一天,然后今天干脆用这最后的1%,开着5.6 Sol 极高 强推我一个提示词笔记本应用的功能落地。最终用时3小时,居然还是跑完了。但是现在还是出现一些戒断反应,感觉啥也做不了,就无精打采的,困。</p> <p>我做了一个Prompt Notebook,专门用来收藏或者记录自己手搓的生图提示词。带Chrome一键收藏插件。支持AI优化提示词。支持提示词中提取常用字段作为提示词百科词汇。也自带生图功能用来测提示词。但是要搭配Cloudflare R2+Worker的图床。</p> <p>今天主要是做一个AI模特的资产库。将常用的AI模特固定下来,进行身份设定,以及模特的一些角色定妆图。之后生图可以直接调用AI模特自动作为垫图。</p> <p>这是AI模特资产库的界面: <img src="/upload/thread/202608/42b5f73e-938f-45de-b74e-da69da9d72a8.webp" alt="1bb0d28b-c7dd-4327-bafa-26b60323cbed" /> 这是主界面的提示词瀑布流,支持关键词或标签搜索: <img src="/upload/thread/202608/3e15b6e7-345f-48b4-aeff-1bbd89afe9d3.webp" alt="ab998e2f-9ccc-4173-832f-223aa6c6fa81" /> 这是提示词笔记的预览界面,可以复制提示词,分享提示词,点击分享还有分享短链:(https://prompt.jintao.co.uk/share/20260806LfsmY) <img src="/upload/thread/202608/bab31972-0468-4582-b873-6309233254a6.webp" alt="20260806-201213" /> 可惜现在没额度了,我又不想换模型折腾。现在还有些界面细节和小功能需要落地完善,可能还要虫子要抓。弄好了,打算放GitHub开源。</p> <p>有朋友想试试的么?</p>

shynloc 2 4

重返OurCoders

<p>从2014年以来好久没逛过这个谈论了,不知道这个谈论的运营现在怎么样,开发人员是不是原来的人,前端UI做得不太好</p>

梁建溢 5 36

测试OurCoders能否发布照片

<p>今天小区的彩虹🌈<img src="https://share.icloud.com/photos/0ebtFydNy8r_gJETON61u4Ybg" alt="图片说明" /></p> <p>看来不能直接发照片,可以把iCloud Link的功能派上用场!</p>

梁建溢 15 45