Skip to content

LLM Providers

源码版本v2026.7.20

職責

把「provider 名(nvidia、kimi、openai、openrouter…)」翻譯成「具體的 hostname、訊息預處理、extra_body、模型列表」。Hermes 不用繼承體系做 provider 抽象,而是用 ProviderProfile 資料類別 + 一組鉤子,profile 作為外掛註冊,實作「宣告即接入」。支援 Nous Portal、OpenRouter、OpenAI 及自訂 endpoint。

關鍵檔案

資料流

  1. init_agent:276 拿到使用者設定的 provider 名。
  2. 呼叫 get_provider_profile:65(首次觸發懶發現:掃描 plugins/model-providers/<name>/,匯入並 register_provider)。
  3. 拿到 ProviderProfile 後:
  4. 主迴圈用組裝好的請求呼叫 provider API(重試子迴圈:1227)。
  5. 自訂 provider 的 extra_body 合併在 _merge_custom_provider_extra_body:257 完成。

小結

Provider 抽象的關鍵字是「profile + 鉤子」而非「繼承」。新增 provider 只需在 plugins/model-providers/ 建個子目錄、宣告一個 ProviderProfileregister_provider,不必改 base。懶發現保證啟動快、按需載入。

非官方社群學習站,內容以 MIT 授權的 NousResearch/hermes-agent 原始碼為依據。