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

如何在ChatCompletionsOptions构造函数中传入ChatRequestMessages列表?

问题解决:ChatCompletionsOptions构造函数传参导致空引用错误

当使用对象初始化器初始化ChatCompletionsOptions.Messages时,GetChatCompletionAsync调用正常;但通过构造函数传入相同消息列表时,出现“未将对象引用设置到对象的实例”错误。以下是正确的代码实现:

原代码对比

可正常运行的代码

List<ChatRequestMessage> m = new List<ChatRequestMessage>{
    new ChatRequestSystemMessage("You are a helpful assistant. You will talk like a pirate."),
    new ChatRequestAssistantMessage("Arrrr! Of course, me hearty! What can I do for ye?"),
    new ChatRequestUserMessage("How does one care for a parrot?"),
};

// 此代码正常工作
var chatCompletionsOptions = new ChatCompletionsOptions()
{
    DeploymentName = "MyGPT35Turbo", // 非Azure客户端使用DeploymentName对应"model"参数
    Messages =
    {
        new ChatRequestSystemMessage("You are a helpful assistant. You will talk like a pirate."),
        new ChatRequestAssistantMessage("Arrrr! Of course, me hearty! What can I do for ye?"),
        new ChatRequestUserMessage("How does one care for a parrot?"),
    }
};

Response<ChatCompletions> response = await client
    .GetChatCompletionsAsync(chatCompletionsOptions);

原报错代码

// 此代码报错:未将对象引用设置到对象的实例
var chatCompletionsOptions = new ChatCompletionsOptions(m)
{
    DeploymentName = "MyGPT35Turbo"
};

正确的构造函数传参方式

根据Azure OpenAI SDK的ChatCompletionsOptions定义,若要通过构造函数传入消息列表,需使用包含部署名称/模型名和消息集合的重载构造函数,或者在无参构造函数中直接赋值Messages属性:

方式1:使用正确的构造函数重载

var chatCompletionsOptions = new ChatCompletionsOptions("MyGPT35Turbo", m);

方式2:无参构造函数直接赋值Messages

var chatCompletionsOptions = new ChatCompletionsOptions
{
    DeploymentName = "MyGPT35Turbo",
    Messages = m // 直接传入已初始化的消息列表
};

报错原因说明

原报错代码的问题在于:

  • 官方SDK的ChatCompletionsOptions并没有仅接受IList<ChatRequestMessage>的构造函数重载,直接传入消息列表会导致参数不匹配或内部属性未正确初始化;
  • 即使存在对应构造函数,也可能未正确将传入的列表赋值给Messages属性,导致后续调用时该属性为空引用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 03:43:26