调用Azure OpenAI Python SDK Response.create时遇400错误求助
问题
使用Azure Python SDK调用Azure Responses接口时,代码如下:
from openai import AzureOpenAI ... self.client = AzureOpenAI( api_key=config.get("api_key"), base_url= config.get("endpoint"), api_version= "2025-04-01-preview" ) ... response = self.client.responses.create( model="computer-use-preview", # 设置为你的模型部署名称 tools=parsed_tools, input=self.chat_history, truncation="auto" )
持续收到400错误:
openai.BadRequestError: Error code: 400 - {'error': {'message': "Invalid 'response_id': 'responses'. Expected an ID that contains letters, numbers, underscores, or dashes, but this value contained additional characters.", 'type': 'invalid_request_error', 'param': 'response_id', 'code': 'invalid_value'}}
已尝试的排查动作:
- 逐步移除请求内容(缩短input减少token数、移除tools、移除需要ID的函数),均无效
- 首次请求无历史response_id可传入(已查阅官方文档)
- 调试SDK、通过Charles代理确认网络流量,未发现异常
- 排查Stack Overflow和OpenAI论坛,无解决方案
- 怀疑LLM卡在旧请求,需传入旧response_id才能继续
排查与解决建议
检查base_url配置正确性
确保base_url指向符合格式要求的Azure OpenAI资源端点,正确格式应为https://<资源名称>.openai.azure.com/openai/deployments/<部署名称>/。若路径缺失部署名称或格式错误,SDK可能误将路径片段当作response_id传入。验证API版本与SDK兼容性
当前使用的2025-04-01-preview为预览版API,可能存在SDK版本不匹配问题。可尝试降级到稳定版API(如2024-02-15-preview),或升级openai SDK到最新版本:pip install --upgrade openai显式指定response_id为None
即使代码中未传入response_id,SDK内部逻辑可能错误填充了responses值。尝试在调用时显式设置response_id=None,强制SDK不传入该参数:response = self.client.responses.create( model="computer-use-preview", tools=parsed_tools, input=self.chat_history, truncation="auto", response_id=None )确认模型部署名称合规
检查model参数的computer-use-preview是否为Azure门户中正确的部署名称,部署名称仅允许包含字母、数字、下划线和短横线,不合规的名称可能引发参数错误。检查Azure资源状态与权限
登录Azure门户确认OpenAI资源部署状态正常,无未完成的配置变更;同时验证API密钥对应的角色(如Cognitive Services OpenAI User)权限是否正确。
内容的提问来源于stack exchange,提问作者Joseph Pourtaymour

