Providers

Inferrs

inferrs biedt lokale modellen aan via een OpenAI-compatibele /v1 API. OpenClaw communiceert ermee via de generieke openai-completions-adapter.

Eigenschap Waarde
Provider-id inferrs (aangepast; configureer onder models.providers.inferrs)
Plugin geen — geen gebundelde OpenClaw-providerplugin
Omgevingsvariabele voor authenticatie niet vereist; elke waarde werkt als je inferrs-server geen authenticatie gebruikt
API OpenAI-compatibel (openai-completions)
Voorgestelde basis-URL http://127.0.0.1:8080/v1 (of waar je inferrs-server ook luistert)

Aan de slag

  • Start inferrs met een model

    bash
    inferrs serve google/gemma-4-E2B-it \  --host 127.0.0.1 \  --port 8080 \  --device metal
  • Controleer of de server bereikbaar is

    bash
    curl http://127.0.0.1:8080/healthcurl http://127.0.0.1:8080/v1/models
  • Voeg een OpenClaw-providervermelding toe

    Voeg een expliciete providervermelding toe en laat je standaardmodel daarnaar verwijzen. Zie het onderstaande configuratievoorbeeld.

  • Volledig configuratievoorbeeld

    Gemma 4 op een lokale 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,            },          },        ],      },    },  },}

    Starten op aanvraag

    OpenClaw kan inferrs alleen zelf starten wanneer een inferrs/...-model is geselecteerd. Voeg localService toe aan dezelfde providervermelding:

    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 moet een absoluut pad zijn. Voer which inferrs uit op de Gateway-host en gebruik dat pad. Volledig veldenoverzicht: Lokale modelservices.

    Geavanceerde configuratie

    Waarom requiresStringContent belangrijk is

    Sommige inferrs Chat Completions-routes accepteren voor messages[].content alleen tekenreeksen en geen gestructureerde arrays met inhoudsonderdelen.

    Kanttekening bij Gemma en toolschema's

    Sommige combinaties van inferrs en Gemma accepteren kleine rechtstreekse /v1/chat/completions-verzoeken, maar mislukken bij volledige beurten van de OpenClaw-agentruntime. Probeer eerst het toolschema-oppervlak uit te schakelen:

    json5
    compat: {  requiresStringContent: true,  supportsTools: false}

    Dat verlaagt de promptbelasting voor strengere lokale backends. Als kleine rechtstreekse verzoeken nog steeds werken, maar normale OpenClaw-agentbeurten blijven vastlopen in inferrs, beschouw dit dan als een beperking van het upstreammodel of de upstreamserver en niet als een transportprobleem van OpenClaw.

    Handmatige rooktest

    Test beide lagen nadat ze zijn geconfigureerd:

    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":"Wat is 2 + 2?"}],"stream":false}'
    bash
    openclaw infer model run \  --model inferrs/google/gemma-4-E2B-it \  --prompt "Wat is 2 + 2? Antwoord met één korte zin." \  --json

    Als de eerste opdracht werkt maar de tweede mislukt, raadpleeg dan Probleemoplossing hieronder.

    Proxyachtig gedrag

    Omdat inferrs de generieke openai-completions-adapter gebruikt (en niet openai-responses), wordt uitsluitend voor native OpenAI bedoelde verzoeksvormgeving nooit toegepast: er worden geen service_tier, geen Responses-store, geen hints voor promptcaching en geen OpenAI-payloadvormgeving voor redeneercompatibiliteit verzonden.

    Probleemoplossing

    curl /v1/models mislukt

    inferrs wordt niet uitgevoerd, is niet bereikbaar of is niet gekoppeld aan de host/poort die je hebt geconfigureerd. Controleer of de server is gestart en op dat adres luistert.

    messages[].content verwachtte een tekenreeks

    Stel compat.requiresStringContent: true in bij de modelvermelding (zie hierboven).

    Rechtstreekse /v1/chat/completions-aanroepen slagen, maar openclaw infer model run mislukt

    Stel compat.supportsTools: false in om het toolschema-oppervlak uit te schakelen (zie de kanttekening bij Gemma hierboven).

    inferrs blijft vastlopen bij grotere agentbeurten

    Als de schemafouten zijn verdwenen, maar inferrs nog steeds vastloopt bij grotere agentbeurten, beschouw dit dan als een beperking van upstream-inferrs of van het model. Verlaag de promptbelasting of schakel over naar een andere backend of een ander model.

    Gerelateerd

    Was this useful?
    On this page

    On this page