使用OpenAI-Unity包调用ChatGPT时遇JsonSerializationException错误求助
JsonSerializationException: Could not find member 'logprobs' on object of type 'ChatChoice' (OpenAI-Unity + Unity 2022.3.8)
问题详情
在Unity 2022.3.8中使用OpenAI-Unity包开发AI对话功能,已正确配置API密钥并按教程操作,但运行示例场景发送消息时触发以下错误:
JsonSerializationException: Could not find member 'logprobs' on object of type 'ChatChoice'. Path 'choices[0].logprobs', line 13, position 17. ...
触发错误的代码片段:
var completionResponse = await openai.CreateChatCompletion(new CreateChatCompletionRequest() { Model = "gpt-3.5-turbo-0613", Messages = messages });
已尝试调整代码格式、补充参数,问题未解决。
解决方案
1. 给ChatChoice类添加logprobs字段
找到包内的ChatChoice类(通常位于OpenAI/Api/Chat目录下),补充对应属性:
public class ChatChoice { // 保留原有属性 [JsonProperty("logprobs")] public ChatLogprobs Logprobs { get; set; } }
如果包内已有ChatLogprobs类,直接使用该类型;若没有,可先定义为object类型临时兼容。
2. 配置序列化器忽略未知字段
该包默认使用Newtonsoft.Json,可通过修改序列化设置忽略API返回的未定义字段:
var jsonSettings = new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Ignore }; var openai = new OpenAIClient(yourApiKey, jsonSettings);
3. 升级OpenAI-Unity包到最新版本
该问题多因包版本未同步OpenAI API的字段更新,升级到仓库最新版本后,通常已兼容logprobs字段的返回结构。
内容的提问来源于stack exchange,提问作者dylbomb
相关产品推荐
相关产品推荐

