Skip to content

LLM Providers

源码版本v2026.7.20

Verantwortung

Übersetzt einen «Provider-Namen (nvidia, kimi, openai, openrouter …)» in «konkreten Hostnamen, Nachrichten-Vorverarbeitung, extra_body, Modellliste». Hermes abstrahiert Provider nicht über Vererbung, sondern über die ProviderProfile-Dataclass + einen Satz Hooks; das Profil wird als Plugin registriert – «deklarieren heißt anbinden». Unterstützt werden Nous Portal, OpenRouter, OpenAI und eigene Endpunkte.

Schlüsseldateien

Datenfluss

  1. init_agent:276 erhält den konfigurierten Provider-Namen.
  2. Aufruf von get_provider_profile:65 (löst beim ersten Mal Lazy-Discovery aus: Scan von plugins/model-providers/<name>/, Import und register_provider).
  3. Nach Erhalt des ProviderProfile:
  4. Die Hauptschleife ruft mit dem zusammengebauten Request die Provider-API auf (Wiederholungs-Teilschleife:1227).
  5. Der extra_body eines Custom-Providers wird in _merge_custom_provider_extra_body:257 gemergt.

Zusammenfassung

Leitgedanke der Provider-Abstraktion ist «Profil + Hooks» statt «Vererbung». Ein neuer Provider bedeutet nur ein Unterverzeichnis in plugins/model-providers/, in dem ein ProviderProfile deklariert und per register_provider angemeldet wird – ohne Änderung an base. Lazy-Discovery hält den Start schnell und lädt nach Bedarf.

Inoffizielle Community-Lernseite. Basiert auf dem MIT-lizenzierten NousResearch/hermes-agent-Quellcode.