跳至主要內容

在 Claude Code 中使用 GLM-5.2 / GLM-4.7-Flash 模型

Claude Code CLI(claude)不只能用 Anthropic 原生模型,透過 OpenRouter 提供的 Anthropic Messages API 相容端點(「Anthropic Skin」),也能讓任意模型作為後端運作。這次我 嘗試了將對話主模型設為 z-ai/glm-5.2、標題產生等輕量背景任務用的模型設為 z-ai/glm-4.7-flash 的設定,這裡整理一下作法。

參考: https://openrouter.ai/docs/cookbook/coding-agents/claude-code-integration

前提條件

  • 已將 OpenRouter 的 API 金鑰設定於 $env:OPENROUTER_API_KEY
  • 即使已用 claude.ai 帳號登入 Claude Code,只要有透過環境變數的驗證,就會優先採用該方式。 此時會出現 ⚠ claude.ai connectors are disabled ... 的警告,但不影響實際運作。

所需的環境變數

變數備註
ANTHROPIC_BASE_URLhttps://openrouter.ai/apiOpenRouter 的 Anthropic 相容端點
ANTHROPIC_AUTH_TOKENOpenRouter 的 API 金鑰Authorization: Bearer 傳送
ANTHROPIC_API_KEY""(明確設為空字串)若未設定或非空,驗證方式會衝突而導致錯誤
ANTHROPIC_MODELz-ai/glm-5.2主要對話模型。直接指定 OpenRouter 上的模型 ID
ANTHROPIC_SMALL_FAST_MODELz-ai/glm-4.7-flash用於標題產生等輕量背景任務的子模型

主模型與子模型的區分使用

ANTHROPIC_MODEL 只控制主要對話模型。Claude Code 內部用於標題產生、 auto-mode 判斷等輕量、高速任務的子模型,則由 ANTHROPIC_SMALL_FAST_MODEL 指定。 只要設定這個變數,就能確實切換輕量任務所使用的模型。

設定方法

方法A:以專案為單位啟用(推薦)

在儲存庫的 .claude/settings.local.json 中設定如下內容。

{
"env": {
"ANTHROPIC_BASE_URL": "https://openrouter.ai/api",
"ANTHROPIC_API_KEY": "",
"ANTHROPIC_MODEL": "z-ai/glm-5.2",
"ANTHROPIC_SMALL_FAST_MODEL": "z-ai/glm-4.7-flash"
}
}

ANTHROPIC_AUTH_TOKEN(機密資訊)不要寫入檔案,而是在 shell 端由 OPENROUTER_API_KEY 提供。只要在 PowerShell 設定檔($PROFILE)中加入以下內容一次, 之後每次開啟 shell 都會自動設定完成。

$env:ANTHROPIC_AUTH_TOKEN = $env:OPENROUTER_API_KEY

bash/zsh 的情況,則在 ~/.bashrc~/.zshrc 中加入:

export ANTHROPIC_AUTH_TOKEN="$OPENROUTER_API_KEY"

在此狀態下於此目錄中執行 claude -p "...",就會自動讀取 .claude/settings.local.json 的設定,讓主模型與子模型都透過 OpenRouter 運作。 不會影響其他專案中 Claude Code 的執行。

方法B:僅針對特定指令暫時切換

若不想修改 shell 設定檔,可以在執行時當場指定環境變數。

PowerShell:

$env:ANTHROPIC_BASE_URL = "https://openrouter.ai/api"
$env:ANTHROPIC_AUTH_TOKEN = $env:OPENROUTER_API_KEY
$env:ANTHROPIC_API_KEY = ""
$env:ANTHROPIC_MODEL = "z-ai/glm-5.2"
$env:ANTHROPIC_SMALL_FAST_MODEL = "z-ai/glm-4.7-flash"
claude -p "1+1は?"

bash:

ANTHROPIC_BASE_URL="https://openrouter.ai/api" \
ANTHROPIC_AUTH_TOKEN="$OPENROUTER_API_KEY" \
ANTHROPIC_API_KEY="" \
ANTHROPIC_MODEL="z-ai/glm-5.2" \
ANTHROPIC_SMALL_FAST_MODEL="z-ai/glm-4.7-flash" \
claude -p "1+1は?"

方法C:設為整台機器的預設值(不推薦)

若將上述變數持久化為 Windows 的使用者環境變數,任何終端機、任何專案都會預設透過 OpenRouter/GLM 運作。但這也會影響其他專案中原本打算使用一般 Claude(Anthropic) 的操作,因此除非確實想改變整體預設值,否則建議使用方法A/B。

動作確認

以下指令確認回應內容及計費紀錄(modelUsage)中都記錄了 z-ai/glm-5.2

claude -p "Reply with exactly: OK-GLM-TEST" --output-format json
{
"result": "OK-GLM-TEST",
"modelUsage": {
"z-ai/glm-5.2": { "inputTokens": 3272, "outputTokens": 8, "costUSD": 0.028336 }
}
}

此外,搭配 --debug all 執行稍長的提示詞後,也確認主模型與子模型的 派送實際上都有發生。

[API:timing] dispatching to firstParty model=z-ai/glm-4.7-flash
[API:timing] dispatching to firstParty model=z-ai/glm-5.2

針對單一提示詞,輕量任務正確地交由 z-ai/glm-4.7-flash 處理,正式回應則交由 z-ai/glm-5.2,模型的區分使用是正確的。

已知注意事項:互動式工作階段中的請求增生

在互動式 claude 工作階段(無論是從 VS Code 開啟或直接在 TTY 上啟動)中,即使只是輕微 輸入,OpenRouter 的 Activity 紀錄中同一分鐘內就記錄了多達 13 次 API 呼叫。其中 12 次是 發送給子模型(GLM 4.7 Flash)的小型呼叫,只有最後 1 次是主模型(GLM 5.2)的正式回應。 總成本約在 $0.0094 以內。

另一方面,也確認了透過 claude -p(非互動、print 模式)的單次執行,幾乎不會發生這種 增生現象。若想壓低成本,使用 -p 較為安全。若經常使用互動式工作階段,建議設定 ANTHROPIC_SMALL_FAST_MODEL 讓請求流向便宜的模型,同時透過 OpenRouter 的 Activity 儀表板監控用量。

疑難排解

  • ⚠ claude.ai connectors are disabled because ANTHROPIC_API_KEY or another auth source is set... 這個警告可以忽略(只是 claude.ai 的連接器功能被停用,API 呼叫本身仍會成功)。
  • ANTHROPIC_API_KEY 未設定而非設為空字串,驗證方式可能會變得曖昧而導致錯誤。 務必明確設定為 ""
  • 若想切換至其他模型,只需將 ANTHROPIC_MODEL 改為 OpenRouter 上的模型 ID (例如:anthropic/claude-opus-4-8openai/gpt-5 等)即可。
  • 工具搜尋最佳化(ENABLE_TOOL_SEARCH)在非 Anthropic 主機上預設為停用。 如有需要,請加入 ENABLE_TOOL_SEARCH=true

評論

載入中...

發表評論