support for responses.create() with AzureOpenAI and AsyncAzureOpenAI

该报错通常出现在使用较旧版本的 openai Python SDK 时, AzureOpenAI 或 AsyncAzureOpenAI 客户端尚未暴露 .responses 属性导致调用失败。优先升级 openai 库到支持 Azure /responses 端点(API 版本 2025-03-01

快速结论:该报错通常出现在使用较旧版本的 openai Python SDK 时,AzureOpenAIAsyncAzureOpenAI 客户端尚未暴露 .responses 属性导致调用失败。优先升级 openai 库到支持 Azure /responses 端点(API 版本 2025-03-01-preview)的版本。

适用环境:Issue 中已验证的环境为 Python 环境下的 openai 库 1.74.1 及以上版本;支持 gpt-4o-minigpt-5 等模型;Azure API 版本使用 2025-03-01-preview。未涉及操作系统、CUDA、显卡等环境。

最快修复方案:升级 openai 库到 1.74.1 或更新版本,然后直接使用 client.responses.create(...)(AzureOpenAI、AsyncAzureOpenAI 均已支持)。

注意事项:如果升级后仍报 AttributeError,需要检查导入路径是否为 from openai import AzureOpenAI / AsyncAzureOpenAI,并确认 API 版本设置为 2025-03-01-preview 或更新;Issue 关闭时已验证当前代码支持,但未验证全部旧版本兼容性。

问题场景

在 Python 项目中使用 openai 官方 SDK 的 AzureOpenAIAsyncAzureOpenAI 客户端,当调用 await client.responses.create(...) 触发 AttributeError,因为 .responses 资源尚未在 Azure 客户端类上暴露。此问题发生在 Azure OpenAI 已支持 /openai/responses 端点之后(API 版本 2025-03-01-preview

报错原文

support for responses.create() with AzureOpenAI and AsyncAzureOpenAI

client = AsyncAzureOpenAI(...)
await client.responses.create(...)
raises an AttributeError because .responses is not available on that class.

原因分析

可能原因:SDK 版本过旧。早期版本的 openai Python 库仅对默认的 OpenAI/AsyncOpenAI 客户端暴露了 .responses 属性,而在 AzureOpenAI/AsyncAzureOpenAI 客户端上没有同步支持该资源。Azure 官方在 2025-03-01-preview API 版本中提供了 /responses 端点支持后,SDK 又需要对应版本跟进。

环境排查

  • 确认 openai Python 库版本,建议 ≥ 1.74.1(低于此版本可能不支持 .responses
  • 确认 Azure API 版本设置是否为 2025-03-01-preview 或更高
  • 检查导入路径:from openai import AzureOpenAI / from openai import AsyncAzureOpenAI
  • 确认连接的资源名称、部署模型名称是否有效(需要 Azure 已开通 /responses 支持的模型部署点)

解决步骤

  1. 升级 SDK:更新 openai 库到最新版本(已验证 1.74.1 可用),保持与其他依赖兼容即可。
  2. 改用异步客户端调用:在代码中实例化 AsyncAzureOpenAI 后,直接调用 response = await client.responses.create(model="<deployment-name>", input="This is a test."),模型名替换为 Azure 上的部署名称。
  3. 在同步场景下同样适用:AzureOpenAI 客户端的 .responses 属性同样已暴露,可同步调用 client.responses.create(...)
  4. 配置 base_url(备用方案,可优先尝试):如果不升级 SDK,也可以使用标准 AsyncOpenAI 客户端,并把 base_url 设置为 Azure 端点格式,例如 base_url="https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/",再用同一模型名称进行调用。
  5. 补充验证截断参数:使用 computer-use-preview 模型时,官方提示需要额外传 truncation="auto";一般模型不需要此参数。

验证方法

运行以下最小异步脚本,确认没有 AttributeError 并返回正常结果:

import asyncio
import os
from openai import AsyncAzureOpenAI

async def main():
    client = AsyncAzureOpenAI(
        api_key=os.getenv("AZURE_OPENAI_API_KEY"),
        api_version="2025-03-01-preview",
        azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT")
    )
    response = await client.responses.create(
        model="gpt-4o-mini",
        input="This is a test."
    )
    print(response.output[0])

asyncio.run(main())

如果脚本能打印输出且不再抛错,说明问题已解决。

参考来源

openai/openai-python #2280

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 22352

发表回复

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