Providers
Déduit
inferrs peut servir des modèles locaux derrière une API /v1 compatible avec OpenAI. OpenClaw fonctionne avec inferrs via le chemin générique openai-completions.
| Propriété | Valeur |
|---|---|
| ID du fournisseur | inferrs (personnalisé ; configurer sous models.providers.inferrs) |
| Plugin | aucun — inferrs n’est pas un plugin fournisseur OpenClaw groupé |
| Variable d’env d’auth | Facultatif. N’importe quelle valeur fonctionne si votre serveur inferrs n’a pas d’auth |
| API | Compatible avec OpenAI (openai-completions) |
| URL de base suggérée | http://127.0.0.1:8080/v1 (ou là où se trouve votre serveur inferrs) |
Bien démarrer
Démarrer inferrs avec un modèle
inferrs serve google/gemma-4-E2B-it \
--host 127.0.0.1 \
--port 8080 \
--device metal
Vérifier que le serveur est accessible
curl http://127.0.0.1:8080/health
curl http://127.0.0.1:8080/v1/models
Ajouter une entrée de fournisseur OpenClaw
Ajoutez une entrée de fournisseur explicite et faites pointer votre modèle par défaut vers celle-ci. Consultez l’exemple de configuration complet ci-dessous.
Exemple de configuration complet
Cet exemple utilise Gemma 4 sur un serveur local 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,
},
},
],
},
},
},
}
Configuration avancée
Pourquoi requiresStringContent est important
Certaines routes Chat Completions de inferrs n’acceptent que des chaînes
messages[].content, et non des tableaux structurés de parties de contenu.
compat: {
requiresStringContent: true
}
OpenClaw aplatira les parties de contenu en texte pur en chaînes simples avant d’envoyer la requête.
Mise en garde sur Gemma et le schéma d’outils
Certaines combinaisons actuelles inferrs + Gemma acceptent de petites requêtes directes
/v1/chat/completions, mais échouent encore sur des tours complets de l’environnement d’exécution d’agent OpenClaw.
Si cela se produit, essayez d’abord ceci :
compat: {
requiresStringContent: true,
supportsTools: false
}
Cela désactive la surface de schéma d’outils d’OpenClaw pour le modèle et peut réduire la pression du prompt sur les backends locaux plus stricts.
Si les très petites requêtes directes fonctionnent encore, mais que les tours d’agent OpenClaw normaux continuent de
planter dans inferrs, le problème restant relève généralement du comportement du modèle/serveur
en amont plutôt que de la couche de transport d’OpenClaw.
Test smoke manuel
Une fois configuré, testez les deux couches :
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
Si la première commande fonctionne mais que la seconde échoue, consultez la section de dépannage ci-dessous.
Comportement de type proxy
inferrs est traité comme un backend /v1 compatible avec OpenAI de type proxy, et non comme un
endpoint OpenAI natif.
- La mise en forme des requêtes propre à OpenAI natif ne s’applique pas ici
- Pas de
service_tier, pas de Responsesstore, pas d’indications de cache de prompt, et pas de mise en forme de payload de compatibilité de raisonnement OpenAI - Les en-têtes d’attribution OpenClaw masqués (
originator,version,User-Agent) ne sont pas injectés sur les URL de baseinferrspersonnalisées
Dépannage
curl /v1/models échoue
inferrs n’est pas en cours d’exécution, n’est pas accessible ou n’est pas lié à l’hôte/port
attendu. Assurez-vous que le serveur est démarré et écoute à l’adresse que vous
avez configurée.
messages[].content attendait une chaîne
Définissez compat.requiresStringContent: true dans l’entrée de modèle. Consultez la section
requiresStringContent ci-dessus pour plus de détails.
Les appels directs /v1/chat/completions réussissent mais openclaw infer model run échoue
Essayez de définir compat.supportsTools: false pour désactiver la surface de schéma d’outils.
Consultez la mise en garde sur le schéma d’outils Gemma ci-dessus.
inferrs plante encore sur les grands tours d’agent
Si OpenClaw ne reçoit plus d’erreurs de schéma mais que inferrs plante encore sur des tours
d’agent plus grands, considérez cela comme une limitation en amont de inferrs ou du modèle. Réduisez
la pression du prompt ou passez à un autre backend ou modèle local.
Connexe
Exécuter OpenClaw avec des serveurs de modèles locaux.
Déboguer les backends locaux compatibles avec OpenAI qui réussissent les sondes mais échouent lors des exécutions d’agent.
Vue d’ensemble de tous les fournisseurs, des références de modèles et du comportement de basculement.