应无所住,而生其心
排名
1
文章
860
粉丝
112
评论
163
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

.net core调用基于GPT-3.5的ChatGPT接口

4447人阅读 2023/3/6 15:24 总访问:5182885 评论:2 收藏:0 手机
分类: .NET Core

基于GPT-3.5的接口

OpenAI 已经开放和官网版本的ChatGPT相同的模型 gpt-3.5-turbo

GPT-3.5和3.0调用方式几乎一样,修改一下参数即可

代码如下:

  1. string chatGptToken = _configuration["ChatGptToken"];
  2. HttpClient client = new HttpClient();
  3. client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
  4. client.DefaultRequestHeaders.Add("Authorization", $"Bearer {chatGptToken}");
  5. var content = new
  6. {
  7. //prompt = question,
  8. messages = new List<dynamic>() {
  9. new { role = "system", content = "你是TNBLOG智能助手。" },
  10. new { role = "user", content = questionModel.question }
  11. },
  12. model = "gpt-3.5-turbo",
  13. max_tokens = 4000,
  14. temperature = 0.5, // 回答同样一个问题的相似度
  15. };
  16. StringContent strcontent = new StringContent(JsonConvert.SerializeObject(content), Encoding.UTF8, "application/json");
  17. string result = client.PostAsync("接口地址", strcontent).Result.Content.ReadAsStringAsync().Result;
  • model:使用的模型,gpt-3.5-turbo 是官网版本 Chat-GPT 同款模型

  • messages:消息参数,必须是数组。对话消息可以短至 1 条,也可以填充整个对话消息。通常,对话首先是 system 角色,用于给模型定下一些规则。当然,也可以加入一些 用户角色 user 和 模型角色 assistant 的对话内容,以便模型可以理解回顾历史对话内容。

  • temperature: 回答同样一个问题的相似度

成功调用接口返回的格式如下:

  1. {
  2. "id":"chatcmpl-6rGxroCTyO0DbNuVl02MTPWehnVhc",
  3. "object":"chat.completion",
  4. "created":1678154615,
  5. "model":"gpt-3.5-turbo-0301",
  6. "usage":{
  7. "prompt_tokens":34,
  8. "completion_tokens":179,
  9. "total_tokens":213
  10. },
  11. "choices":[
  12. {
  13. "message":{
  14. "role":"assistant",
  15. "content":"可以使用CSS的`::selection`伪元素来实现文字高亮效果。 ```css ::selection { background-color: yellow; color: black; } ``` 上面的代码会将选中的文本背景色设置为黄色,文字颜色设置为黑色。你可以将上面的代码添加到你的CSS文件中,或者在HTML文档中使用`<style>`标签来添加。 注意:`::selection`伪元素只能用于设置选中文本的样式,不能用于设置未选中文本的样式。在一些浏览器中,`::selection`伪元素的样式可能会被用户自定义样式所覆盖。"
  16. },
  17. "finish_reason":"stop",
  18. "index":0
  19. }
  20. ]
  21. }

接收返回值的Model写一下

  1. public class OpenAIResponse
  2. {
  3. public string @object { get; set; }
  4. public Choice[] choices { get; set; }
  5. }
  6. public class Choice
  7. {
  8. // public string text { get; set; }
  9. public Message message { get; set; }
  10. }
  11. public class Message
  12. {
  13. public string role { get; set; }
  14. public string content { get; set; }
  15. }

用这个model反序列化一下就可以了

  1. OpenAIResponse openAIResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<OpenAIResponse>(result);

前一个版本的返回值类型可以使用这样的方式反序列化

  1. public class OpenAIResponse
  2. {
  3. public string @object { get; set; }
  4. public Choice[] choices { get; set; }
  5. }
  6. public class Choice
  7. {
  8. public Message message { get; set; }
  9. }


如果我说这篇博客是GPT-3.5帮我写的,你们信嘛!


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价