串接 OpenAI API 入門:從申請金鑰到第一支程式的完整教學
想把 ChatGPT 的能力放進自己的網站或程式,卻被 API 一詞卡住?本文從申請 API Key、控管費用、寫出第一支呼叫程式開始,逐步講解對話結構、參數調整、串流輸出與錯誤處理,並附上 Python 與 JavaScript 範例,讓零基礎的你也能順利上手。
什麼是 OpenAI API
我們平常在網頁上用的 ChatGPT 是一個「產品」,而 OpenAI API 則是讓你把同樣的模型能力,透過程式呼叫的方式,嵌入到自己的網站、App 或自動化流程裡的「介面」。簡單說,API 就像一個窗口,你把問題(請求)遞進去,模型把答案(回應)遞出來,中間的運算由 OpenAI 的伺服器完成。
有了 API,你就能打造專屬客服機器人、自動摘要工具、內容生成後台等應用,而不必受限於官方網頁介面。這也是所有 AI 產品背後最常見的技術基礎。
第一步:申請 API Key 與設定付費
前往 OpenAI 的開發者平台註冊帳號後,在 API Keys 頁面點選建立新金鑰。金鑰只會完整顯示一次,請立刻複製並妥善保存,切勿外流或寫死在前端程式碼中,否則可能被盜用而產生高額費用。
OpenAI API 採預付或後付的計費方式,與 ChatGPT Plus 訂閱是分開的,也就是說訂閱 Plus 不代表 API 免費。建議一開始就到 Billing 設定用量上限(usage limit),並儲值小額測試,避免程式寫錯導致費用暴衝。以台幣估算,開發測試階段通常每月幾十到幾百元就很夠用。
第二步:理解對話的資料結構
OpenAI 的對話式 API 以「訊息陣列」為核心,每則訊息有一個角色(role)與內容(content)。角色主要有三種:
system 用來設定 AI 的身分與規則,例如「你是一位專業的繁體中文客服」。user 是使用者的輸入。assistant 是模型過去的回覆。當你要維持多輪對話時,就把歷史訊息依序放進這個陣列一起送出,模型才會記得前文。
理解這個結構非常重要,因為模型本身是「無狀態」的,它不會自動記得上一次對話,記憶完全靠你每次把歷史帶進去。
第三步:寫出你的第一支程式
Python 範例
先安裝官方套件:
pip install openai
接著把金鑰放在環境變數 OPENAI_API_KEY,再執行:
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "你是一位專業的繁體中文助理,回答要簡潔具體。"},
{"role": "user", "content": "請用三點說明什麼是 API。"}
]
)
print(response.choices[0].message.content)
JavaScript(Node.js)範例
npm install openai
import OpenAI from "openai";
const client = new OpenAI();
const response = await client.chat.completions.create({
model: "gpt-4o-mini",
messages: [
{ role: "system", content: "你是一位專業的繁體中文助理,回答要簡潔具體。" },
{ role: "user", content: "請用三點說明什麼是 API。" }
]
});
console.log(response.choices[0].message.content);
兩段程式的邏輯完全相同:建立客戶端,指定模型與訊息陣列,取回回應。跑通這一步,你就完成了與 AI 的第一次程式對話。
第四步:認識關鍵參數
model 決定使用哪個模型。gpt-4o-mini 這類小模型速度快、成本低,適合分類與簡單問答;能力更強的大模型適合複雜推理與長文生成,但費用較高。
temperature 控制回答的發散程度,範圍約 0 到 2。數值越低回答越穩定一致,適合資料抽取;數值越高越有創意,適合發想文案。多數應用設在 0.2 到 0.7 之間。
max_tokens(或新版的 max output tokens)限制回覆長度,是控制成本的重要手段。token 是模型處理文字的最小單位,中文一個字大約會拆成一到兩個 token,計費就是依輸入與輸出的 token 數量計算。
第五步:串流輸出提升體驗
預設情況下 API 會等整段回覆生成完才回傳,長文時使用者要等待數秒。開啟串流(stream)後,模型會像打字機一樣逐字回傳,體驗更接近 ChatGPT 網頁。實作上只要把 stream 參數設為 true,再逐段接收即可。對於面向終端使用者的產品,串流幾乎是必備。
第六步:錯誤處理與重試
正式上線的程式一定要處理錯誤。常見的錯誤碼包括:401 代表金鑰錯誤或未帶金鑰;429 代表超過速率限制或額度不足;500 與 503 代表伺服器暫時異常。
針對 429 與 5xx 這類暫時性錯誤,正確做法是採用「指數退避」重試,也就是失敗後等待逐漸拉長的時間再試,例如等 1 秒、2 秒、4 秒,避免瞬間大量重試把問題放大。同時要為每次呼叫設定合理逾時(timeout),避免程式卡死。
第七步:善用進階功能
當基本呼叫上手後,還有幾個進階功能能讓應用更強大。第一是結構化輸出,你可以要求模型只回傳特定格式的 JSON,例如把一段客訴文字抽取成「情緒」,「類別」,「聯絡方式」三個欄位,方便程式後續處理,不必再自己解析自由文字。第二是工具呼叫(function calling),讓模型在需要時「請求」呼叫你定義的函式,例如查詢庫存或計算運費,模型負責判斷何時該用哪個工具並填入參數,你的程式負責實際執行,這是打造能實際行動的 AI 代理人的基礎。第三是多模態,較新的模型能同時理解圖片與文字,適合做圖片描述、單據辨識等應用。這些功能不必一開始就全用上,等你的專案有明確需求時再逐步導入即可。
常見錯誤與最佳實務
第一,切勿把 API Key 寫在前端或提交到公開的程式倉庫。金鑰應存在後端環境變數,前端一律透過自己的伺服器中轉呼叫。
第二,控制上下文長度。把過長的歷史對話全部塞進去不但花錢,還可能超過模型的上限。可只保留最近幾輪,或先摘要舊對話。
第三,善用 system 提示。清楚定義角色、語氣、輸出格式與禁止事項,能大幅提升回覆品質與一致性,這比反覆調參數更有效。
第四,做好內容審核與免責。面向公眾的應用要防範不當內容與提示注入攻擊,必要時加上關鍵字過濾或審核步驟,並提醒使用者 AI 回覆僅供參考。
結語
串接 OpenAI API 的門檻其實比想像中低,核心只有三件事:管好金鑰與費用、理解訊息陣列的對話結構、寫好錯誤處理。跑通第一支程式後,你可以再逐步加入串流、多輪記憶、工具呼叫等進階功能。建議從一個小而具體的專案開始,例如把公司 FAQ 做成問答機器人,邊做邊學,很快就能把 AI 真正整合進自己的產品與工作流程中。
常見問題
有了 ChatGPT Plus 訂閱,使用 API 還要另外付費嗎?
要。ChatGPT Plus 訂閱與 OpenAI API 是兩套獨立的計費系統。訂閱 Plus 只影響網頁版 ChatGPT 的使用,API 則依你實際呼叫消耗的 token 另外計費。建議在 Billing 設定用量上限並儲值小額測試,避免費用超出預期。
為什麼模型不記得我上一句話?
因為 OpenAI 的模型本身是無狀態的,每次呼叫都是獨立的,它不會自動記得先前對話。要維持多輪記憶,必須由你在每次請求時,把過去的 user 與 assistant 訊息一起放進 messages 陣列送出,模型才能參考前文。
temperature 參數應該設多少?
視用途而定。需要穩定、一致、可預測的結果(例如資料抽取、分類)時設低一點,接近 0;需要創意與變化(例如發想文案、腦力激盪)時設高一點。多數一般應用設在 0.2 到 0.7 之間就很合適。
API Key 應該放在哪裡才安全?
金鑰應存放在後端伺服器的環境變數中,絕對不要寫在前端 JavaScript、行動 App 或提交到公開的程式倉庫,否則容易被盜用產生高額費用。前端若需呼叫 AI,應透過自己的後端中轉,由後端持有金鑰。
呼叫 API 出現 429 錯誤該怎麼辦?
429 代表超過速率限制或額度不足。若是速率限制,應採用指數退避策略重試,也就是失敗後等待逐漸拉長的時間再試,例如 1 秒、2 秒、4 秒。若是額度不足,則需到 Billing 儲值或提高用量上限。