使用.NET开发搭建OpenAI模型的中间服务端

简介: 前不久微信上大家玩ChatGPT聊天机器人玩的不亦乐乎;不过随着ChatGPT被封杀,所以用微信聊天机器人有可能导致封号的风险。那如果自己不想每次都去OpenAI官网上进行对话【PS:官网上面聊天对话有局限性,例如回复的内容比较长,AI回答是一个一个字写的,就可能导致超过一定时间以后,变成请求超时之类的异常;而通过API直接访问,可以避免这个情况发生】,想要自己搭建一个服务来本地调用,是不是也可以?


前言:前不久微信上大家玩ChatGPT聊天机器人玩的不亦乐乎;不过随着ChatGPT被封杀,所以用微信聊天机器人有可能导致封号的风险。那如果自己不想每次都去OpenAI官网上进行对话【PS:官网上面聊天对话有局限性,例如回复的内容比较长,AI回答是一个一个字写的,就可能导致超过一定时间以后,变成请求超时之类的异常;而通过API直接访问,可以避免这个情况发生】,想要自己搭建一个服务来本地调用,是不是也可以?


于是,找了官方的一些资料,就动手咱们自己搭建一个服务端,方便给别人调用来提供服务。

 

好了,接下来开始我们自己的表演。


1、新建一个webapi服务程序


1995789-20221216125137567-2107483168.png

 

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


1995789-20221216125200228-161164819.png

 

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


1995789-20221216125305992-1223881287.png


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


1995789-20221216125350813-1382019845.png


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


1995789-20221216125430300-1013090249.png


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


1995789-20221216125522609-1577628635.png

 

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


1995789-20221216125609571-38898817.png


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


1995789-20221216125740951-2103442773.png


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


1995789-20221216125944609-1673709260.png


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


1995789-20221216130100793-920718357.png


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


1995789-20221216130245431-175051253.png


12、以上只是一个简单的写法,大家可以根据自己需要进行拓展或者改造。比如说,用已有的key和规律,写个其他语言的聊天服务,或者写个聊天客户端进行访问,等等,一切皆有可能。或者微信被封杀了,那就可以尝试自己搭建一个服务来间接继续实现某些APP的智能聊天服务等等。


目录
相关文章
|
12天前
|
Go 开发工具
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
16天前
|
人工智能 自然语言处理 计算机视觉
OpenAI发布sCM提升50倍效率,扩散模型重大技术突破!
OpenAI近期发布了Simplified Consistency Models (sCM) 技术,这是在扩散模型基础上的重大改进,实现了50倍效率提升。sCM通过简化和稳定连续时间一致性模型的训练过程,解决了传统模型中的离散化误差和训练不稳定性问题,显著提升了生成模型的性能和效率。在多个数据集上的测试结果表明,sCM不仅超越了现有模型,还在生成模型的实际应用中展现了巨大潜力。论文地址:https://arxiv.org/abs/2410.11081
36 3
|
27天前
|
传感器 人工智能 供应链
.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。
本文深入探讨了.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。通过企业级应用、Web应用及移动应用的创新案例,展示了.NET在各领域的广泛应用和巨大潜力。展望未来,.NET将与新兴技术深度融合,拓展跨平台开发,推动云原生应用发展,持续创新。
28 4
|
28天前
|
机器学习/深度学习 人工智能 物联网
.NET 技术:引领未来开发潮流
.NET 技术以其跨平台兼容性、高效的开发体验、强大的性能表现和安全可靠的架构,成为引领未来开发潮流的重要力量。本文深入探讨了 .NET 的核心优势与特点,及其在企业级应用、移动开发、云计算、人工智能等领域的广泛应用,展示了其卓越的应用价值和未来发展前景。
57 5
|
28天前
|
人工智能 计算机视觉 网络架构
OpenAI攻克扩散模型短板,清华校友路橙、宋飏合作最新论文
扩散模型在生成AI领域取得显著成果,但其训练不稳定性和采样速度慢限制了发展。OpenAI与清华校友合作,提出连续时间一致性模型(CMs),通过TrigFlow等创新解决了这些问题,大幅提升了训练稳定性和计算效率,实现了与最优模型相当的样本质量,同时减少了计算资源消耗。
37 2
|
26天前
|
SQL 机器学习/深度学习 人工智能
今日 AI 开源|共 4 项|DeepSeek 推出新一代 AI 推理模型,实力比肩 OpenAI o1-preview!
本文介绍了四个最新的 AI 开源项目,涵盖多模态生成式 AI、自然语言到 SQL 转化、多模态数学推理和复杂逻辑推理等多个领域,为 AI 应用开发提供了丰富的资源和工具。
106 0
今日 AI 开源|共 4 项|DeepSeek 推出新一代 AI 推理模型,实力比肩 OpenAI o1-preview!
|
1月前
|
存储 缓存 NoSQL
2款使用.NET开发的数据库系统
2款使用.NET开发的数据库系统
|
1月前
|
开发框架 JavaScript 前端开发
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
2024年全面且功能强大的.NET快速开发框架推荐,效率提升利器!
|
3月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
46 7
|
3月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
74 0