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

    bash
    inferrs serve google/gemma-4-E2B-it \  --host 127.0.0.1 \  --port 8080 \  --device metal
  • Erreichbarkeit des Servers überprüfen

    bash
    curl http://127.0.0.1:8080/healthcurl http://127.0.0.1:8080/v1/models
  • Einen 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:

    json5
    {  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:

    json5
    {  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:

    json5
    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:

    bash
    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}'
    bash
    openclaw infer model run \  --model inferrs/google/gemma-4-E2B-it \  --prompt "Was ist 2 + 2? Antworten Sie mit einem kurzen Satz." \  --json

    Wenn 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

    Was this useful?
    On this page

    On this page