用 Python 調用 OpenAI 的 API
ChatGPT 有多好用應該不用特意廣告了,但對一般人來說,除了使用 OpenAI 提供的 ChatGPT Web 來使用模型外,身為專業的資料科學家及工程師,一定希望可以透過 API 的方式來調用模型,甚至跟其他功能做整合。
目前 API 有微軟的 Azure openai 服務,但主要是針對企業版的用戶,一般玩家想要玩還是建議先從 OpenAI 的官方API入手。
我們可以看到 OpenAI 的開發者平台文檔,有非常詳細的說明,我們就根據文檔來示範一下。
1. 申請金鑰
老實說 API 是要錢的,但每個帳號都需要經過手機認證才能使用,所以要洗免洗帳號來白嫖可以放棄了~
但每個新帳號都會有免費額度 Free trial 可以玩,只要在限定期間內都不會花到錢喲。
到帳號控制台,選擇 API key,右邊點 Create new secret key 建立一個金鑰,請務必記得自己的金鑰,然後不要外流。
2. 安裝套件並載入金鑰
安裝套件 openai 並打開 jupyter notebook,這邊使用 colab 作為示範:
你可能會將金鑰導入環境變數,或用其他更安全的方式載入,這邊示範最簡單暴力的寫法:
from openai import OpenAI
# 記得key不要洩漏出去
api_key = '把剛剛的 secret key 貼在這邊'
client = OpenAI(api_key = api_key)
3. 選擇 Model 及開始對話
根據建立的 client 就能開始對話囉 :
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "assistant", "content": "你是一個專業的AI教學顧問,請根據問題使用繁體中文回覆"},
{"role": "user", "content": "我想學習deep learning要從哪邊開始入手"}
]
)
print(completion.choices[0].message)
Model 是 OpenAI 提供調用的模型,可以參考官方文檔,但要特別注意的是,免費仔是沒有 GPT-4 and GPT-4 Turbo 可以用的,主要是 OpenAI 為了防止大家濫用,所以你要先課金累積一定使用量才會自動開通喲。
再來說下 messages 內容,主要包含幾個內容:
System:代表系統本身,控制系統運作,不參與對話,通常用不到
Assistant:負責引導或提示GPT進行回覆
User:使用者對GPT說的內容
4. 連續對話
如果你今天要連續對話,且能用 API 進行溝通,就需要記錄歷史訊息:
# 假設這是您之前的對話歷史
conversation_history = [
{"role": "assistant", "content": "你是一個專業的AI教學顧問,請根據問題使用繁體中文回覆"},
{"role": "user", "content": "我想學習deep learning要從哪邊開始入手"}
]
# 新的提問
new_user_input = "請問有推薦的入門書籍或資源嗎?"
# 將新提問加到對話歷史
conversation_history.append({"role": "user", "content": new_user_input})
# 呼叫API,發送完整的對話歷史
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=conversation_history
)
# 回答並將再加入到對話歷史中
new_answer = completion.choices[0].message
print(new_answer)
5. 用量費用
最後就是用量的注意了,API 大多都是以量計價的,可以在帳號後台的 Usage 觀察目前使用量。
不然在官方網站中,也有說明計價方式,總之確保費用狀況是非常重要的。
OpenAI 的金鑰可以用在各種第三方工具中,如 Chrome 的翻譯插件、或是LLM 的整合工具,但使用前都要先注意資安問題喲。
我們活在一個搞懂 LLM 不如用好 LLM 的時代,一起嘗試把 GPT 跟各種應用結合吧~