Skip to content
← 文章目次 HCYTLOG / 文章與筆記

Vibe coding:你該知道的 API key 知識

保留 API key 外洩事件,更新 Gemini 預付計費與 OpenAI 支出上限,說明後端代理、配額、限流和停機責任。

Vibe coding:你該知道的 API key 知識
Photo by Gabriella Clare Marino / Unsplash
本文目錄

2026-10-08 更新:保留當時 API key 與帳單事件的背景,補上目前的 Gemini 預付計費、支出上限和 OpenAI hard spend limits。下面的設定說明依官方文件整理,不代表我重新測過當年的分享作品。

當時的事件,問題出在誰的金鑰

有人把會計費的 API key 直接放到可分享的前端,誰用了都算你的錢。當事人用 Google AI Studio 的 Build/Canvas 做了一個可分享的 App,介面上叫使用者填「自己的」key,但流程其實鎖了開發者的 key。內容被大量轉傳,短期流量爆掉,帳單也跟著爆。後來她以「Google 設計不良、計費綁 GCP」為切入點開砲,社群自然吵起來。

把情緒抽掉,這件事談的是工程邏輯與金流控管。介面叫使用者填自己的 key,不代表請求真的用他的 key;最後是哪個專案的憑證送出請求,才決定費用記在哪裡。

當時我把幾家供應商分成「儲值」與「Google 雲端用量計費」,這種分法現在不夠用了。要看帳戶方案、是否自動加值,以及哪個設定真的會擋住下一筆請求。

2026 年的計費控制,什麼時候會停

預算提醒與硬上限要分開看

提醒只告訴你已經花了多少,不會替你拒絕請求。預付餘額、自動加值上限和每月支出上限也是不同設定:限制自動加值,不代表已有餘額不能再花;平台的用量資料若延遲,停用前仍可能產生費用。

Gemini 已有 Prepay 與支出上限

Gemini 官方計費文件說明,Prepay/Postpay 自 2026-03-23 開始生效,新使用者預設 Prepay,既有帳戶則依自己的通知與方案確認。預付餘額用完會停止服務,也能設定自動加值;Gemini 另有帳戶層級及專案層級的每月支出上限。

這不等於零超支。官方列出約 10 分鐘的計費處理延遲,長時間執行的批次任務或 Agent 仍可能超出餘額或上限;專案支出上限也標為實驗性功能,發票帳戶有適用限制。原文「Gemini 不是儲值模式,除非自己關掉才會停」已不適合當作現在的指南。

OpenAI 的支出提醒與 hard spend limits

OpenAI 官方 Spend limits 文件區分支出提醒與組織/專案的 hard spend limits。要停止流量,必須啟用 Enforce a hard limit;達到適用上限時,請求會回傳 429,錯誤碼為 organization_spend_limit_exceeded 或 project_spend_limit_exceeded。

官方同樣說明執行不是即時的,紀錄到的支出可能略超設定金額。不開自動儲值可以限制補款,但仍要確認帳戶計費方式和支出設定;其他供應商也應各自查證,不用品牌名稱代替停機條件。

後端代理負責保密,還得管住請求

不要把長期金鑰交給瀏覽器

公開作品不要把開發者的長期 API key 放進前端程式、打包檔或可讀的設定。金鑰放在後端環境變數或祕密管理服務,由後端呼叫模型;測試與正式環境分開,log 也不要記完整金鑰。

但只加一個後端代理還不夠。代理若人人都能呼叫,攻擊者不用拿到 key,也能透過你的服務消耗額度。後端要驗證使用者,限制可用模型、輸入大小和輸出 token,不能讓前端任意指定供應商 URL 或換成昂貴模型。

即時串流有不同做法。例如 Gemini Live API 的 ephemeral tokens可由後端核發短期、受限憑證,讓前端直接連線;目前這種 token 僅適用 Live API。保護的重點是長期金鑰不外流,不必把所有流量都硬塞進同一種代理。

配額、限流與併發要一起限制

速率限制管短時間內能呼叫幾次,配額管每人或整個服務累積能用多少,併發限制管同時有幾個任務。三個都要想:每分鐘只准一次的請求,跑一整天仍會花錢;每人都沒超額,多人同時進來仍可能壓垮服務。

這些檢查要由後端執行,不能只把前端按鈕停用。併發請求也不能都先看到「尚有餘額」就一起放行;先預留用量、完成後結算,才不容易讓同一份配額被重複使用。

監控看到超支後,誰來停止服務

我原本建議在 10%/30%/70%/90% 發警示,這些數字只是設定範例。真正要定義的是:誰收到警示、多久能處理,以及哪個門檻會自動停止接受新任務。

  • 用自己的請求紀錄追蹤用量,和供應商帳單比對;不要只等有延遲的帳單通知。
  • 接近上限時拒絕或暫停新任務,讓已接受的任務有清楚的處置;不要在超額錯誤後無限重試。
  • 定義降級、排隊或拒絕的行為與恢復條件,也告訴使用者現在不能用的原因。
  • 一旦外洩,撤銷或更換金鑰、停止相關入口,再檢查部署和請求紀錄。

分享作品前,先講清楚誰在付費

如果想讓別人自己付費,請求必須實際使用對方可計費的帳戶或憑證。OAuth 是否能做到這件事,得看供應商支援的授權流程;登入 Google 帳號,並不等於把 Gemini 的帳單移給那個人。

若後端受託使用使用者的 key,就要保護儲存、限制用途,並提供刪除方式。介面則說清楚:這次使用誰的額度、花完會發生什麼、能不能關掉自動加值。供應商的停止線和自己的配額/熔斷都要保留,不能只靠「我有寄提醒信」。