使用.NET开发搭建OpenAI模型的中间服务端
前言:前不久微信上大家玩ChatGPT聊天机器人玩的不亦乐乎;不过随着ChatGPT被封杀,所以用微信聊天机器人有可能导致封号的风险。那如果自己不想每次都去OpenAI官网上进行对话【PS:官网上面聊天对话有局限性,例如回复的内容比较长,AI回答是一个一个字写的,就可能导致超过一定时间以后,变成请求超时之类的异常;而通过API直接访问,可以避免这个情况发生】,想要自己搭建一个服务来本地调用,是不是也可以?
于是,找了官方的一些资料,就动手咱们自己搭建一个服务端,方便给别人调用来提供服务。
官网文档地址:
https://beta.openai.com/docs/introduction
好了,接下来开始我们自己的表演。
1、新建一个webapi服务程序

2、我选择的是.NET6,大家也可以自己选择自己喜欢的环境,问题都不大。为了方便阅读,我选择了使用控制器和启用OpenAPI支持(swagger)。

3、创建好以后,在program里面,添加HttpClient服务的注册,用来访问openai的api会用到。

4、新建一个控制器,就叫 RobotController,用来提供webapi接口做测试使用。

5、在新建的控制器里面,做点最初的准备,例如对IHttpClientFactory注入进来备用。

6、官网上有一些资料,例如text-davinci-003模型的最大tokens是4000,所以后面有个请求参数的部分,不能超过这个数。

7、这个是一个参数建议,把temperature设为0.9f,把top_p设为1. 按照文档的解释,temperature的值会影响回答的内容的一些特性,例如可能设计不友好的回复的内容的比重等。

8、我们做个通用的请求实体类,用来当作访问我们提供的webapi接口所需的参数信息。三个信息比较重要的,当作参数,可以进行微调,例如文档建议的temp为0.9f,max tokens最大为4000,我们可以设为其他的值进行微调,等等。而message字段就是我们本身的请求参数,用来和机器人对话使用的。

9、然后是返回体,这个格式是解析openai的返回值进行配置的,大家也可以随意参考,或者不做解析直接返回字符串也是OK的,反正是一串Json数据,问题不大。

10、然后对刚才的Call方法做个完善,大体内容如下所示。其中,openaiKey是我个人的key,所以为了隐私泄露,我稍微打了马赛克,希望理解。其他代码内容,可以直接看截图代码。

11、最后,启动服务程序,进入到swagger里面进行调用接口。例如,message字段我传的 “帮我写一个C#版本的Hello World”,得到的返回值体里面,位于choises[]数组的第一条数据,text就是机器人回复的内容。

防盗链专用:本文博客原始链接为:https://www.cnblogs.com/weskynet/p/16987108.html
12、以上只是一个简单的写法,大家可以根据自己需要进行拓展或者改造。比如说,用已有的key和规律,写个其他语言的聊天服务,或者写个聊天客户端进行访问,等等,一切皆有可能。或者微信被封杀了,那就可以尝试自己搭建一个服务来间接继续实现某些APP的智能聊天服务等等。
如果不想自己撸代码的,也可以在我个人微信公众号【Dotnet Dancer】后台回复【robot】,即可获取本篇博客的源码。或者扫以下二维码,也可进入公众号后台:

