C#/.Net開發(fā)chatGPT、openAI
最近ChatGPT火爆了,自己使用了一下,確實厲害。但是使用官方網(wǎng)站不支持國內(nèi)訪問,好在國內(nèi)可以使用API調(diào)用,所以自己折騰一番,使用C#來調(diào)用API。
獲取Token
注冊賬號獲取api-keys等操作可以參考CharGPT介紹。本文不再贅述,如果嫌麻煩,直接淘寶上花幾塊錢買一個也可以,畢竟時間是寶貴的。
C#/.net調(diào)用接口
C#/.net 對接chatGPT非常簡單,導(dǎo)入相關(guān)的依賴,然后構(gòu)建OpenAiService實例,填寫相關(guān)參數(shù),就可以發(fā)送我們的問題,返回結(jié)果是問題答案。
API常用參數(shù)
設(shè)置項 | 含義 | 數(shù)據(jù)類型 | 作用 |
---|---|---|---|
model(必需) | 模型 | string | 要使用的模型ID,目前text-davinci-003 是自然語言最強大的模型 |
prompt | 提示(問題) | string/array | 你向API提供的提示,即你提出的問題 |
temperature | 創(chuàng)新采樣 | float | 取值范圍0-1,當(dāng)設(shè)置為0時,對于相同的問題,模型始終返回相同或者相近的結(jié)果,設(shè)置1則與上次的回答更加不同。默認(rèn)1 |
top_p | 情緒采樣 | float | 默認(rèn)1。替代temperature使用,考慮了模型質(zhì)量,0.1為生成結(jié)果的質(zhì)量為10%,建議使用1。 |
n | 結(jié)果數(shù)量 | int | 默認(rèn)1。針對提示所生成結(jié)果的次數(shù),會大量消耗令牌。 |
stream | 流式返回 | bool | 默認(rèn)false。是否以流式返回部分進(jìn)度,流完成后會發(fā)送終止消息data:[DONE] |
echo | 顯示提示 | bool | 默認(rèn)false,在返回結(jié)果外,還顯示用戶給的問題 |
stop | 停止詞 | string/array | 最多四個序列,返回的文本不包括停止序列 |
max_tokens | 最大令牌數(shù) | int | 默認(rèn)16,大多數(shù)模型支持最大為2048 |
注意:有一個限制是,對于大多數(shù)模型,單個API請求只能處理2048個tokens,大約1500個單詞(一個token大約是4個字符或者),附上收費標(biāo)準(zhǔn),大家在使用時注意余額情況,davinci模型收費還是不便宜。
image-20230106104624033
使用示例
采用OpenAPI官網(wǎng)給出的nuget包
Betalgo.OpenAI.GPT3
const string OPENAPI_TOKEN = "sk-************************";//輸入自己的api-key private async void Chat() { OpenAIService service = new OpenAIService(new OpenAiOptions() { ApiKey = OPENAPI_TOKEN}); CompletionCreateRequest createRequest = new CompletionCreateRequest() { Prompt = "寫一首關(guān)于工作的詩", Temperature = 0.3f, MaxTokens = 1000 }; var res = await service.Completions.CreateCompletion(createRequest,Models.TextDavinciV3); if (res.Successful) { var ss= res.Choices.FirstOrDefault().Text; Console.WriteLine(ss); } }
可以看出寫的還不錯
image.png