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
inferrs serve google/gemma-4-E2B-it \ --host 127.0.0.1 \ --port 8080 \ --device metalSprawdź, czy serwer jest osiągalny
curl http://127.0.0.1:8080/healthcurl http://127.0.0.1:8080/v1/modelsDodaj 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:
{ 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:
{ 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:
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:
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." \ --jsonJeś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
Uruchamianie OpenClaw z lokalnymi serwerami modeli.
Uruchamianie na żądanie lokalnych serwerów modeli dla skonfigurowanych dostawców.
Diagnozowanie lokalnych backendów zgodnych z OpenAI, które przechodzą testy kontrolne, ale nie obsługują uruchomień agenta.
Omówienie wszystkich dostawców, odwołań do modeli i działania przełączania awaryjnego.