Providers

Leitet ab

inferrs stellt lokale Modelle über eine OpenAI-kompatible /v1-API bereit. OpenClaw kommuniziert damit über den generischen Adapter openai-completions.

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. Beachten Sie 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 demselben Provider-Eintrag localService 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. Die vollständige Feldreferenz finden Sie unter Lokale Modelldienste.

    Erweiterte Konfiguration

    Warum requiresStringContent wichtig ist

    Einige Chat-Completions-Routen von inferrs 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 Anfragen an /v1/chat/completions, 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 jedoch weiterhin innerhalb von inferrs 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":"What is 2 + 2?"}],"stream":false}'
    bash
    openclaw infer model run \  --model inferrs/google/gemma-4-E2B-it \  --prompt "What is 2 + 2? Reply with one short sentence." \  --json

    Wenn der erste Befehl funktioniert, der zweite jedoch fehlschlägt, lesen Sie den nachfolgenden Abschnitt zur Fehlerbehebung.

    Proxy-ähnliches Verhalten

    Da inferrs den generischen Adapter openai-completions verwendet und nicht openai-responses, wird keine ausschließlich für natives OpenAI vorgesehene Anfrageaufbereitung angewendet: Es werden weder service_tier noch store für Responses, Prompt-Cache-Hinweise oder OpenAI-Kompatibilitätsnutzdaten für Reasoning gesendet.

    Fehlerbehebung

    curl /v1/models schlägt fehl

    inferrs wird nicht ausgeführt, ist nicht erreichbar oder nicht an den von Ihnen 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 im Modelleintrag compat.requiresStringContent: true fest (siehe oben).

    Direkte Aufrufe von /v1/chat/completions funktionieren, aber openclaw infer model run schlägt fehl

    Legen Sie compat.supportsTools: false fest, um die Werkzeugschema-Oberfläche zu deaktivieren (siehe den obigen Hinweis zu Gemma).

    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 von inferrs oder des vorgelagerten Modells. Reduzieren Sie die Prompt-Belastung oder wechseln Sie das Backend beziehungsweise Modell.

    Verwandte Themen

    Was this useful?
    On this page

    On this page