.net core调用基于GPT-3.5的ChatGPT接口 电脑版发表于:2023/3/6 15:24 ## 基于GPT-3.5的接口 OpenAI 已经开放和官网版本的ChatGPT相同的模型 gpt-3.5-turbo GPT-3.5和3.0调用方式几乎一样,修改一下参数即可 **代码如下:** ``` string chatGptToken = _configuration["ChatGptToken"]; HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Add("Authorization", $"Bearer {chatGptToken}"); var content = new { //prompt = question, messages = new List<dynamic>() { new { role = "system", content = "你是TNBLOG智能助手。" }, new { role = "user", content = questionModel.question } }, model = "gpt-3.5-turbo", max_tokens = 4000, temperature = 0.5, // 回答同样一个问题的相似度 }; StringContent strcontent = new StringContent(JsonConvert.SerializeObject(content), Encoding.UTF8, "application/json"); string result = client.PostAsync("接口地址", strcontent).Result.Content.ReadAsStringAsync().Result; ``` - model:使用的模型,gpt-3.5-turbo 是官网版本 Chat-GPT 同款模型 - messages:消息参数,必须是数组。对话消息可以短至 1 条,也可以填充整个对话消息。通常,对话首先是 system 角色,用于给模型定下一些规则。当然,也可以加入一些 用户角色 user 和 模型角色 assistant 的对话内容,以便模型可以理解回顾历史对话内容。 - temperature: 回答同样一个问题的相似度 **成功调用接口返回的格式如下:** ``` { "id":"chatcmpl-6rGxroCTyO0DbNuVl02MTPWehnVhc", "object":"chat.completion", "created":1678154615, "model":"gpt-3.5-turbo-0301", "usage":{ "prompt_tokens":34, "completion_tokens":179, "total_tokens":213 }, "choices":[ { "message":{ "role":"assistant", "content":"可以使用CSS的`::selection`伪元素来实现文字高亮效果。 ```css ::selection { background-color: yellow; color: black; } ``` 上面的代码会将选中的文本背景色设置为黄色,文字颜色设置为黑色。你可以将上面的代码添加到你的CSS文件中,或者在HTML文档中使用`<style>`标签来添加。 注意:`::selection`伪元素只能用于设置选中文本的样式,不能用于设置未选中文本的样式。在一些浏览器中,`::selection`伪元素的样式可能会被用户自定义样式所覆盖。" }, "finish_reason":"stop", "index":0 } ] } ``` **接收返回值的Model写一下** ``` public class OpenAIResponse { public string @object { get; set; } public Choice[] choices { get; set; } } public class Choice { // public string text { get; set; } public Message message { get; set; } } public class Message { public string role { get; set; } public string content { get; set; } } ``` 用这个model反序列化一下就可以了 ``` OpenAIResponse openAIResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<OpenAIResponse>(result); ``` **前一个版本的返回值类型可以使用这样的方式反序列化** ``` public class OpenAIResponse { public string @object { get; set; } public Choice[] choices { get; set; } } public class Choice { public Message message { get; set; } } ``` tn2>如果我说这篇博客是GPT-3.5帮我写的,你们信嘛!