Providers
Inferisce
inferrs può servire modelli locali dietro un'API /v1 compatibile con OpenAI. OpenClaw funziona con inferrs tramite il percorso generico openai-completions.
| Proprietà | Valore |
|---|---|
| ID provider | inferrs (personalizzato; configura in models.providers.inferrs) |
| Plugin | nessuno — inferrs non è un plugin provider OpenClaw incluso |
| Variabile env auth | Facoltativa. Qualsiasi valore funziona se il tuo server inferrs non ha auth |
| API | Compatibile con OpenAI (openai-completions) |
| URL base suggerito | http://127.0.0.1:8080/v1 (o ovunque si trovi il tuo server inferrs) |
Per iniziare
Avvia inferrs con un modello
inferrs serve google/gemma-4-E2B-it \
--host 127.0.0.1 \
--port 8080 \
--device metal
Verifica che il server sia raggiungibile
curl http://127.0.0.1:8080/health
curl http://127.0.0.1:8080/v1/models
Aggiungi una voce provider OpenClaw
Aggiungi una voce provider esplicita e punta il tuo modello predefinito a essa. Consulta l'esempio completo di configurazione qui sotto.
Esempio completo di configurazione
Questo esempio usa Gemma 4 su un server inferrs locale.
{
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,
},
},
],
},
},
},
}
Configurazione avanzata
Perché requiresStringContent è importante
Alcune route Chat Completions di inferrs accettano solo
messages[].content come stringa, non array strutturati di parti di contenuto.
compat: {
requiresStringContent: true
}
OpenClaw appiattirà le parti di contenuto di solo testo in stringhe semplici prima di inviare la richiesta.
Avvertenza su Gemma e schema degli strumenti
Alcune combinazioni attuali di inferrs + Gemma accettano piccole richieste dirette
/v1/chat/completions ma falliscono comunque sui turni completi del runtime agente OpenClaw.
Se succede, prova prima questo:
compat: {
requiresStringContent: true,
supportsTools: false
}
Questo disabilita la superficie dello schema degli strumenti di OpenClaw per il modello e può ridurre la pressione del prompt su backend locali più rigidi.
Se le richieste dirette minime continuano a funzionare ma i normali turni agente OpenClaw continuano a
bloccarsi dentro inferrs, il problema rimanente di solito riguarda il comportamento
upstream del modello/server, non il livello di trasporto di OpenClaw.
Smoke test manuale
Una volta configurato, testa entrambi i livelli:
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
Se il primo comando funziona ma il secondo fallisce, controlla la sezione di risoluzione dei problemi qui sotto.
Comportamento in stile proxy
inferrs viene trattato come un backend /v1 compatibile con OpenAI in stile proxy, non come un
endpoint OpenAI nativo.
- Qui non si applica la modellazione delle richieste specifica solo per OpenAI nativo
- Nessun
service_tier, nessun Responsesstore, nessun suggerimento di prompt-cache e nessuna modellazione del payload di compatibilità per il reasoning OpenAI - Gli header di attribuzione OpenClaw nascosti (
originator,version,User-Agent) non vengono iniettati negli URL baseinferrspersonalizzati
Risoluzione dei problemi
curl /v1/models fallisce
inferrs non è in esecuzione, non è raggiungibile o non è associato all'host/porta
previsti. Assicurati che il server sia avviato e in ascolto sull'indirizzo che hai
configurato.
messages[].content richiede una stringa
Imposta compat.requiresStringContent: true nella voce del modello. Consulta la
sezione requiresStringContent sopra per i dettagli.
Le chiamate dirette a /v1/chat/completions riescono ma openclaw infer model run fallisce
Prova a impostare compat.supportsTools: false per disabilitare la superficie dello schema degli strumenti.
Consulta l'avvertenza sullo schema degli strumenti di Gemma sopra.
inferrs continua a bloccarsi sui turni agente più grandi
Se OpenClaw non riceve più errori di schema ma inferrs continua a bloccarsi sui turni
agente più grandi, consideralo una limitazione upstream di inferrs o del modello. Riduci
la pressione del prompt o passa a un backend locale o modello diverso.
Correlati
Esecuzione di OpenClaw con server di modelli locali.
Debug di backend locali compatibili con OpenAI che superano le sonde ma falliscono nelle esecuzioni agente.
Panoramica di tutti i provider, riferimenti dei modelli e comportamento di failover.