Providers
Inferrs
inferrs stellt lokale Modelle hinter einer OpenAI-kompatiblen /v1-API bereit. OpenClaw kommuniziert damit über den generischen openai-completions-Adapter.
| Eigenschaft | Wert |
|---|---|
| Provider-ID | inferrs (benutzerdefiniert; unter models.providers.inferrs konfigurieren) |
| Plugin | keines — kein mitgeliefertes OpenClaw-Provider-Plugin |
| Authentifizierungs-Umgebungsvariable | nicht erforderlich; jeder Wert funktioniert, wenn Ihr inferrs-Server keine Authentifizierung verwendet |
| API | OpenAI-kompatibel (openai-completions) |
| Empfohlene Basis-URL | http://127.0.0.1:8080/v1 (oder die Adresse, unter der Ihr inferrs-Server lauscht) |
Erste Schritte
inferrs mit einem Modell starten
inferrs serve google/gemma-4-E2B-it \ --host 127.0.0.1 \ --port 8080 \ --device metalErreichbarkeit des Servers überprüfen
curl http://127.0.0.1:8080/healthcurl http://127.0.0.1:8080/v1/modelsEinen OpenClaw-Provider-Eintrag hinzufügen
Fügen Sie einen expliziten Provider-Eintrag hinzu und verweisen Sie mit Ihrem Standardmodell darauf. Siehe das nachfolgende Konfigurationsbeispiel.
Vollständiges Konfigurationsbeispiel
Gemma 4 auf einem lokalen inferrs-Server:
{ agents: { defaults: { model: { primary: "inferrs/google/gemma-4-E2B-it" }, models: { "inferrs/google/gemma-4-E2B-it": { alias: "Gemma 4 (inferrs)", }, }, }, }, models: { mode: "merge", providers: { inferrs: { baseUrl: "http://127.0.0.1:8080/v1", apiKey: "inferrs-local", api: "openai-completions", models: [ { id: "google/gemma-4-E2B-it", name: "Gemma 4 E2B (inferrs)", reasoning: false, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 131072, maxTokens: 4096, compat: { requiresStringContent: true, }, }, ], }, }, },}Bedarfsgesteuerter Start
OpenClaw kann inferrs selbst starten, jedoch nur, wenn ein inferrs/...-Modell ausgewählt ist. Fügen Sie localService demselben Provider-Eintrag hinzu:
{ models: { providers: { inferrs: { baseUrl: "http://127.0.0.1:8080/v1", apiKey: "inferrs-local", api: "openai-completions", timeoutSeconds: 300, localService: { command: "/opt/homebrew/bin/inferrs", args: [ "serve", "google/gemma-4-E2B-it", "--host", "127.0.0.1", "--port", "8080", "--device", "metal", ], healthUrl: "http://127.0.0.1:8080/v1/models", readyTimeoutMs: 180000, idleStopMs: 0, }, models: [ { id: "google/gemma-4-E2B-it", name: "Gemma 4 E2B (inferrs)", reasoning: false, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 131072, maxTokens: 4096, compat: { requiresStringContent: true, }, }, ], }, }, },}command muss ein absoluter Pfad sein. Führen Sie which inferrs auf dem Gateway-Host aus und verwenden Sie diesen Pfad. Vollständige Feldreferenz: Lokale Modelldienste.
Erweiterte Konfiguration
Warum requiresStringContent wichtig ist
Einige inferrs-Chat-Completions-Routen akzeptieren für messages[].content nur Zeichenfolgen und keine strukturierten Arrays aus Inhaltsteilen.
Hinweis zu Gemma und Werkzeugschemas
Einige Kombinationen aus inferrs und Gemma akzeptieren kleine direkte /v1/chat/completions-Anfragen, schlagen jedoch bei vollständigen Ausführungen der OpenClaw-Agentenlaufzeit fehl. Versuchen Sie zunächst, die Werkzeugschema-Oberfläche zu deaktivieren:
compat: { requiresStringContent: true, supportsTools: false}Dadurch wird die Prompt-Belastung für strengere lokale Backends reduziert. Wenn kleine direkte Anfragen weiterhin funktionieren, normale OpenClaw-Agentenausführungen innerhalb von inferrs jedoch weiterhin abstürzen, behandeln Sie dies als Einschränkung des vorgelagerten Modells oder Servers und nicht als OpenClaw-Transportproblem.
Manueller Funktionstest
Testen Sie nach der Konfiguration beide Ebenen:
curl http://127.0.0.1:8080/v1/chat/completions \ -H 'content-type: application/json' \ -d '{"model":"google/gemma-4-E2B-it","messages":[{"role":"user","content":"Was ist 2 + 2?"}],"stream":false}'openclaw infer model run \ --model inferrs/google/gemma-4-E2B-it \ --prompt "Was ist 2 + 2? Antworten Sie mit einem kurzen Satz." \ --jsonWenn der erste Befehl funktioniert, der zweite jedoch fehlschlägt, lesen Sie den Abschnitt zur Fehlerbehebung weiter unten.
Proxy-ähnliches Verhalten
Da inferrs den generischen openai-completions-Adapter verwendet (nicht openai-responses), wird die ausschließlich für natives OpenAI vorgesehene Anfrageformatierung nie angewendet: Es werden weder service_tier, Responses-store oder Prompt-Cache-Hinweise noch OpenAI-Payload-Formatierungen zur Reasoning-Kompatibilität gesendet.
Fehlerbehebung
curl /v1/models schlägt fehl
inferrs wird nicht ausgeführt, ist nicht erreichbar oder nicht an den konfigurierten Host beziehungsweise Port gebunden. Vergewissern Sie sich, dass der Server gestartet wurde und unter dieser Adresse lauscht.
messages[].content erwartet eine Zeichenfolge
Legen Sie compat.requiresStringContent: true im Modelleintrag fest (siehe oben).
Direkte /v1/chat/completions-Aufrufe funktionieren, aber openclaw infer model run schlägt fehl
Legen Sie compat.supportsTools: false fest, um die Werkzeugschema-Oberfläche zu deaktivieren (siehe den Hinweis zu Gemma oben).
inferrs stürzt bei größeren Agentenausführungen weiterhin ab
Wenn die Schemafehler behoben sind, inferrs bei größeren Agentenausführungen jedoch weiterhin abstürzt, behandeln Sie dies als Einschränkung des vorgelagerten inferrs oder des Modells. Reduzieren Sie die Prompt-Belastung oder wechseln Sie das Backend beziehungsweise Modell.
Verwandte Themen
OpenClaw mit lokalen Modellservern ausführen.
Lokale Modellserver für konfigurierte Provider bei Bedarf starten.
Fehler in lokalen OpenAI-kompatiblen Backends beheben, die Prüfaufrufe bestehen, bei Agentenausführungen jedoch fehlschlagen.
Überblick über alle Provider, Modellreferenzen und das Failover-Verhalten.