使用Azure OpenAI Assistant API时遇资源未找到等错误求助
Azure OpenAI Assistant API调用错误问题分析与解决方案
问题根源
API版本与SDK不兼容
- 旧版API(如2024-02-01)不支持Assistant API,调用时直接返回"resource not found"。
- 更换预览版API后出现"invalid URL",是因为旧版openai SDK会错误生成原生OpenAI的端点路径(/v1/assistants),而Azure的正确路径是/azure/v1/assistants,必须升级SDK才能修复这个路径构造问题。
模型参数使用错误
Chat Completion API用部署名称作为model参数,但Azure Assistant API要求直接用模型的官方名称(比如gpt-4o、gpt-4-turbo),不能用部署名称,这是两者的核心区别。Azure资源限制
你的Azure OpenAI资源必须部署在支持Assistant API的区域(比如美国东部、西欧),且资源已启用Assistant API功能(新资源默认启用,旧资源可能需要手动开启)。
正确使用步骤
升级openai Python SDK
执行以下命令确保使用最新版SDK:pip install --upgrade openai确认Azure资源配置
- 检查资源所在区域是否支持Assistant API。
- 在Azure门户的OpenAI资源页面,确认你有权限使用支持Assistant API的模型(如gpt-4o、gpt-4-turbo),无需单独部署这些模型给Assistant API,直接用名称即可。
修正代码
使用支持的预览版API,替换模型参数为官方名称,修正后的代码如下:
import os import dotenv from openai import AzureOpenAI dotenv.load_dotenv() client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), api_version="2024-05-01-preview", # 采用支持Assistant API的预览版本 azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT"), ) # Chat Completion 仍使用部署名称 deployment_name = os.getenv("AZURE_DEPLOYMENT_NAME") response = client.chat.completions.create( model=deployment_name, messages=[{"role":"system", "content":'Write a tagline for an ice cream shop. '}] ) print(response.choices[0].message.content) # Assistant API 使用模型官方名称 assistant = client.beta.assistants.create( name="Test OpenAI Azure Assistant", instructions="You are a helpful assistant.", model="gpt-4o" # 替换为你有权限使用的模型名称,例如gpt-4-turbo ) print(f"创建的助手ID: {assistant.id}")
额外注意点
- 确认你的API密钥拥有Assistant API的调用权限,可在Azure门户的"访问控制(IAM)"中检查角色分配。
- 如果仍有问题,前往Azure OpenAI资源的"模型部署"页面,确认所选模型已开启Assistant API支持。
内容的提问来源于stack exchange,提问作者Ya.
相关产品推荐
相关产品推荐

