2026年7月11日 星期六

利用LiteLLM Proxy,讓Claude Code調用第三方AI模型

20260710-巴威颱風假

Claude Code原生僅支援Anthropic官方模型,若要調用第三方AI模型(本例為Gemini API),可利用「路由代理工具」,目前主流的開源專案有LiteLLMclaude-code-proxy 專案,這類路由工具會在本機啟動路由伺服器,將Claude Code發出的Anthropic式請求,翻譯成第三方模型的請求格式。本篇將採用LiteLLM執行路由代理。

Windows 安裝命令
d:\                                    安裝於D: 槽
mkdir LiteLLM_proxy                    建立安裝目錄
cd LiteLLM_proxy                       切換到安裝目錄
python -m venv myenv                   建立虛擬環境
myenv\Scripts\activate.bat             啟動虛擬環境(Linux用 source myenv/bin/activate
python -m pip install --upgrade pip    更新 pip
pip install "litellm[proxy]"           安裝 litellm_proxy
litellm --version                      檢查版本,並確認litellm可正常執行
建立CONFIG.yaml(路由設定檔)

建立CONFIG.yaml檔案(檔名可自定),定義如何將Claude模型名稱對應到Google Gemini:

model_list:
  # 當 Claude Code 呼叫 claude-3-5-sonnet 時,實際走 gemini-2.5-pro
  - model_name: claude-sonnet-5
  # 到https://platform.claude.com/docs/en/about-claude/models/overview
  # 查詢精確模型名稱
    litellm_params:
      model: gemini/gemini-3.1-flash-lite
      # 有關gemini api key能用的模型之真正名稱,請到
      # https://aistudio.google.com/app/rate-limit 的Tools區段
      # 尋找RPD欄位不是 0/0 的模型,如果模型名稱右邊有(i)符號者,
      # 請點此符號查看個別模型的名稱。調用模式時需用:[模型主名]-[板本]-[類型]型式,
      # 例如:Gemini 3.1 Flash Lite的調用名稱為 gemini-3.1-flash-lite。
      api_key: "os.environ/GEMINI_API_KEY
      # 可以使用 "os.environ/GEMINI_API_KEY" 由作業系統的環境變數提供>KEY,
      # 亦可直接填入 API KEY,為不同模型指定不同 API KEY
  # 定義呼叫Claude Code的 AI(例如>claude-3-5-haiku)時,   # 要轉發的對象(例如 gemini-2.5-pro)   
- model_name: claude-opus-4-8     litellm_params:       model: gemini/gemini-2.5-pro       api_key: "os.environ/GEMINI_API_KEY"     - model_name: claude-haiku-4-5     litellm_params:       max_tokens: 1500       model: gemini/gemma-4-31b-it       api_key: "os.environ/GEMINI_API_KEY"   general_settings:   user_auth_key_required: false   allow_requests_on_db_unavailale: true  # 即使 db 無法連線,亦傳送請求   litellm_settings:   drop_params: true     # 自動過濾掉 Gemini 不支援的 Anthropic 特有參數   model_alias_map:       # 可讓多個claude-模式對應到同一個gemini模式,以解決相同性問題     claude-haiku-4-5-20251001: gemini/gemini-3.1-flash-lite
router_settings:   fallbacks:             # 設定降級機制     - claude-opus-4-8: [claude-sonnet-5]   # Opus 失敗就降級到 Sonnet   allowed_fails: 3       # 允許模型連續失敗幾次後,將它暫時踢出可用清單   cooldown_time: 30      # 失敗的模型要被暫停多久(見上項)   enable_pre_call_checks: true
#
environment_variables:   # 亦可將環境變數設在此處   # OPENAI_API_KEY: "sk-proj-kq OpenAI API金鑰"   # ANTHROPIC_API_KEY: "sk-ant-ap Claude AI API金鑰"   # GEMINI_API_KEY: "AQ.Ab8 Gemini AI API金鑰" 
為AI模型提供API Key
要調用gemini模型,需要API KEY,有三種途徑可設定:
1. 直接在CONFIG.yaml的個別模型上設定(見上面CONFIG.yaml的註解)
2. 在 CONFIG.yaml的「environment_variables」區段統一設定(見上面CONIG.yaml的「environment_variables」區段,已先註解掉)
3. 使用作業系統的環境變數,上面CONFIG.yaml就是透過作業系統的環境變數提供。
 
Gemini的環境變數是GEMINI_API_KEY,至於設定方式,請依不同作業系統而設定之。
 
設定Claude Code的Base-URL
Claude Code預設連接Anthropic的模式,為了讓Claude Code透過LiteLLM Proxy調用第三方模型,需在作業系統設定下列二個環境變數:
ANTHROPIC_BASE_URL=http://localhost:4000/
CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1
啟動LiteLLM Proxy
在Windows的命令提示字元或Powershell終端機執行下列指令:
d:\                                因安裝在 D: 槽,所換到 D:
cd LiteLLM_proxy                  >切換到安裝目錄
myenv\Scripts\activate.bat          啟動虛擬環境(Linux用 source myenv/bin/activate
litellm --config config.yaml

※   可以建立不同的CONFIG.yaml,依不同情境,在執行litellm指定不同CONFIG.yaml

LiteLLM啟動後畫面如下:
 
  • 工具調用(Tool Use / Function Calling)限制:Claude Code 極度依賴模型執行終端指令(如編譯、讀檔、寫檔)的能力。Gemini 雖然支援 Function Calling,但轉發過程中如果遇到複雜的架構,偶爾可能發生解析錯誤。建議優先使用 Gemini 2.5 Pro 或更高等級的模型來確保 Agent 運作順暢。
  • 無感切換:進入 Claude Code 介面後直接輸入 /model,便可看到轉發而來的 Gemini 模型選項,並自由切換。
啟動claude

完成各環境變數設定,且順利啟動litellm後,litellm會在 http://0.0.0.0:4000/ 接聽請求,接著啟動claude,下圖是claude透過litellm proxy調用gemini的情形。

由litellm的日誌訊息可發現,claude收到的回應來源是claude-sonnet-5,但真正回應此訊息的源頭是gemini-3.1-flash-lite。

沒有留言:

張貼留言