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

调用Azure OpenAI的CreateChatCompletionAsync报404资源未找到错误

Azure OpenAI调用CreateChatCompletionAsync报404错误问题

使用OpenAI NuGet包调用Azure OpenAI端点时,CreateCompletionAsync方法可正常建立连接并返回结果,但调用CreateChatCompletionAsync方法访问同一URL时,出现404:Resource not found错误。以下代码中,方法1和方法2使用CreateCompletionAsync可正常运行,方法3和方法4使用CreateChatCompletionAsync触发错误:

using System;
using System.Threading.Tasks;
using OpenAI_API;
using OpenAI_API.Chat;
using OpenAI_API.Completions;
using OpenAI_API.Models;
using OpenAI_API.Moderation;

class Program
{
    static async Task Main(string[] args)
    {
        APIAuthentication aPIAuthentication = new APIAuthentication("my_key");

        // 初始化Azure OpenAI客户端
        var api = OpenAIAPI.ForAzure("chatgpt", "ddic", aPIAuthentication);

        // 方法1:正常运行,调用同一API端点
        var prompt = "If I could fly";
        var model = "ddic";
        var result = await api.Completions.CreateCompletionAsync(prompt, model);
        // 打印生成的文本到控制台
        Console.WriteLine(result);

        // 方法2:同样正常运行,调用同一API端点
        var completionRequest = new CompletionRequest();
        string[] multiPrompt = { "Hello World", "Once upon a time" };
        completionRequest.MultiplePrompts = multiPrompt;
        completionRequest.Model = model;
        completionRequest.user = ChatMessageRole.User;
        var result1 = await api.Completions.CreateCompletionAsync(completionRequest);

        // 方法3:调用此方法时出现错误
        // (端点地址) HTTP状态码: NotFound. 内容: {"error":{"code":"404","message": "Resource not found"}}
        var response = await api.Chat.CreateChatCompletionAsync(new ChatRequest()
        {
            Model = "ddic",
            Temperature = 0.1,
            MaxTokens = 50,
            Messages = new ChatMessage[] {
                new ChatMessage(ChatMessageRole.System, "你是一个提供产品信息(包括价格)的助手。"),
                new ChatMessage(ChatMessageRole.User, "特斯拉")
            }
        });

        IList<ChatMessage> messages = new List<ChatMessage>
        {
            new ChatMessage(ChatMessageRole.System, "你是一个提供产品信息(包括价格)的助手。"),
            new ChatMessage(ChatMessageRole.User, "特斯拉")
        };

        // 方法4:同样触发404错误
        var response1 = await api.Chat.CreateChatCompletionAsync(messages, "ddic");
        var reply = response1.Choices[0].Message;
        Console.WriteLine($"{reply.Role}: {reply.Content.Trim()}");
    }
}

问题原因

Azure OpenAI中,CreateCompletionAsync对应文本补全类模型的/completions端点,而CreateChatCompletionAsync对应聊天类模型的/chat/completions端点。你当前使用的部署名称ddic对应的是文本补全模型(如gpt-3.5-turbo-instruct、text-davinci-003等),该部署未启用聊天接口的访问路径,因此调用聊天接口时会返回404错误。

解决方案

  1. 检查Azure OpenAI部署:登录Azure门户,进入你的OpenAI资源,查看部署列表,确认是否存在聊天类模型(如gpt-35-turbo、gpt-4、gpt-4o等)的部署。
  2. 创建聊天模型部署:如果没有对应的聊天模型部署,新建一个部署,选择聊天类模型,并记录新的部署名称(例如gpt-35-turbo-ddic)。
  3. 修改代码参数:在调用CreateChatCompletionAsync时,将Model参数替换为聊天模型的部署名称,同时初始化客户端时如果需要也对应调整。

修改后的代码示例(假设聊天模型部署名为gpt-35-turbo-ddic):

// 初始化Azure OpenAI客户端,聊天模型部署名称为gpt-35-turbo-ddic
var api = OpenAIAPI.ForAzure("chatgpt", "gpt-35-turbo-ddic", aPIAuthentication);

// 方法3修改后
var response = await api.Chat.CreateChatCompletionAsync(new ChatRequest()
{
    Model = "gpt-35-turbo-ddic",
    Temperature = 0.1,
    MaxTokens = 50,
    Messages = new ChatMessage[] {
        new ChatMessage(ChatMessageRole.System, "你是一个提供产品信息(包括价格)的助手。"),
        new ChatMessage(ChatMessageRole.User, "特斯拉")
    }
});

// 方法4修改后
var response1 = await api.Chat.CreateChatCompletionAsync(messages, "gpt-35-turbo-ddic");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:47:04