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/ にサブディレクトリを作り、ProviderProfile を宣言して register_provider するだけでよく、base を修正する必要はない。遅延発見が起動を速く保ち、必要に応じてロードする。

非公式コミュニティ学習サイト。MIT ライセンスの NousResearch/hermes-agent ソースに基づく。