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

基于Reflex+Azure OpenAI的CSV问答应用报错:需提供engine/deployment_id

问题排查:Azure OpenAI + LangChain 缺少engine/deployment_id参数错误

错误原因

你遇到的openai.error.InvalidRequestError核心原因是:使用Azure OpenAI时,LangChain的ChatOpenAI类必须明确指定部署名称(deployment_id),而非仅传入模型名称(如"gpt-4")。Azure OpenAI的API逻辑要求必须绑定具体的部署实例,同一个模型可能存在多个不同的部署,因此无法通过模型名称直接定位资源。

修复方案

1. 修改ChatOpenAI初始化代码

将原代码中:

llm = ChatOpenAI(model="gpt-4")

替换为:

llm = ChatOpenAI(
    model="gpt-4",
    deployment_id="<你的Azure部署名称>",  # 关键:添加部署ID
    openai_api_type="azure",
    openai_api_version="<OPENAI_API_VERSION>",  # 如2024-02-15-preview
    openai_api_base="https://<OPENAI_API_BASE>.openai.azure.com/",
    openai_api_key="<OPENAI_API_KEY>"
)

注:部署名称是你在Azure门户中创建模型部署时自定义的名称,并非模型本身的名称(例如你可能部署了名为gpt-4-prod的gpt-4实例)。

2. 验证关键参数准确性

  • 登录Azure门户,进入OpenAI资源的「部署」页面,确认部署名称与代码中deployment_id完全一致(区分大小写)
  • 检查openai_api_version是否匹配Azure OpenAI支持的版本,避免使用过时版本
  • 确保openai_api_base无拼写错误(如末尾多余斜杠、域名错误)

3. 优化环境变量使用(可选)

虽然你已设置环境变量,但直接在ChatOpenAI初始化时传入参数能减少环境变量冲突风险。若保留环境变量方式,需确保所有变量生效且无覆盖情况。

修复后核心代码片段

def answer(self):
    # ... 其他代码保持不变 ...
    
    # 替换原llm初始化逻辑
    llm = ChatOpenAI(
        model="gpt-4",
        deployment_id="your-azure-deployment-name",  # 替换为实际部署名称
        openai_api_type="azure",
        openai_api_version="2024-02-15-preview",
        openai_api_base="https://<OPENAI_API_BASE>.openai.azure.com/",
        openai_api_key="<OPENAI_API_KEY>"
    )
    
    # ... 后续代码保持不变 ...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 13:31:07