如何使用 ChatGPT API

Chris Lee
5 min readMar 5, 2024

--

用 Python 調用 OpenAI 的 API

ChatGPT 有多好用應該不用特意廣告了,但對一般人來說,除了使用 OpenAI 提供的 ChatGPT Web 來使用模型外,身為專業的資料科學家及工程師,一定希望可以透過 API 的方式來調用模型,甚至跟其他功能做整合。

目前 API 有微軟的 Azure openai 服務,但主要是針對企業版的用戶,一般玩家想要玩還是建議先從 OpenAI 的官方API入手。

我們可以看到 OpenAI 的開發者平台文檔,有非常詳細的說明,我們就根據文檔來示範一下。

https://platform.openai.com/docs/overview

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 跟各種應用結合吧~

--

--

Chris Lee

隱身在金融業的資料科學家,部分文章會在個人部落格唷 https://chrisnote.com/