如何把 OpenAI API 整合進你的 App
要整合 OpenAI API,請先在 OpenAI 專案中建立一組 API 金鑰,把它存成名為 OPENAI_API_KEY 的伺服器端機密,並使用 OpenAI 官方 SDK,從你自己伺服器上的路由呼叫 API,絕對不要從瀏覽器端程式碼呼叫。根據 2026 年 9 月的資料,OpenAI 的快速入門將 Responses API 列為新專案的起點。上線前請先設定支出上限,限制回覆長度,限制每位用戶可以呼叫此功能的頻率,並以重試機制處理速率限制錯誤。
本指南涵蓋設定、請求流程、給 AI 建構工具的提示詞,以及會洩漏金鑰或燒錢的常見錯誤。OpenAI 的細節來自其截至 2026 年 9 月的官方文件。若想先了解一般概念(權杖、上下文視窗、定價),請先閱讀如何使用 LLM API。
你可以用它做什麼
- 在你的 App 內提供聊天助理(如何建立 AI 聊天機器人 App)
- 「摘要這段」、「改寫這段」或「草擬回覆」按鈕
- 從自由文字中擷取結構化資料:把電子郵件轉成訂單、為客服工單加上標籤
- 根據你自己的內容進行搜尋與問答
- 圖片生成、語音等媒體功能,視可用的模型而定
更多想法請參閱如何為你的 App 加入 AI 功能。
設定你的 OpenAI 帳號
- 在 OpenAI 平台建立帳號與專案。OpenAI 的正式環境最佳實務建議測試環境與正式環境使用不同的專案,讓兩者各自擁有獨立的金鑰與上限。
- 建立專案 API 金鑰。 OpenAI 建議設定到期日,並定期輪替金鑰。
- 在上限頁面設定支出提醒與硬性支出上限。OpenAI 的指南說明,提醒會在用量超過某個金額時通知你,而硬性上限則會強制執行每月上限。
- 加入付款方式。 OpenAI 的速率限制文件描述了用量等級:隨著你長期支出增加,你的限制也會自動提高。
請求流程
瀏覽器 -> 你的伺服器路由 -> OpenAI API
<- (串流)回覆 <-
- 用戶點擊按鈕或送出訊息。
- 瀏覽器呼叫的是你的路由,例如
POST /api/summarise。 - 你的伺服器確認用戶已登入,且有權使用此功能。
- 伺服器建立請求:指示、用戶的輸入,以及任務所需、來自你資料庫的任何資料。
- 伺服器使用環境變數中的金鑰呼叫 OpenAI。OpenAI 的 SDK 會自動讀取
OPENAI_API_KEY。 - 伺服器以串流或一次性方式回傳回覆,並記錄權杖用量。
OpenAI 的官方 SDK 套件名稱為 openai,同時提供 JavaScript/TypeScript(npm)與 Python(pip)版本。
選擇模型
OpenAI 提供多款不同價格與速度的模型,產品線也經常變動。先從較小、較便宜的模型開始,用真實範例衡量品質,只有在必要時才升級。請把模型名稱放在設定值或機密中,讓你無需重寫程式碼即可變更。目前的費率請查看 OpenAI 的定價頁面。
選項與取捨
| 決策 | 簡單的選擇 | 何時需要進一步處理 |
|---|---|---|
| 串流 | 一次回傳完整答案 | 聊天與較長的回覆適合串流;用戶能立即看到文字 |
| 對話記憶 | 每次都傳送最近的訊息 | 對話變長時,摘要較舊的訊息 |
| 輸出格式 | 純文字 | 當你的程式需要讀取欄位時,要求結構化 JSON |
| 你自己的資料 | 把相關紀錄放進請求中 | 內容太多無法全部放入時,加入對你內容的搜尋(參閱什麼是 RAG) |
| 非緊急的大量工作 | 逐一迴圈處理 | 結果可以等待時,使用 OpenAI 的批次選項以降低成本 |
給 AI 建構工具的提示詞
第一個功能:
在工單頁面新增一個「摘要」按鈕。它會呼叫伺服器路由 POST /api/summarise,該路由會檢查用戶是否已登入,載入工單,並使用官方 openai SDK 與機密 OPENAI_API_KEY 呼叫 OpenAI Responses API。請從機密 OPENAI_MODEL 讀取模型名稱。指示為:「以 3 個重點摘要,然後建議一段簡短的回覆。不要捏造訂單編號。」限制輸出長度,把回覆串流到頁面上,並且絕對不要把金鑰傳送到瀏覽器。
防護措施:
將每位用戶限制為每小時 30 次 AI 請求,並儲存在資料庫中。每次請求都要記錄輸入與輸出權杖,並附上用戶 ID 與功能名稱。如果 OpenAI 回傳 429,請遵守 Retry-After 標頭,並以指數退避加抖動(jitter)最多重試 3 次;之後顯示「AI 目前忙碌中,請稍後一分鐘再試。」其他任何失敗都顯示友善的錯誤訊息,並讓頁面其餘部分正常運作。
處理錯誤與限制
OpenAI 以多種方式衡量速率限制,包括每分鐘請求數與每分鐘權杖數,你會先碰到其中用完的那一項。超過其中任何一項時,API 會回傳 429 與 Retry-After 標頭。OpenAI 的文件建議把該值視為最低等待時間,並加上小幅隨機延遲,避免所有客戶端同時重試。
也需要預先規劃:
- 長時間生成的逾時。串流有幫助,合理的輸出上限也有幫助。
- 服務供應商中斷。 AI 功能應該優雅地失敗,而不會破壞整個頁面。
- 不良輸出。 在儲存結構化輸出之前先驗證,並且不要讓模型輸出在沒有程式碼檢查的情況下觸發敏感動作。
常見錯誤
- 金鑰放在前端或程式碼庫中。 瀏覽器程式碼是公開的,外洩的金鑰可能在幾分鐘內就被濫用。參閱如何保護 API 金鑰安全。
- 沒有支出上限。 迴圈或濫用的用戶可能很快就產生龐大的帳單。
- 沒有每位用戶的限制。 服務供應商的限制保護的是你的錢包,而不是你的其他用戶。
- 依賴提示詞來確保安全。 用戶可以輸入「忽略先前的指示」。權限應該放在伺服器程式碼中。
- 傳送超過需要的內容。 整份文件與冗長的歷史紀錄會成倍增加成本。只傳送任務所需的內容。
- 寫死模型名稱。 模型會被更新與淘汰;請把它做成設定值。
- 不假思索地傳送個人資料。 請閱讀 OpenAI 的資料使用條款,只傳送功能所需的內容。
檢查清單
- 測試與正式環境使用不同的 OpenAI 專案(或金鑰)
- 金鑰存為伺服器端機密,絕不放在瀏覽器程式碼或程式碼庫中
- 已設定支出提醒與硬性支出上限
- 所有呼叫都經過你的伺服器,並檢查用戶權限
- 輸出長度有上限;模型名稱可以設定
- 你的 App 中有每位用戶的速率限制
- 以 Retry-After、退避與抖動處理 429
- 有友善的錯誤狀態;沒有 AI 時頁面仍可運作
- 每個功能的權杖用量都有記錄
- 已用超長、空白與惡意的輸入測試過
在 Mythex 中使用 OpenAI API
你在 Mythex 上建構的 App 中,AI 功能使用你自己的 OpenAI 金鑰,費用由你的 OpenAI 帳號計算,而不是由 Mythex 建構點數計費。請透過 /secrets、專案設定,或 Agent 需要金鑰時顯示的機密卡片,把 OPENAI_API_KEY 新增為專案機密,然後使用類似上述的提示詞描述功能。在已發布的 App 上變更機密後,請重新發布,讓它套用新的機密。文件中的食譜使用你自己的 API 金鑰加入 AI 功能提供了入門提示詞,而聊天中的機密則說明了機密卡片。想比較供應商?請參閱如何整合 Claude API。
常見問題
新 App 應該使用哪一個 OpenAI API?
根據 2026 年 9 月的資料,OpenAI 的快速入門將 Responses API 列為新專案的起點,其官方 SDK 的範例使用 client.responses.create()。開始之前,請先查看 OpenAI 文件中目前的建議。
我可以從瀏覽器呼叫 OpenAI API 嗎?
不能使用你的密鑰。任何人都能讀取瀏覽器中的程式碼,並重複使用金鑰來讓你的帳單暴增。瀏覽器應該呼叫你自己的伺服器路由,再由伺服器使用存為環境變數的金鑰呼叫 OpenAI。
如何避免 OpenAI API 花費過多?
OpenAI 的正式環境指南建議設定支出提醒,並在上限頁面設定每月硬性支出上限。在你的 App 中,請限制回覆長度、限制每位用戶的請求次數,並記錄權杖用量,讓你看出哪些功能最耗費成本。
OpenAI 回傳的 429 錯誤代表什麼?
代表你已達到速率限制。OpenAI 的速率限制文件說明,回應會包含 Retry-After 標頭;請至少等待該時間,加上一小段隨機延遲,然後以指數退避方式重試。