OpenAI API 入門 — 那些你需要知道的事

Laurice
7 min readSep 19, 2023

--

ChatGPT自從推出之後風靡全世界,而身為工程師,這時候最關心的就是有沒有API可以使用,這樣就可以串接更多的服務,而不是局限於ChatGPT提供的介面中。

這篇文章會帶大家簡單的認識OpenAI目前有提供哪些API讓大家使用,如何何提供驗證,以及使用需要付出的錢錢又是多少。

Photo by Levart_Photographer on Unsplash

在正式進到OpenAI的API之前,我們得先知道一些無聊但必要的事情

如果很在意自己的資料會不會被OpenAI拿去訓練model,接下來的部分請看仔細了~

OpenAI 如何利用拿到的資料

  • API類的服務:OpenAI目前不會拿API類服務所得到的資料做訓練,也就是說,如果是用API key去打OpenAI的API的話,這部分的資料是不會被拿去使用的。
  • 非API類的服務:非API類的服務包括ChatGPT、DALL-E等,OpenAI目前會把拿到的資料拿去做訓練,雖然會經過一些處理,但會回饋給model繼續增進能力。

如果想要/不想要自己輸入的資料被拿去訓練,OpenAI目前都有提供表格可以填寫。

資料來源:https://help.openai.com/en/articles/7039943-data-usage-for-consumer-services-faq

OpenAI API 計費方式

ChatGPT目前是免費的,但回到現實,OpenAI總是需要賺錢,所以在API這邊,他們是有收費的,收費的詳細說明在這個頁面

收費會被以下幾個因素影響:

  1. API endpoint的功能:文字、圖片、音訊等等的計費方式不同,文字是看有幾個tokens;圖片是看圖片大小及張數;音訊則是看長度。
  2. 模型:GPT-3.5 turbo與GPT-4同為Chat endpoint可以選的模型,但他們的價錢差了20倍。
  3. Input/Output:某些endpoint針對輸入及輸出有不同的計費方式,以目前官網公布的GPT-3.5 Turbo為例,4K context (支援input+output合計4096 tokens以下)的input就是每1000個tokens收0.0015美金,但output則是每1000個tokens收0.002美金。

所以在玩耍的同時,別忘了寫個程式算一下自己花了多少錢。

怎麼跟OpenAI的API互動

  • 取得OpenAI的API key
    首先,登入OpenAI官網,登入後選擇API,進到下圖的介面後,點選右上角User的頭像,會出現選單,點選View API Keys。接著進到下下圖的頁面後,便可以自己產生API key了!
產生API key的介面
  • 選擇自己要使用的語言
    目前官方有支援的有Python以及Node.js,其他語言則有熱心人士開發統合,可以在這裡找到,如果找不到的話,就等你來開發啦!如果只是要簡單用curl試試看當然也可以,畢竟他本質就是API,支援的語言只是將打API的過程包成library而已,API使用的說明在這邊可以找到。
  • 打開你的編輯器/IDE/Terminal,我們要開始寫code啦~
    接下來我會以Python作為主要範例,其他語言就以此類推。要跟OpenAI取得聯繫最重要的就是提供API key,以下是 curl 以及使用Python library提供API key的方法。
    這裡我想特別提醒,API Key這種secret是不應該隨手寫在code裡面的,如果是自己在本地測試還好,如果是公司的話,請記得要放在key management相關的服務中,千萬不要明碼寫著還推到github repository中。
curl https://api.openai.com/v1/models \
-H "Authorization: Bearer $OPENAI_API_KEY"
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")

OpenAI API 種類簡介

目前OpenAI提供了五組主要的API,以及其他一些輔助用的API,接下來會一一講解他們分別的功能。OpenAI官方文件在此。此處寫的是 2023/09 的版本,OpenAI改版非常快,可能過沒多久就是新版了,再麻煩大家自己去官網看看有沒有改版囉。

  1. Chat: Given a list of messages comprising a conversation, the model will return a response.
    翻成白話文就是,你給他一串話,OpenAI的model就會回你話,其實也就是大家熟知的ChatGPT在做的事,只是沒有web UI可以使用而已。這個endpoint要注意的是,他不會記住你上次跟他說了什麼話,所以如果要連續對話的話,需要把之前的內容也一起回傳回去,詳細的做法之後的文章會介紹。
  2. Image: Given a prompt and/or an input image, the model will generate a new image.
    OpenAI目前支援三種圖片產生方式,第一種,給一段敘述(prompt),AI會根據給的敘述產生出圖片;第二種,給一段敘述(prompt)加上想被修改的圖片,AI會根據給的敘述去加工給的圖片;第三種,給一張圖片,AI會隨便亂改,不要問我這個功能要幹嘛,我也還沒參透。
  3. Audio: Turn audio into text.
    OpenAI目前支援兩種不同的語音功能,第一種是將一段語音轉換成同語言的文字(p.s. 我剛剛試了台語的,他會變成中文字),假如是多種語言混雜的,文字也會是多種語言混雜的(日文歌中的日式英文很大機率會是片假名,但我不知道他的判斷標準);第二種則是將一段任意語言的語音翻譯成英文,目前就只支援翻譯成英文,沒有其他語言。
  4. Embeddings: Get a vector representation of a given input that can be easily consumed by machine learning models and algorithms.
    這部分就是熟悉傳統machine learning的人知道的那個embedding,此endpoint為給OpenAI任一單字或一段文字,他會回傳1536維的向量。目前使用的model是Ada v2。
  5. Fine-tuning: Manage fine-tuning jobs to tailor a model to your specific training data.
    這是一個蠻有趣的endpoint,如果需要客製化的chat,可以用這個endpoint去讓openAI幫你用你給的資料訓練一個比較客製化的model。例如你想要他不管怎樣都回正向的話語,就可以提供一些範例的input/output,這個endpoint就會回傳專為你的資料fine-tune過的模型編號,之後就可以用chat endpoint直接呼叫你的客製化模型。

這篇帶大家簡單看完目前OpenAI API的入門資訊,包括計費方式、Access方式以及目前可以使用的endpoints,下一篇會更深入地講解其中幾個endpoint怎麼使用,當然,也會提供範例程式讓大家可以一起玩玩看。

如果有什麼許願想知道的也歡迎留言~我如果有辦法解答的話會努力回覆的!

最後的最後,您的按讚是對我的鼓勵,歡迎按讚分享我的FB粉專 L’s 碎碎念

如果想看看學生時期的我:資工女孩大學回顧 — 初入資工系

如果想看看更多我的文章,歡迎訂閱、瀏覽

下一篇:OpenAI API 入門 — Chat Endpoint

--

--