Providers

Leitet ab

inferrs kann lokale Modelle hinter einer OpenAI-kompatiblen /v1-API bereitstellen. OpenClaw funktioniert mit inferrs über den generischen openai-completions-Pfad.

Eigenschaft Wert
Provider-ID inferrs (benutzerdefiniert; unter models.providers.inferrs konfigurieren)
Plugin keines — inferrs ist kein gebündeltes OpenClaw-Provider-Plugin
Auth-Umgebungsvariable Optional. Jeder Wert funktioniert, wenn Ihr inferrs-Server keine Authentifizierung verwendet
API OpenAI-kompatibel (openai-completions)
Vorgeschlagene Basis-URL http://127.0.0.1:8080/v1 (oder dort, wo Ihr inferrs-Server läuft)

Erste Schritte

  • inferrs mit einem Modell starten

    inferrs serve google/gemma-4-E2B-it \
      --host 127.0.0.1 \
      --port 8080 \
      --device metal
    
  • Prüfen, ob der Server erreichbar ist

    curl http://127.0.0.1:8080/health
    curl 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 vollständige Konfigurationsbeispiel unten.

  • Vollständiges Konfigurationsbeispiel

    Dieses Beispiel verwendet 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,
                },
              },
            ],
          },
        },
      },
    }
    

    Erweiterte Konfiguration

    Warum requiresStringContent wichtig ist

    Einige inferrs-Chat-Completions-Routen akzeptieren nur string messages[].content, keine strukturierten Content-Part-Arrays.

    compat: {
      requiresStringContent: true
    }
    

    OpenClaw reduziert reine Text-Content-Parts auf einfache Strings, bevor die Anfrage gesendet wird.

    Hinweis zu Gemma und Tool-Schema

    Einige aktuelle Kombinationen aus inferrs und Gemma akzeptieren kleine direkte /v1/chat/completions-Anfragen, schlagen aber bei vollständigen OpenClaw-Agent-Runtime- Durchläufen weiterhin fehl.

    Wenn das passiert, versuchen Sie zuerst Folgendes:

    compat: {
      requiresStringContent: true,
      supportsTools: false
    }
    

    Dadurch wird die Tool-Schema-Oberfläche von OpenClaw für das Modell deaktiviert und kann den Prompt- Druck auf strengere lokale Backends verringern.

    Wenn sehr kleine direkte Anfragen weiterhin funktionieren, normale OpenClaw-Agent-Durchläufe aber weiterhin innerhalb von inferrs abstürzen, liegt das verbleibende Problem meist am Verhalten des Upstream-Modells oder -Servers und nicht an der Transportschicht von OpenClaw.

    Manueller Smoke-Test

    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":"What is 2 + 2?"}],"stream":false}'
    
    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 aber fehlschlägt, prüfen Sie den Abschnitt zur Fehlerbehebung unten.

    Proxy-ähnliches Verhalten

    inferrs wird als Proxy-ähnliches OpenAI-kompatibles /v1-Backend behandelt, nicht als nativer OpenAI-Endpunkt.

    • Nur für natives OpenAI geltende Anfrageformung gilt hier nicht
    • Kein service_tier, kein Responses-store, keine Prompt-Cache-Hinweise und keine OpenAI-Reasoning-Kompatibilitäts-Payload-Formung
    • Versteckte OpenClaw-Attributions-Header (originator, version, User-Agent) werden bei benutzerdefinierten inferrs-Basis-URLs nicht injiziert

    Fehlerbehebung

    curl /v1/models schlägt fehl

    inferrs läuft nicht, ist nicht erreichbar oder ist nicht an den erwarteten Host/Port gebunden. Stellen Sie sicher, dass der Server gestartet ist und auf der von Ihnen konfigurierten Adresse lauscht.

    messages[].content erwartet einen string

    Setzen Sie compat.requiresStringContent: true im Modelleintrag. Weitere Details finden Sie oben im Abschnitt requiresStringContent.

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

    Versuchen Sie, compat.supportsTools: false zu setzen, um die Tool-Schema-Oberfläche zu deaktivieren. Siehe den Hinweis zum Gemma-Tool-Schema oben.

    inferrs stürzt bei größeren Agent-Durchläufen weiterhin ab

    Wenn OpenClaw keine Schemafehler mehr erhält, inferrs aber bei größeren Agent-Durchläufen weiterhin abstürzt, behandeln Sie dies als Upstream-inferrs- oder Modellbeschränkung. Verringern Sie den Prompt-Druck oder wechseln Sie zu einem anderen lokalen Backend oder Modell.

    Verwandte Themen