Claude Code 教學/第 22 篇・共 25 篇
LINE 家庭 AI 小幫手(二):接上模型,以 Claude 為例,模型怎麼選
把鸚鵡換成大腦:申請 Claude API 金鑰、寫出第一次呼叫,再用同兩題實測 Haiku 5.5、Sonnet 5、Sonnet 5.5 的答案與花費,說明家庭群組該選哪個模型,以及為什麼不要拿 Claude 訂閱方案來跑機器人。
上一篇做出了會鸚鵡學話的官方帳號,代表 LINE 到你電腦的路通了。這篇要把「原樣回傳」換成「問模型再回答」。
模型有很多家可以選,這個系列用的是 Anthropic 的 Claude。這篇會講三件事:金鑰要怎麼申請、程式怎麼呼叫,以及模型要選哪一個。 最後一件我用同樣兩題實測三個模型,數字都放在文中。
一、先避開我踩過的坑:用 API 金鑰,不要用訂閱
我家的小幫手剛做出來時,走的是「借用 Claude 訂閱方案」:程式在背景呼叫 Claude Code 的 claude -p,吃我每個月付的訂閱額度。看起來很划算,用了兩天就換掉了,原因有三個:
- 訂閱是給本人用的。 把自己的訂閱接成一個全家都能用的服務,可能違反使用條款,帳號被停用就得不償失。
- 額度會互搶。 家人問的每一題都吃我寫程式要用的額度,我自己要用的時候反而被限速。
- 不好算錢。 訂閱看不出每一題花多少,API 每次呼叫都會回報用了多少 token,可以精準記帳(第五篇會用到)。
所以這個系列一律走 Claude API:在 Claude Console 儲值,用多少扣多少。我家上個月的 token 費不到 3 美元,加上搜尋費估計 3~4 美元,第五篇會攤開帳本。
二、申請 API 金鑰
- 到 Claude Console 註冊並登入。
- 到 Billing 儲值。先儲最低額度就好,用完了它會停,不會無限扣款。
- 建議順便到 Limits 設一個每月花費上限,給自己第二道保險。
- 到 API Keys → Create Key,名稱取「line-family-bot」,方便之後辨認是哪個專案在花錢。
金鑰只會完整顯示一次,複製後直接貼進 .env 的 ANTHROPIC_API_KEY。每個專案用自己的一把,哪天要停掉某個專案,刪那把就好,不會影響其他程式。
三、第一次呼叫
在 Claude Code 裡交代:
.env 裡已經填好 ANTHROPIC_API_KEY。
請寫一個不到 15 行的 scripts/hello_claude.py:用 anthropic 套件,讀 .env 的 CLAUDE_MODEL,
問 Claude「用一句話介紹你自己」,印出回答和這次用了多少 input/output token。
寫完幫我跑一次,然後解釋每一行在做什麼。
它寫出來的核心會長這樣:
import anthropic
client = anthropic.Anthropic() # 自動讀環境變數 ANTHROPIC_API_KEY
response = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[{"role": "user", "content": "用一句話介紹你自己"}],
)
print(response.content[0].text)
print(response.usage.input_tokens, response.usage.output_tokens)
幾個名詞第一次出現,先說清楚:
messages:對話紀錄,是一個清單。每一句都標明是誰說的(user是人,assistant是 Claude)。API 本身不記得上一次聊過什麼,要接續對話,就得每次把前面的內容一起送過去,第三篇處理群組前後文時會用到這個觀念。max_tokens:這次回答最多能用多少 token。token 是模型計費的單位,中文大約一個字一到兩個 token。新一代模型回答前會先在內部思考,思考也吃這個額度,所以不要設太小,我設 4096。response.usage:這次花了多少 token,計費就照這個算。
四、模型怎麼選
Claude 主要分三個等級,名字就是大小:Haiku(小、快、便宜)→ Sonnet(中間)→ Opus(大、最聰明、最貴)。後面的數字是版本,越新越好。
| 模型 | 每百萬 input token | 每百萬 output token | 適合 |
|---|---|---|---|
| Claude Haiku 5.5 | US$0.10 | US$0.50 | 預算優先、問題單純 |
| Claude Sonnet 5 | US$2 | US$10 | 我家目前在用的 |
| Claude Sonnet 5.5 | US$2 | US$10 | Sonnet 的新版本,同價 |
| Claude Opus 5.5 | US$4 | US$20 | 寫程式、長篇分析,家庭群組用不太到 |
價格以 Claude 官網價目表為準。另外,每查一次網路另收 0.01 美元(每千次 10 美元),這筆很常比 token 費還貴,第三篇會再講。
同兩題實測
我用範本程式,把三個模型各問同樣兩題(2026 年 11 月 11 日,週三):
- 「台中北屯明天會下雨嗎?」(要會查網路,而且不能亂編)
- 「下週六是幾號?那天早上九點提醒我們去阿公家」(要算對日期,還要真的建好提醒)
| 模型 | 天氣 | 下週六+提醒 | 兩題總花費 |
|---|---|---|---|
| Haiku 5.5 | 查了,答對,回得比較長 | 11/21,提醒有建 | 約 US$0.024 |
| Sonnet 5 | 查了,答對,最精簡 | 11/21,提醒有建 | 約 US$0.051 |
| Sonnet 5.5 | 查了,答對,還補了「可能有微弱鋒面,帶把傘保險」 | 11/21,提醒有建,還反問「如果你是說這週六(11/14)跟我說」 | 約 US$0.084 |
三個都及格。Sonnet 5.5 比 Sonnet 5 貴,是因為它多查了一次網路、也想得比較多,換來的是那句反問:「下週六」本來就有人理解成「這週六」,會先確認的助理,比較不會讓阿公白等。
我實際踩過的坑
今年 9 月以前,我家用的是上一代的 Haiku 4.5,一個月才 1 美元出頭。換掉它是因為我自己越用越覺得它「聽不懂、查不好」,去翻紀錄,抓到這幾種錯:
- 問兩週後的天氣,它直接編出一份預報(氣象署根本還沒發布那麼遠的)
- 算錯今天是星期幾,提醒排到錯的那一天
- 同一則回覆前後自相矛盾
對家庭群組來說,一次講錯比慢兩秒嚴重得多:長輩會照著做。這次實測新一代的 Haiku 5.5 已經沒有這些問題,但我還沒長期用過,不敢掛保證。
我的建議
- 想省事:選 Sonnet。 我家現在跑 Sonnet 5,範本預設也是它。要用新的 Sonnet 5.5,只要把
.env的CLAUDE_MODEL改成claude-sonnet-5-5。 - 預算很緊、或群組很活躍:先試 Haiku 5.5,但前兩週請自己盯著,特別是天氣、日期、提醒這三類。
- 不需要 Opus。 家庭群組的問題不難,多付的錢換不到差別。
- 換模型只是改一行設定,先選一個用兩週,看實際帳本和家人反應再調,不用一開始就想到最好。
五、把 Claude 接進 webhook
現在把第一篇的鸚鵡換掉。範本的 main.py 已經全部寫好,但我建議請 Claude 帶你走一遍,而不是直接執行:
請讀 main.py、claude_client.py、line_api.py。
用「一則群組訊息進來,到小欣回覆出去」的順序,帶我走一遍經過哪些函式,
每一步用一兩句話說明。先不要改任何程式。
最核心的是 claude_client.py 裡呼叫模型的這幾行:
response = client.messages.create(
model=MODEL, max_tokens=4096, system=system, tools=TOOLS, messages=messages
)
usage.log_usage(MODEL, response.usage)
跟上面的 hello 版本比,多了三樣東西:system 是人設(第三篇),tools 是查網路和提醒這些工具(第三、四篇),log_usage 把每次的 token 數記進 data/usage.jsonl(第五篇算錢用)。
六、驗收:先不用 LINE
每改一次就要拿手機在群組裡測試,很快就會煩。範本有一個 DRY_RUN 模式:程式照常收訊息、照常問 Claude,但不真的呼叫 LINE,而是把要回的話印在終端機。
在 .env 設 DRY_RUN=1,開兩個終端機:
# 第一個:啟動小欣
venv/bin/python main.py
# 第二個:假裝 LINE 送來一則私訊
venv/bin/python scripts/fake_line_event.py "台中明天會下雨嗎"
第一個視窗出現 [DRY_RUN reply] ... 加上一句像樣的回答,就成功了。fake_line_event.py 會用你的 Channel secret 算出跟 LINE 一模一樣的簽章,所以走的是完整的 webhook 流程,只差最後一步沒真的送出去。
確認沒問題,把 DRY_RUN 改回 0、重開程式,再用手機私訊官方帳號試一次。
下一篇讓她變成「小欣」:給她人設、教她只在被 @ 時開口、看懂群組前面在聊什麼,並且學會上網查資料。