You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure OpenAI自定义数据调用报错:Unrecognized request argument: dataSources

解决Azure OpenAI调用自有数据时dataSources参数未识别的问题

问题根源

你遇到的Unrecognized request argument supplied: dataSources错误,本质是OpenAI Python SDK版本与Azure OpenAI自有数据接口的调用方式不匹配,加上官方教程的部分内容未同步SDK更新导致的。另外,使用extensions base_url时的超时问题,大概率和网络连通性或配置校验有关。


解决方案分版本处理

一、使用新版OpenAI SDK(v1.x+)

新版SDK(如v1.10.0+)要求必须指定extensions专属的base_url,同时通过extra_body传递dataSources参数,具体调整如下:

  1. 配置正确的base_url
    取消注释代码中base_url的配置,必须指向{endpoint}/openai/deployments/{deployment}/extensions,这是调用自有数据功能的专属接口地址。

  2. 确保API版本为预览版
    必须使用支持extensions的预览版API,比如2023-08-01-preview或更高的预览版本(GA版本不支持自有数据功能)。

  3. 修正后的完整代码

import os
import openai
import dotenv

dotenv.load_dotenv()

endpoint = os.environ.get("AOAIEndpoint")
api_key = os.environ.get("AOAIKey")
deployment = "gpt-4-32k"

client = openai.AzureOpenAI(
    base_url=f"{endpoint}/openai/deployments/{deployment}/extensions",
    azure_endpoint=endpoint,
    api_key=api_key,
    api_version="2023-08-01-preview",
)

completion = client.chat.completions.create(
    model=deployment,
    messages=[
        {
            "role": "user",
            "content": "My user query",
        },
    ],
    extra_body={
        "dataSources": [
            {
                "type": "AzureCognitiveSearch",
                "parameters": {
                    "endpoint": os.environ["SearchEndpoint"],
                    "key": os.environ["SearchKey"],
                    "indexName": os.environ["SearchIndex"],
                    "top": 3  # 可选:控制返回的搜索结果数量
                }
            }
        ],
        "temperature": 0.0  # 可选:降低输出随机性,更贴合数据内容
    }
)

print(f"{completion.choices[0].message.role}: {completion.choices[0].message.content}")

二、使用旧版OpenAI SDK(v0.28.x)

如果你坚持使用v0.28.x版本,需要调整调用方式,直接将dataSources作为参数传递,而非放在extra_body中:

import os
import openai
import dotenv

dotenv.load_dotenv()

openai.api_type = "azure"
openai.api_base = f"{os.environ.get('AOAIEndpoint')}/openai/deployments/{deployment}/extensions"
openai.api_key = os.environ.get("AOAIKey")
openai.api_version = "2023-08-01-preview"

response = openai.ChatCompletion.create(
    engine=deployment,
    messages=[
        {"role": "user", "content": "My user query"}
    ],
    dataSources=[
        {
            "type": "AzureCognitiveSearch",
            "parameters": {
                "endpoint": os.environ["SearchEndpoint"],
                "key": os.environ["SearchKey"],
                "indexName": os.environ["SearchIndex"]
            }
        }
    ],
    temperature=0.0
)

print(f"{response['choices'][0]['message']['role']}: {response['choices'][0]['message']['content']}")

超时问题排查(使用extensions base_url时)

如果出现InternalServerError: upstream request timeout,按以下步骤排查:

  • 检查Azure Cognitive Search的权限:确保使用的Search Key拥有读取索引的权限,而非仅管理权限。
  • 验证搜索索引状态:在Azure Portal的Cognitive Search资源中,用「搜索资源管理器」测试索引是否能正常返回数据。
  • 网络连通性确认:如果Azure OpenAI和Cognitive Search不在同一虚拟网络,需确保搜索服务的防火墙允许Azure OpenAI的IP访问,或开启「允许所有网络访问」(测试用)。
  • 检查索引数据量:如果索引数据过大,可通过top参数减少返回的搜索结果数量,降低接口响应时间。

额外校验项

  • 确认Azure OpenAI部署已启用「自有数据」功能:在Azure Portal的OpenAI资源→部署→「添加你的数据」中,已正确关联目标Cognitive Search索引。
  • 环境变量无拼写错误:所有AOAIEndpoint、SearchEndpoint、SearchKey、SearchIndex的值需完全匹配Azure Portal中的配置。

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 21:30:02