前言:前不久微信上大家玩ChatGPT聊天機器人玩的不亦樂乎;不過隨著ChatGPT被封殺,所以用微信聊天機器人有可能導致封號的風險。那如果自己不想每次都去OpenAI官網上進行對話【PS:官網上面聊天對話有侷限性,例如回覆的內容比較長,AI回答是一個一個字寫的,就可能導致超過一定時間以後,變成請求超時之類的異常;而透過API直接訪問,可以避免這個情況發生】,想要自己搭建一個服務來本地呼叫,是不是也可以?
於是,找了官方的一些資料,就動手我們們自己搭建一個服務端,方便給別人呼叫來提供服務。
官網文件地址:
https://beta.openai.com/docs/introduction
如果不知道怎麼註冊OpenAI賬號,也可以參考我的上一篇文章,裡面有一個申請英國手機號碼的方式,地址:
https://www.cnblogs.com/weskynet/p/16973956.html
好了,接下來開始我們自己的表演。
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】,即可獲取本篇部落格的原始碼。或者掃以下二維碼,也可進入公眾號後臺:
以上就是該文章的全部內容,如果覺得有幫助,歡迎點贊、轉發或評論,謝謝大家,祝大家和機器人玩的愉快~