C#掌握”OpenAI API”:Betalgo.OpenAI.GPT3入門指南

本篇文將介紹Betalgo.OpenAI.GPT3,這是一款用於訪問 OpenAI ChatGPT, Whisper, GPT-3 and DALL·E的.NET SDK,也是官方OpenAI在API文件推薦的C#/NET類別庫,接下來照著下面的步驟,就可以快速地開始透過C#使用”OpenAI API”

1.建立.net6.0專案

2.安裝以下Nuget套件

  • OpenAI.GPT3 //本篇介紹的套件
  • Microsoft.Extensions.Configuration //設定Config
  • Microsoft.Extensions.Configuration.Json //讀取Config.json
  • Extensions.DependencyInjection //注入時須要使用

3.去https://platform.openai.com/account/api-keys 取得你帳號的API Key

OpenAI API 之API Key

4.鍵入以下程式碼,並把API Key換成剛剛上一步取得的API Key

OpenAI API 之範例圖

 

若專案類型是web API則推薦使用注入的方式

OpenAI API 之範例圖

之後使用以下程式碼就可以取得IOpenAIService的實體

5.執行結果如下

接下來討論細節

1.第2行的OPENAPI_TOKEN
除了使用字串、讀取Config外,也推薦使用微軟提供的管理使用者密碼功能(user secret),詳細請看https://learn.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-6.0&tabs=windows

2.第3行的CompletionCreateRequest
CompletionCreateRequest屬於Completions端點,而除了Completions之外,根據你的用途可以設不同的端點,Chat GPT、Image DALL·E、Edit、Embeddings、Files,詳細請看https://github.com/betalgo/openai/wiki

3.第5行的Prompt為問OpenAI的問題

4.第6行的Model為OpenAI所使用的模型

OpenAI API 之範例圖

另外GPT還有細分指令Ada、Babbage、Curie、Davinci,詳細請看https://platform.openai.com/docs/models/gpt-3-5,因為模型跟價格有關,所以可以多嘗試找出成本最低又符合需求的模型

5.第10行的res.Successful,筆者在測試的時候,有遇過連線失敗,故失敗時最好還是把失敗訊息印出來或是做重試

6.價格-OpenAI提供錢3個月18美元的額度,過了3個月或是超過額度之後就得付錢或是藉由換帳號更換API key再度取得18美元的額度

 

實作後會發現問題,ChatGPT是像打字一樣的回應,而上面的實作是一次將回答輸出,要像ChatGPT一樣,我們得將Completions端點改為Completions Stream,將第3行程式碼替換成以下

OpenAI API 之範例圖

若是遇到回應被截斷,那是因為第5行的MaxTokens我們限制在500(默認為16),若是設定太長,價格也會因為回答太長跟著上升,需要多加注意

 

除了MaxTokens外,還有一些可以參數設定來影響結果,如下表格

參數 意義 類型 備註
temperature 溫度 float 介於 0 和 2 之間。較高的值(如 0.8)將使輸出更加隨機,而較低的值(如 0.2)將使輸出更加集中和確定。temperature與top_p 請則一修改。
top_p 核心採樣 float 默認1。替代temperature使用,若設定0.1則取得前10%質量的結果
n 生成數量 int 默認1。會生成多少次結果,但生成太多會消耗大量token
echo 顯示問題 bool 默認false。會返回問題
stop 停止 string API 將停止生成更多tokens

礙於篇幅只能介紹到這,還有許多功能沒介紹到,如Image、File等等,OpenAI API還有相當多的功能可以使用,若是對OpenAI API有興趣,想使用C#來運用,真的很推薦這款套件!

參考資料

  1. https://platform.openai.com/docs/introduction OpenAI官方文件
  2. https://github.com/betalgo/openai/wiki Betalgo.OpenAI.GPT3 Github

Comments

No comments yet. Why don’t you start the discussion?

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料