API 開發
第一次串接 Claude API 就上手:從拿金鑰到收到回應
第一次串接 Claude API 就上手:從拿金鑰到收到回應
很多人用過 Claude 的聊天介面,但要把 Claude 裝進自己的產品裡,就得走 API 這條路。好消息是,送出第一個請求比你想像的簡單;真正值得花時間搞懂的,是請求從瀏覽器出發、經過你的伺服器、抵達模型再回來的完整旅程。
「金鑰不能碰前端」這件事,值得一開始就刻進腦子裡。這篇就從申請金鑰開始,一步一步用 Python 送出第一個請求,並把「Claude 其實沒有記憶」這個最容易踩雷的觀念一次講清楚。
你將學到什麼
請求的完整旅程
從瀏覽器到模型再回來的五個階段,以及為什麼中間一定要有你的伺服器。
申請與保管 API 金鑰
在 Anthropic Console 建立金鑰,用 .env 檔案安全存放。
第一個 Python 請求
用 client.messages.create 與三個必填參數拿到回應。
多輪對話的正確做法
Claude 不記得上一句,對話歷史要自己維護並整包送出。
一個請求的完整旅程
每次與 Claude 的互動都遵循同一個模式,可以拆成五個階段:客戶端把請求送到你的伺服器、伺服器轉發給 Anthropic API、模型處理、回應回到伺服器、再回到客戶端。搞懂這條路之後,不管是設計架構還是除錯,你都知道問題可能卡在哪一段。
為什麼中間一定要有你的伺服器
- API 請求必須帶秘密金鑰做身分驗證
- 金鑰一旦寫進前端程式碼,等於直接公開
- 任何人都能把金鑰抽出來,拿你的額度發請求
所以正確做法是:網頁或手機 App 先把請求送到你自己的伺服器,再由伺服器帶著安全保管的金鑰去呼叫 Anthropic API。前端從頭到尾碰不到金鑰。
先把 API 金鑰拿到手
到 console.anthropic.com 登入你的 Anthropic 帳號,依序完成這幾步:
- 在主控台右上方找到「Get API Keys」按鈕
- 點「Create Key」建立新金鑰
- 選擇 workspace 並幫金鑰取個名字,方便日後辨識
- 彈出視窗會顯示金鑰,立刻複製保存
環境設定:讓金鑰遠離程式碼
先在 Jupyter notebook 裡安裝需要的套件:
%pip install anthropic python-dotenv
接著在 notebook 同一個資料夾建立 .env 檔案存放金鑰:
ANTHROPIC_API_KEY="your-api-key-here"
這樣金鑰就不會出現在程式碼裡,也不會不小心被 commit 進版本控制。記得把 .env 加進 .gitignore。最後載入環境變數、建立客戶端:
from dotenv import load_dotenv
load_dotenv()
from anthropic import Anthropic
client = Anthropic()
model = "claude-sonnet-4-0"
送出第一個請求
核心是 client.messages.create() 這個函式,它有三個關鍵參數:
- model:要使用的 Claude 模型名稱
- max_tokens:回應長度的安全上限,不是目標長度
- messages:要送給 Claude 的對話歷史
特別說一下 max_tokens:設成 1000 的意思是「最多讓 Claude 生成 1000 個 token」。Claude 不會刻意寫好寫滿,它寫完該寫的就停;只有內容超過上限時,生成才會被中途切斷。
message = client.messages.create(
model=model,
max_tokens=1000,
messages=[
{
"role": "user",
"content": "What is quantum computing? Answer in one sentence"
}
]
)
print(message.content[0].text)
回應物件裡有很多資訊,但你通常只需要生成的文字,用 message.content[0].text 就能取出。除了文字,回應還包含 usage(輸入與輸出的 token 數)和 stop reason(生成為什麼結束:碰到 max_tokens 上限、自然收尾,或撞到預先設定的 stop sequence)。
模型內部的四個階段
請求送進 Anthropic 之後,Claude 對它的處理可以拆成四個階段:斷詞(tokenization)、嵌入(embedding)、脈絡化(contextualization)、生成(generation)。了解這條產線,很多參數的意義會突然清晰起來。
- 斷詞:先把你的輸入切成一小塊一小塊的 token,可能是完整的字詞、字詞的一部分、空格或符號。入門階段,可以先粗略把一個詞當成一個 token 來想像。
- 嵌入:每個 token 轉換成一長串數字,代表這個詞所有可能的意思。像 quantum 這個詞,可能指物理量的最小單位、量子力學的概念、極微小的東西,也可能指量子計算。
- 脈絡化:Claude 依據前後文調整每個嵌入,把「在這句話裡最可能的意思」凸顯出來。
- 生成:脈絡化後的結果經過輸出層,算出每個候選詞的機率。Claude 不會永遠選機率最高的那個,而是混合機率與受控的隨機性,讓回應自然又有變化。每選出一個詞,就把它接上序列,整個流程再跑一次。
每生成一個 token,Claude 都會檢查要不要停下來:達到 max_tokens 上限了嗎?生成了代表自然結束的 token 嗎?撞到預先定義的 stop sequence 了嗎?任何一個成立,生成就結束,而結束的原因會寫在回應的 stop reason 裡。這些細節不用背,先熟悉術語與整體流程,之後除錯時你會很感謝現在的自己。
Claude 沒有記憶:多輪對話自己管
這是新手最常踩的雷:Claude 不會儲存任何對話歷史,每個請求完全獨立。你先問「什麼是量子計算」,再追問「再寫一句」,Claude 根本不知道你在指什麼,只會隨機寫一句不相干的話。
想讓對話有上下文,要做兩件事:在程式裡自己維護一份訊息清單,而且每次請求都把完整的對話歷史整包送出,包含 Claude 先前的回覆。這裡示範三個小幫手函式:
def add_user_message(messages, text):
messages.append({"role": "user", "content": text})
def add_assistant_message(messages, text):
messages.append({"role": "assistant", "content": text})
def chat(messages):
message = client.messages.create(
model=model,
max_tokens=1000,
messages=messages,
)
return message.content[0].text
實際使用時,流程長這樣:
messages = []
add_user_message(messages, "Define quantum computing in one sentence")
answer = chat(messages)
add_assistant_message(messages, answer)
add_user_message(messages, "Write another sentence")
final_answer = chat(messages)
因為第二次請求帶上了完整脈絡,Claude 就知道「再寫一句」指的是延伸量子計算的定義。這三個小幫手函式之後會一直用到,值得收進你的工具箱。也順帶留意:這種「整包重送」的設計代表對話越長,每次請求的輸入就越大,回應裡的 usage 欄位正好可以幫你追蹤 token 的用量。
延伸學習
做出你的第一個 Skill
一場快閃直播的完整重製。從搞懂 Skill 的五個層級開始,帶你把一件你每天在做的重複工作,寫成一支 AI 真的會照做的 Skill ── 命名、description、輸入拆解、Workflow 訪談、Output 與 Checks,最後組成一份能通過格式檢查的 SKILL.md。
NT$ 999
ChatGPT 很強,但真正讓你下班的是 Google
六小時完整實錄。從「AI 很厲害,為什麼你還是每天加班」這個問題出發,把 Google Workspace 當成真正的工作平台重新設計一次流程 ── Sheets 的資料結構、Drive 與 Docs 的文件流、Gmail 與 Calendar 的通知系統,再用 Apps Script 讓它自己跑起來,最後收斂成一張屬於你自己的 AI 工作能力地圖。
NT$ 4,599

