Providers

Wnioskuje

inferrs udostępnia lokalne modele za pośrednictwem interfejsu API /v1 zgodnego z OpenAI. OpenClaw komunikuje się z nim przez ogólny adapter openai-completions.

Właściwość Wartość
Identyfikator dostawcy inferrs (niestandardowy; konfiguracja w models.providers.inferrs)
Plugin brak — nie jest to dołączony Plugin dostawcy OpenClaw
Zmienna środowiskowa auth niewymagana; dowolna wartość zadziała, jeśli serwer inferrs nie wymaga uwierzytelniania
API zgodne z OpenAI (openai-completions)
Sugerowany bazowy adres URL http://127.0.0.1:8080/v1 (lub adres, pod którym nasłuchuje serwer inferrs)

Pierwsze kroki

  • Uruchom inferrs z modelem

    bash
    inferrs serve google/gemma-4-E2B-it \  --host 127.0.0.1 \  --port 8080 \  --device metal
  • Sprawdź, czy serwer jest osiągalny

    bash
    curl http://127.0.0.1:8080/healthcurl http://127.0.0.1:8080/v1/models
  • Dodaj wpis dostawcy OpenClaw

    Dodaj jawny wpis dostawcy i ustaw go jako źródło domyślnego modelu. Zobacz poniższy przykład konfiguracji.

  • Pełny przykład konfiguracji

    Gemma 4 na lokalnym serwerze inferrs:

    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,            },          },        ],      },    },  },}

    Uruchamianie na żądanie

    OpenClaw może samodzielnie uruchomić inferrs tylko po wybraniu modelu inferrs/.... Dodaj localService do tego samego wpisu dostawcy:

    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 musi być ścieżką bezwzględną. Uruchom which inferrs na hoście Gateway i użyj zwróconej ścieżki. Pełny opis pól: Usługi modeli lokalnych.

    Konfiguracja zaawansowana

    Dlaczego requiresStringContent ma znaczenie

    Niektóre trasy Chat Completions w inferrs akceptują w messages[].content wyłącznie ciągi znaków, a nie ustrukturyzowane tablice części treści.

    Zastrzeżenie dotyczące Gemma i schematu narzędzi

    Niektóre kombinacje inferrs i Gemma akceptują małe, bezpośrednie żądania /v1/chat/completions, ale nie obsługują pełnych tur środowiska wykonawczego agenta OpenClaw. Najpierw spróbuj wyłączyć powierzchnię schematu narzędzi:

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

    Zmniejsza to obciążenie promptu w bardziej restrykcyjnych lokalnych backendach. Jeśli niewielkie bezpośrednie żądania nadal działają, ale zwykłe tury agenta OpenClaw wciąż powodują awarię wewnątrz inferrs, potraktuj to jako ograniczenie modelu lub serwera nadrzędnego, a nie problem warstwy transportowej OpenClaw.

    Ręczny test podstawowy

    Po skonfigurowaniu przetestuj obie warstwy:

    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

    Jeśli pierwsze polecenie działa, a drugie kończy się niepowodzeniem, zobacz poniższą sekcję Rozwiązywanie problemów.

    Działanie w stylu serwera proxy

    Ponieważ inferrs używa ogólnego adaptera openai-completions (a nie openai-responses), formatowanie żądań przeznaczone wyłącznie dla natywnego OpenAI nigdy nie jest stosowane: nie są wysyłane service_tier, store z Responses, wskazówki dotyczące pamięci podręcznej promptów ani formatowanie ładunku zgodności rozumowania OpenAI.

    Rozwiązywanie problemów

    curl /v1/models kończy się niepowodzeniem

    inferrs nie działa, jest nieosiągalny albo nie jest powiązany ze skonfigurowanym hostem lub portem. Upewnij się, że serwer jest uruchomiony i nasłuchuje pod tym adresem.

    messages[].content wymaga ciągu znaków

    Ustaw compat.requiresStringContent: true we wpisie modelu (patrz wyżej).

    Bezpośrednie wywołania /v1/chat/completions działają, ale openclaw infer model run kończy się niepowodzeniem

    Ustaw compat.supportsTools: false, aby wyłączyć powierzchnię schematu narzędzi (zobacz powyższe zastrzeżenie dotyczące Gemma).

    inferrs nadal ulega awarii podczas większych tur agenta

    Jeśli błędy schematu zniknęły, ale inferrs nadal ulega awarii podczas większych tur agenta, potraktuj to jako ograniczenie nadrzędnego serwera inferrs lub modelu. Zmniejsz obciążenie promptu albo zmień backend lub model.

    Powiązane materiały

    Was this useful?
    On this page

    On this page