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

无法调用Azure OpenAI API:提示需提供engine或deployment_id参数

解决Azure OpenAI API调用时的"Must provide an 'engine' or 'deployment_id'"错误

问题描述

部署模型后调用Azure OpenAI API,收到如下错误:

openai.error.InvalidRequestError: Must provide an ‘engine’ or ‘deployment_id’ parameter to create a <class ‘openai.api_resources.chat_completion.ChatCompletion’>

问题原因

核心原因是环境变量未正确加载,导致AZURE_OPENAI_MODEL_NAME或AZURE_DEPLOYMENT_NAME为空值,调用ChatCompletion.create()时传入无效参数触发错误。

解决方案

1. 补全环境变量加载逻辑

代码中导入了load_dotenv但未执行加载操作,导致.env文件中的配置未生效。在代码开头添加加载语句:

import openai
import os
import load_dotenv

load_dotenv.load_dotenv()  # 加载.env文件中的环境变量

2. 确保环境变量配置正确

检查.env文件,确认以下变量与Azure Portal中的部署信息完全匹配(区分大小写):

AZURE_OPENAI_RESOURCE=AI_Sandbox
AZURE_OPENAI_MODEL=gpt-3.5-turbo
AZURE_OPENAI_KEY=你的API密钥
AZURE_OPENAI_ENDPOINT=https://AI_Sandbox.openai.azure.com/
AZURE_OPENAI_MODEL_NAME=gpt-35-turbo
AZURE_DEPLOYMENT_NAME=GPT-35-TURBO

3. 简化ChatCompletion调用参数

Azure OpenAI API中,engine和deployment_id只需传入其中一个即可,推荐使用deployment_id(与Azure部署概念更匹配)。修改prompt方法:

def prompt(self, prompt):
    return openai.ChatCompletion.create(
        deployment_id=AZURE_DEPLOYMENT_NAME,
        messages=[{"role": "user", "content": prompt}],
        temperature=0,
        timeout=60,
    )

4. 新增参数有效性校验

在OpenAIService的__init__方法中添加检查,提前发现空值问题:

def __init__(self):
    if not AZURE_OPENAI_KEY:
        raise ValueError("AZURE_OPENAI_KEY环境变量未设置")
    if not AZURE_DEPLOYMENT_NAME:
        raise ValueError("AZURE_DEPLOYMENT_NAME环境变量未设置")
    openai.api_key = AZURE_OPENAI_KEY
    openai.api_type = "azure"
    openai.api_base = base_url
    openai.api_version = "2023-03-15-preview"

内容的提问来源于stack exchange,提问作者Stanislav Jirak CZ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 13:47:26