使用Betalgo.OpenAI SDK调用ChatGPT模型遇端点错误的解决问询
解决Betalgo.OpenAI SDK调用GPT-3.5/4时的端点错误问题
问题描述
我在C#中使用Betalgo.OpenAI SDK编写了以下代码:
var openAiService = new OpenAIService(new OpenAiOptions() { ApiKey = "abc", Organization = "org-def" }); var completionResult = await openAiService.Completions .CreateCompletion(new CompletionCreateRequest() { Prompt = "Once upon a time", MaxTokens = 20, Model = Models.Gpt_4 });
已填写正确的APIKey和Organization,但收到错误提示:
This is a chat model and not supported in the v1/completions endpoint.
Did you mean to use v1/chat/completions?
切换为Models.Gpt_3_5_Turbo调用ChatGPT 3.5后,仍出现相同错误。
解决方案
问题核心在于:GPT-3.5 Turbo、GPT-4属于聊天模型,必须使用专门的ChatCompletion端点,而非普通的Completions端点。Betalgo.OpenAI SDK针对不同类型的模型提供了不同的服务入口和请求对象:
- 普通文本补全模型(如GPT-3系列的
text-davinci-003):使用openAiService.Completions+CompletionCreateRequest - 聊天模型(GPT-3.5/4):使用
openAiService.ChatCompletion+ChatCompletionCreateRequest
修改后的完整代码如下:
var openAiService = new OpenAIService(new OpenAiOptions() { ApiKey = "abc", Organization = "org-def" }); var completionResult = await openAiService.ChatCompletion .CreateCompletion(new ChatCompletionCreateRequest() { Messages = new List<ChatMessage>() { new ChatMessage("user", "Once upon a time") }, MaxTokens = 20, Model = Models.Gpt_3_5_Turbo });
关键修改点
- 服务入口从
openAiService.Completions改为openAiService.ChatCompletion - 请求对象从
CompletionCreateRequest替换为ChatCompletionCreateRequest - 原
Prompt参数替换为Messages列表,每个消息需指定角色(如user)和对应内容
内容的提问来源于stack exchange,提问作者Thierry
相关产品推荐
相关产品推荐

