【.NET】使用.NET開發(fā)搭建OpenAI模型的中間服務(wù)端
時(shí)間:2023-05-27 02:45:01 | 來源:網(wǎng)站運(yùn)營(yíng)
時(shí)間:2023-05-27 02:45:01 來源:網(wǎng)站運(yùn)營(yíng)
【.NET】使用.NET開發(fā)搭建OpenAI模型的中間服務(wù)端:
前言:前不久微信上大家玩ChatGPT聊天機(jī)器人玩的不亦樂乎;不過隨著ChatGPT被封殺,所以用微信聊天機(jī)器人有可能導(dǎo)致封號(hào)的風(fēng)險(xiǎn)。那如果自己不想每次都去OpenAI官網(wǎng)上進(jìn)行對(duì)話【PS:官網(wǎng)上面聊天對(duì)話有局限性,例如回復(fù)的內(nèi)容比較長(zhǎng),AI回答是一個(gè)一個(gè)字寫的,就可能導(dǎo)致超過一定時(shí)間以后,變成請(qǐng)求超時(shí)之類的異常;而通過API直接訪問,可以避免這個(gè)情況發(fā)生】,想要自己搭建一個(gè)服務(wù)來本地調(diào)用,是不是也可以?于是,找了官方的一些資料,就動(dòng)手咱們自己搭建一個(gè)服務(wù)端,方便給別人調(diào)用來提供服務(wù)。官網(wǎng)文檔地址:https://beta.openai.com/docs/introduction好了,接下來開始我們自己的表演。
1、新建一個(gè)webapi服務(wù)程序
2、我選擇的是.NET6,大家也可以自己選擇自己喜歡的環(huán)境,問題都不大。為了方便閱讀,我選擇了使用控制器和啟用OpenAPI支持(swagger)。
3、創(chuàng)建好以后,在program里面,添加HttpClient服務(wù)的注冊(cè),用來訪問openai的api會(huì)用到。
4、新建一個(gè)控制器,就叫 RobotController,用來提供webapi接口做測(cè)試使用。
5、在新建的控制器里面,做點(diǎn)最初的準(zhǔn)備,例如對(duì)IHttpClientFactory注入進(jìn)來備用。
6、官網(wǎng)上有一些資料,例如text-davinci-003模型的最大tokens是4000,所以后面有個(gè)請(qǐng)求參數(shù)的部分,不能超過這個(gè)數(shù)。
7、這個(gè)是一個(gè)參數(shù)建議,把temperature設(shè)為0.9f,把top_p設(shè)為1. 按照文檔的解釋,temperature的值會(huì)影響回答的內(nèi)容的一些特性,例如可能設(shè)計(jì)不友好的回復(fù)的內(nèi)容的比重等。
8、我們做個(gè)通用的請(qǐng)求實(shí)體類,用來當(dāng)作訪問我們提供的webapi接口所需的參數(shù)信息。三個(gè)信息比較重要的,當(dāng)作參數(shù),可以進(jìn)行微調(diào),例如文檔建議的temp為0.9f,max tokens最大為4000,我們可以設(shè)為其他的值進(jìn)行微調(diào),等等。而message字段就是我們本身的請(qǐng)求參數(shù),用來和機(jī)器人對(duì)話使用的。
9、然后是返回體,這個(gè)格式是解析openai的返回值進(jìn)行配置的,大家也可以隨意參考,或者不做解析直接返回字符串也是OK的,反正是一串Json數(shù)據(jù),問題不大。
10、然后對(duì)剛才的Call方法做個(gè)完善,大體內(nèi)容如下所示。其中,openaiKey是我個(gè)人的key,所以為了隱私泄露,我稍微打了馬賽克,希望理解。其他代碼內(nèi)容,可以直接看截圖代碼。
11、最后,啟動(dòng)服務(wù)程序,進(jìn)入到swagger里面進(jìn)行調(diào)用接口。例如,message字段我傳的 “幫我寫一個(gè)C#版本的Hello World”,得到的返回值體里面,位于choises[]數(shù)組的第一條數(shù)據(jù),text就是機(jī)器人回復(fù)的內(nèi)容。
防盜鏈專用:本文博客原始鏈接為:
https://www.cnblogs.com/weskynet/p/16987108.html12、以上只是一個(gè)簡(jiǎn)單的寫法,大家可以根據(jù)自己需要進(jìn)行拓展或者改造。比如說,用已有的key和規(guī)律,寫個(gè)其他語(yǔ)言的聊天服務(wù),或者寫個(gè)聊天客戶端進(jìn)行訪問,等等,一切皆有可能?;蛘呶⑿疟环鈿⒘?,那就可以嘗試自己搭建一個(gè)服務(wù)來間接繼續(xù)實(shí)現(xiàn)某些APP的智能聊天服務(wù)等等。
如果不想自己擼代碼的,也可以在我個(gè)人微信公眾號(hào)【Dotnet Dancer】后臺(tái)回復(fù)【robot】,即可獲取本篇博客的源碼?;蛘邟咭韵露S碼,也可進(jìn)入公眾號(hào)后臺(tái):
如果對(duì).NET技術(shù)感興趣,或者有一顆分享.NET技術(shù)的心,也可以加我個(gè)人微信:WeskyNet001 ,備注名寫【.NET】,我拉你進(jìn)技術(shù)交流群(可發(fā).NET有關(guān)的內(nèi)推,但拒絕廣告)
以上就是該文章的全部?jī)?nèi)容,如果覺得有幫助,歡迎點(diǎn)贊、轉(zhuǎn)發(fā)或評(píng)論,謝謝大家,祝大家和機(jī)器人玩的愉快~
關(guān)鍵詞:中間,服務(wù),模型,使用