以上就是该文章的全部内容,如果觉得有帮助,欢迎点赞、转发或评论,谢谢大家,祝大家和机器人玩的愉快~
使用.NET开发搭建OpenAI模型的中间服务端的更多相关文章
- EJB_开发EJB容器模型的WEB服务
开发EJB容器模型的WEB服务 WEB服务 Web服务也是一种分布式技术,它与EJB最大的不同是,Web服务属于行业规范,可以跨平台及语言.而EJB属于Java平台的规范,尽管理论上可以跨平台,但实现 ...
- [并发并行]_[线程模型]_[Pthread线程使用模型之三 客户端/服务端模型(Client/Server]
Pthread线程使用模型之三 客户端/服务端模型(Client/Server) 场景 1.在客户端/服务端模型时,客户端向服务端请求一些数据集的操作. 服务端执行执行操作独立的(多进程或跨网络)– ...
- 从零开始开发IM(即时通讯)服务端
好消息:IM1.0.0版本已经上线啦,支持特性: 私聊发送文本/文件 已发送/已送达/已读回执 支持使用ldap登录 支持接入外部的登录认证系统 提供客户端jar包,方便客户端开发 github链接: ...
- 从零开始开发IM(即时通讯)服务端(二)
好消息:IM1.0.0版本已经上线啦,支持特性: 私聊发送文本/文件 已发送/已送达/已读回执 支持使用ldap登录 支持接入外部的登录认证系统 提供客户端jar包,方便客户端开发 github链接: ...
- 6.前端基于react,后端基于.net core2.0的开发之路(6) 服务端渲染(SSR)
0.源码地址 https://gitee.com/teambp/ScaffoldClient 这个地址下载对应源码. 1.服务端渲染是啥? 就是在服务器进行页面渲染(废话),当页面展示后,显示的就是 ...
- Angular开发实践(六):服务端渲染
Angular Universal Angular在服务端渲染方面提供一套前后端同构解决方案,它就是 Angular Universal(统一平台),一项在服务端运行 Angular 应用的技术. 标 ...
- 微信小程序开发之多图片上传+服务端接收
前言: 业务需求,这次需要做一个小程序同时选中三张图片一起上传到服务端,后端使用的.NET WEBAPI接收数据保存. 使用技术: 在这章中将会使用到微信小程序wx.uploadFile(Object ...
- [BI项目记]-搭建代码管理环境之服务端
上一篇介绍如何搭建环境进行文档版本的管理,这篇主要介绍搭建环境进行代码版本的管理. 即使是BI项目也要进行代码版本管理.代码版本管理的工具有很多,VSS, SVN等都是当下大家经常提起的,这里主要介绍 ...
- 在Linux上搭建VisualSVN Server(svn服务端)
一.检查是否安装了低版本的SVN # rpm -qa | grep subversion 如果已安装SVN,则会返回版本信息.这时需要卸载旧版本的SVN. 卸载旧版本SVN # yum remove ...
- DIOCP开源项目-利用队列+0MQ+多进程逻辑处理,搭建稳定,高效,分布式的服务端
最近头脑里面一直在想怎么样让能让大家基于DIOCP上写出稳定的服务端程序.很多朋友问我,你DIOCP稳定吗,我可以用他来做三层服务器吗? 当时我是这样回答的,我只能保证DIOCP底层通信的稳定. 说实 ...
随机推荐
- 打印 Logger 日志时,需不需要再封装一下工具类?
在开发过程中,打印日志是必不可少的,因为日志关乎于应用的问题排查.应用监控等.现在打印日志一般都是使用 slf4j,因为使用日志门面,有助于打印方式统一,即使后面更换日志框架,也非常方便.在 < ...
- 20个超棒的jQuery bootstrap 插件
1. Bootstrap File Input Bootstrap3.x 的一个增强版的HTML 5 文件选择控件,可以对图片文件和文本文件进行预览,以及其他功能.该插件增强了这些插件,并且将组件的初 ...
- qiankun+vue,为什么我的子应用的子路由老是跳404?这么解决
主要解决子应用内部跳转路由时,跳到404页的问题 你能搜这个,我姑且认为你基本配置已经好了,而且主跳子的一级路由是正常的,请往下看 忘说了,我的主应用和子应用都是Vue 主应用跳子应用都正常,为什么子 ...
- 云的安全组和网络ACL
云的安全组和网络ACL 1.流量控制: 安全组是云服务器.数据库等实例级别的流量控制 ACL是子网级别的流量控制 2.规则: 安全组和网络ACL都支持允许规则和拒绝规则 3.状态: 安全组有状态( ...
- 2022-08-21-Freewind主题_cdn替换版
layout: post cid: 16 title: Freewind主题 cdn替换版 slug: 16 date: 2022/08/21 14:06:00 updated: 2022/08/21 ...
- 『现学现忘』Git后悔药 — 34、git commit --amend 命令
目录 1.git commit --amend 命令说明 2.使用场景 (1)场景一 (2)场景二 3.git commit --amend 命令原理 这是我们Git中的第三种后悔药. 1.git c ...
- Condition介绍
Condition Condition是一种多线程通信工具,表示多线程下参与数据竞争的线程的一种状态,主要负责多线程环境下对线程的挂起和唤醒工作. 方法 // ========== 阻塞 ====== ...
- Redis Cluster 原理说的头头是道,这些配置不懂就是纸上谈兵
Redis Cluster 原理说的头头是道,这些配置不懂就是纸上谈兵 Redis Cluster 集群相关配置,使用集群方式的你必须重视和知晓.别嘴上原理说的头头是道,而集群有哪些配置?如何配置让集 ...
- Sublime Text4(Build 4126) 安装备忘
Sublime Text4(Build 4126) 安装备忘 sublime text 4126 PJ已测可用 打开浏览器进入网站https://hexed.it 打开sublime text4安装目 ...
- HAProxy反向代理实例
1.环境准备: 设备 IP地址 作用 系统版本 web1 10.0.0.18 Nginx-Web服务器 Rocky8.6 web2 10.0.0.28 Nginx-Web服务器 Rocky8.6 Ha ...