为何使用文档提供的代码调用Azure OpenAI聊天机器人时出现404错误?
解决Azure OpenAI调用时的404 Resource Not Found错误
以下是针对该问题的排查和解决步骤:
1. 修正base_url格式与API版本匹配
你当前使用的/extensions路径搭配api-version=2024-02-01可能存在格式兼容问题。对于openai v1.x版本(如你用的1.13.3),优先使用兼容的API版本并调整base_url格式:
client = AzureOpenAI( base_url=f"{azure_oai_endpoint}/openai/deployments/{azure_oai_deployment}/extensions", api_key=azure_oai_key, api_version="2023-12-01-preview" # 该版本对extensions支持更稳定,部分区域不支持2024-02-01 )
若仍有问题,尝试将API版本直接嵌入base_url:
base_url=f"{azure_oai_endpoint}/openai/deployments/{azure_oai_deployment}/extensions/chat/completions?api-version=2023-12-01-preview"
2. 验证部署名称与资源有效性
- 登录Azure门户,确认你的Azure OpenAI资源下存在和
AZURE_OAI_DEPLOYMENT环境变量完全一致的部署(注意大小写敏感),且部署的模型为gpt-35-turbo或gpt-4系列(仅这类模型支持RAG扩展功能)。 - 检查
AZURE_OAI_ENDPOINT格式是否正确,应为https://<resource-name>.openai.azure.com/,末尾不要遗漏斜杠。
3. 排查网络访问限制
- 如果你的Azure OpenAI资源设置了虚拟网络或防火墙规则,确保运行代码的机器IP在允许访问的范围内,可临时关闭公共访问限制做测试(仅限排查使用)。
- 确认Azure认知搜索资源的网络设置也允许OpenAI资源访问,或直接用搜索密钥测试连通性。
4. 测试基础API连通性
先跳过extensions,测试基础聊天调用是否正常,排除端点、密钥、部署本身的问题:
# 临时替换原有client和请求代码 client = AzureOpenAI( base_url=f"{azure_oai_endpoint}/openai/deployments/{azure_oai_deployment}", api_key=azure_oai_key, api_version="2023-12-01-preview" ) response = client.chat.completions.create( model=azure_oai_deployment, messages=[{"role": "user", "content": "Hello"}] ) print(response.choices[0].message.content)
如果这个调用正常,问题就出在extensions的配置或路径上;如果还是404,说明核心的端点、部署名称或API版本有误。
5. 修正extra_body格式
确保extension_config的格式符合openai v1.x的要求,必要时补充可选参数:
extension_config = { "dataSources": [ { "type": "AzureCognitiveSearch", "parameters": { "endpoint": azure_search_endpoint, "key": azure_search_key, "indexName": azure_search_index, "queryType": "simple", "topNDocuments": 3 # 可选,控制返回的参考文档数量 } } ] }
内容的提问来源于stack exchange,提问作者Farmanli
相关产品推荐
相关产品推荐

