申請 API 金鑰與安全保管
用程式呼叫模型之前,先拿到 API 金鑰並把它藏好。這堂課教你用環境變數與 .env 檔管理金鑰,避免外洩與意外帳單。
在聊天介面裡用 AI,是你登入帳號、對方幫你算帳。改用程式呼叫時,沒有登入畫面,伺服器只認一樣東西:API 金鑰(API key)。請求帶著哪把金鑰,費用就算在誰頭上。
所以這堂課的重點不只是「拿到金鑰」,而是「從第一天就把它保管好」。這些步驟只要做一次,之後每個專案照著做就好,不用擔心記不住。
先認識兩個名詞
- API:讓程式和另一個服務溝通的窗口。你的程式把問題送過去,模型把答案傳回來。
- 環境變數:作業系統幫你保管的一組「名稱 = 值」,程式執行時可以讀取,但它不會出現在程式碼檔案裡。
申請金鑰的流程
各家模型供應商的流程都很像。以 Anthropic 為例:
- 到 Anthropic 的開發者主控台(Claude Console)註冊帳號。
- 在帳單頁面設定付款方式或儲值額度。
- 到 API Keys 頁面建立一把新金鑰,取一個看得懂的名字,例如
laptop-learning。 - 金鑰只會完整顯示一次,馬上複製下來,等一下要放進
.env檔。
OpenAI、Google 等供應商也是「主控台 → 建立金鑰 → 設定帳單」這套流程,名稱不同而已。這門課的範例用 Anthropic 的官方 Python SDK,但觀念都能直接套用到其他家。
為什麼不能寫在程式碼裡
最常見的錯誤是這樣:
client = anthropic.Anthropic(api_key="sk-ant-xxxxxxxx") # 千萬不要這樣做
這行程式碼一旦被推上 GitHub,就算是私人儲存庫,也可能因為改成公開、分享給別人、或被複製到別的地方而外洩。網路上有自動化程式專門掃描公開儲存庫裡的金鑰,外洩後幾分鐘內就可能被盜用。
正確做法是讓程式從環境變數讀金鑰。Anthropic 的 SDK 預設就會讀取名為 ANTHROPIC_API_KEY 的環境變數,你連參數都不用傳。
金鑰只在你的電腦裡流動,進不了 Git,也不會出現在程式碼中。
用 .env 檔管理金鑰
每次開終端機都手動設定環境變數很麻煩。常見做法是把金鑰寫在專案根目錄的 .env 檔,再用 python-dotenv 套件載入。
先安裝套件:
pip install anthropic python-dotenv
在專案根目錄建立 .env:
ANTHROPIC_API_KEY=sk-ant-你的金鑰
接著立刻建立或打開 .gitignore,加上這幾行:
.env
.env.*
!.env.example
最後一行的意思是:保留一個 .env.example 範本檔,裡面只寫變數名稱、不寫真實值,讓協作者知道要設定哪些變數:
ANTHROPIC_API_KEY=
在程式裡載入:
import os
from dotenv import load_dotenv
load_dotenv() # 讀取 .env,把內容放進環境變數
key = os.environ.get("ANTHROPIC_API_KEY")
if not key:
raise SystemExit("找不到 ANTHROPIC_API_KEY,請檢查 .env 檔")
print("金鑰已載入,開頭是:", key[:10] + "...")
注意最後只印出前幾個字元。除錯時也不要把完整金鑰印到終端機或記錄檔裡。
如果不小心 commit 了金鑰
不要只是刪掉那一行再 commit 一次,因為 Git 歷史裡還留著。正確順序是:
- 先到主控台撤銷(revoke)那把金鑰,這是唯一真正有效的補救。
- 建立一把新金鑰,更新到
.env。 - 確認
.gitignore已經設定好,再繼續工作。
設定花費上限
寫程式難免出錯,例如迴圈沒寫好、一直重複送請求。主控台通常可以設定每月花費上限或用量警示,請在開始寫程式之前就設好一個你能接受的金額。這是你和意外帳單之間最後一道防線。
我在寫一個 Python 專案,需要用到 ANTHROPIC_API_KEY。請幫我檢查這個專案資料夾:.gitignore 有沒有排除 .env、程式碼裡有沒有寫死任何金鑰,並建立一個只含變數名稱的 .env.example。
- 在供應商主控台建立一把專門給這門課用的金鑰,並設定花費上限。
- 建立一個新資料夾,放入
.env、.env.example、.gitignore三個檔案。 - 執行上面的載入程式,確認印出「金鑰已載入」。
- 執行
git init與git status,確認.env沒有出現在待加入的檔案清單裡。
讀完了嗎?
標記完成後,單元與專案的進度會自動更新(只存在這台裝置的瀏覽器)。
留言與討論
卡關了、有心得,或發現內容需要更新?都歡迎留言。留言使用 GitHub 帳號登入。