所有入門單元免費開放 · 課程內容持續更新中

申請 API 金鑰與安全保管

用程式呼叫模型之前,先拿到 API 金鑰並把它藏好。這堂課教你用環境變數與 .env 檔管理金鑰,避免外洩與意外帳單。

第 10.1 堂約 11 分鐘

在聊天介面裡用 AI,是你登入帳號、對方幫你算帳。改用程式呼叫時,沒有登入畫面,伺服器只認一樣東西:API 金鑰(API key)。請求帶著哪把金鑰,費用就算在誰頭上。

所以這堂課的重點不只是「拿到金鑰」,而是「從第一天就把它保管好」。這些步驟只要做一次,之後每個專案照著做就好,不用擔心記不住。

先認識兩個名詞

  • API:讓程式和另一個服務溝通的窗口。你的程式把問題送過去,模型把答案傳回來。
  • 環境變數:作業系統幫你保管的一組「名稱 = 值」,程式執行時可以讀取,但它不會出現在程式碼檔案裡。

申請金鑰的流程

各家模型供應商的流程都很像。以 Anthropic 為例:

  1. 到 Anthropic 的開發者主控台(Claude Console)註冊帳號。
  2. 在帳單頁面設定付款方式或儲值額度。
  3. 到 API Keys 頁面建立一把新金鑰,取一個看得懂的名字,例如 laptop-learning。
  4. 金鑰只會完整顯示一次,馬上複製下來,等一下要放進 .env 檔。

OpenAI、Google 等供應商也是「主控台 → 建立金鑰 → 設定帳單」這套流程,名稱不同而已。這門課的範例用 Anthropic 的官方 Python SDK,但觀念都能直接套用到其他家。

為什麼不能寫在程式碼裡

最常見的錯誤是這樣:

client = anthropic.Anthropic(api_key="sk-ant-xxxxxxxx")  # 千萬不要這樣做

這行程式碼一旦被推上 GitHub,就算是私人儲存庫,也可能因為改成公開、分享給別人、或被複製到別的地方而外洩。網路上有自動化程式專門掃描公開儲存庫裡的金鑰,外洩後幾分鐘內就可能被盜用。

正確做法是讓程式從環境變數讀金鑰。Anthropic 的 SDK 預設就會讀取名為 ANTHROPIC_API_KEY 的環境變數,你連參數都不用傳。

金鑰從 .env 檔載入成環境變數,再由程式交給模型 API;.gitignore 擋住 .env,不讓它進入 Git

金鑰只在你的電腦裡流動,進不了 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 歷史裡還留著。正確順序是:

  1. 先到主控台撤銷(revoke)那把金鑰,這是唯一真正有效的補救。
  2. 建立一把新金鑰,更新到 .env。
  3. 確認 .gitignore 已經設定好,再繼續工作。

設定花費上限

寫程式難免出錯,例如迴圈沒寫好、一直重複送請求。主控台通常可以設定每月花費上限或用量警示,請在開始寫程式之前就設好一個你能接受的金額。這是你和意外帳單之間最後一道防線。

可以這樣問 AI

我在寫一個 Python 專案,需要用到 ANTHROPIC_API_KEY。請幫我檢查這個專案資料夾:.gitignore 有沒有排除 .env、程式碼裡有沒有寫死任何金鑰,並建立一個只含變數名稱的 .env.example。

行動練習
  1. 在供應商主控台建立一把專門給這門課用的金鑰,並設定花費上限。
  2. 建立一個新資料夾,放入 .env、.env.example、.gitignore 三個檔案。
  3. 執行上面的載入程式,確認印出「金鑰已載入」。
  4. 執行 git init 與 git status,確認 .env 沒有出現在待加入的檔案清單裡。

讀完了嗎?

標記完成後,單元與專案的進度會自動更新(只存在這台裝置的瀏覽器)。

卡住了?讓 AI 當你的家教複製這段提問範本,貼到 Claude 或其他 AI 工具,再補上你卡住的地方。

留言與討論

卡關了、有心得,或發現內容需要更新?都歡迎留言。留言使用 GitHub 帳號登入。

留言區即將開放。現在可以先到 GitHub 討論區 發問,或看看 交流頁 的其他管道。