Providers
Infère
inferrs peut servir des modèles locaux derrière une API /v1 compatible 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 de fournisseur OpenClaw intégré |
| Variable d’environnement d’authentification | Facultative. N’importe quelle valeur fonctionne si votre serveur inferrs n’a pas d’authentification |
| API | compatible OpenAI (openai-completions) |
| URL de base suggérée | http://127.0.0.1:8080/v1 (ou là où se trouve votre serveur inferrs) |
Premiers pas
Démarrer inferrs avec un modèle
inferrs serve google/gemma-4-E2B-it \ --host 127.0.0.1 \ --port 8080 \ --device metalVérifier que le serveur est accessible
curl http://127.0.0.1:8080/healthcurl http://127.0.0.1:8080/v1/modelsAjouter une entrée de fournisseur OpenClaw
Ajoutez une entrée de fournisseur explicite et pointez 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 inferrs local.
{ 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, }, }, ], }, }, },}Démarrage à la demande
Inferrs peut aussi être démarré par OpenClaw uniquement lorsqu’un modèle inferrs/... est
sélectionné. Ajoutez localService à la même entrée de fournisseur :
{ 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 doit être absolu. Utilisez which inferrs sur l’hôte Gateway et placez ce
chemin dans la configuration. Pour la référence complète des champs, consultez
Services de modèles locaux.
Configuration avancée
Pourquoi requiresStringContent est important
Certaines routes Chat Completions de inferrs acceptent uniquement 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.
Gemma et mise en garde sur le schéma d’outils
Certaines combinaisons actuelles inferrs + Gemma acceptent les petites requêtes directes
/v1/chat/completions, mais échouent toujours lors des tours complets du runtime 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 de prompt sur les backends locaux plus stricts.
Si de très petites requêtes directes fonctionnent toujours mais que les tours d’agent OpenClaw normaux continuent de
planter dans inferrs, le problème restant se situe généralement dans le comportement du modèle/serveur
en amont plutôt que dans la couche de transport d’OpenClaw.
Test de fumée 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." \ --jsonSi 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 OpenAI de type proxy, et non comme un
point de terminaison OpenAI natif.
- La mise en forme des requêtes propre aux points de terminaison OpenAI natifs 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/au port
attendus. 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 de Gemma ci-dessus.
inferrs plante toujours sur les tours d’agent plus volumineux
Si OpenClaw n’obtient plus d’erreurs de schéma mais que inferrs plante toujours sur des tours
d’agent plus volumineux, traitez cela comme une limitation en amont de inferrs ou du modèle. Réduisez
la pression de prompt ou passez à un autre backend local ou modèle.
Associés
Exécuter OpenClaw avec des serveurs de modèles locaux.
Démarrer des serveurs de modèles locaux à la demande pour les fournisseurs configurés.
Déboguer des backends locaux compatibles OpenAI qui réussissent les sondes mais échouent lors des exécutions d’agent.
Vue d’ensemble de tous les fournisseurs, références de modèles et comportement de basculement.