---
read_when:
    - Vous voulez exécuter OpenClaw sur un serveur inferrs local
    - Vous servez Gemma ou un autre modèle via inferrs
    - Vous avez besoin des indicateurs de compatibilité exacts d’OpenClaw pour inferrs
summary: Exécuter OpenClaw via inferrs (serveur local compatible OpenAI)
title: Inferrs
x-i18n:
    generated_at: "2026-04-24T07:27:23Z"
    model: gpt-5.4
    provider: openai
    source_hash: 53547c48febe584cf818507b0bf879db0471c575fa8a3ebfec64c658a7090675
    source_path: providers/inferrs.md
    workflow: 15
---

[inferrs](https://github.com/ericcurtin/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`.

`inferrs` est actuellement mieux traité comme un backend OpenAI-compatible auto-hébergé personnalisé,
et non comme un plugin fournisseur OpenClaw dédié.

## Bien démarrer

<Steps>
  <Step title="Démarrer inferrs avec un modèle">
    ```bash
    inferrs serve google/gemma-4-E2B-it \
      --host 127.0.0.1 \
      --port 8080 \
      --device metal
    ```
  </Step>
  <Step title="Vérifier que le serveur est joignable">
    ```bash
    curl http://127.0.0.1:8080/health
    curl http://127.0.0.1:8080/v1/models
    ```
  </Step>
  <Step title="Ajouter une entrée de fournisseur OpenClaw">
    Ajoutez une entrée explicite de fournisseur et pointez votre modèle par défaut vers elle. Voir l’exemple de configuration complet ci-dessous.
  </Step>
</Steps>

## Exemple complet de configuration

Cet exemple utilise Gemma 4 sur un serveur local `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,
            },
          },
        ],
      },
    },
  },
}
```

## Configuration avancée

<AccordionGroup>
  <Accordion title="Pourquoi requiresStringContent est important">
    Certaines routes Chat Completions de `inferrs` n’acceptent que des
    `messages[].content` de type chaîne, et non des tableaux structurés de content-part.

    <Warning>
    Si les exécutions OpenClaw échouent avec une erreur du type :

    ```text
    messages[1].content: invalid type: sequence, expected a string
    ```

    définissez `compat.requiresStringContent: true` dans votre entrée de modèle.
    </Warning>

    ```json5
    compat: {
      requiresStringContent: true
    }
    ```

    OpenClaw aplatira les content parts purement textuels en chaînes simples avant d’envoyer
    la requête.

  </Accordion>

  <Accordion title="Limite Gemma et schéma d’outil">
    Certaines combinaisons actuelles `inferrs` + Gemma acceptent de petites requêtes directes
    `/v1/chat/completions` mais échouent encore sur des tours complets du runtime d’agent OpenClaw.

    Si cela arrive, essayez d’abord ceci :

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

    Cela désactive la surface de schéma d’outil d’OpenClaw pour le modèle et peut réduire la pression de prompt
    sur les backends locaux plus stricts.

    Si les petites requêtes directes fonctionnent toujours mais que les tours normaux d’agent OpenClaw continuent de
    planter dans `inferrs`, le problème restant provient généralement du comportement amont du modèle/serveur
    plutôt que de la couche de transport d’OpenClaw.

  </Accordion>

  <Accordion title="Test rapide manuel">
    Une fois configuré, testez les deux couches :

    ```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
    ```

    Si la première commande fonctionne mais pas la seconde, consultez la section dépannage ci-dessous.

  </Accordion>

  <Accordion title="Comportement de type proxy">
    `inferrs` est traité comme un backend `/v1` compatible OpenAI de type proxy, pas comme un
    endpoint OpenAI natif.

    - La mise en forme de requête réservée à OpenAI natif ne s’applique pas ici
    - Pas de `service_tier`, pas de `store` Responses, pas d’indices de prompt-cache, et pas de mise en forme de charge utile de compatibilité reasoning OpenAI
    - Les en-têtes d’attribution OpenClaw cachés (`originator`, `version`, `User-Agent`) ne sont pas injectés sur des `baseUrl` `inferrs` personnalisées

  </Accordion>
</AccordionGroup>

## Dépannage

<AccordionGroup>
  <Accordion title="curl /v1/models échoue">
    `inferrs` n’est pas en cours d’exécution, n’est pas joignable, ou n’est pas lié au
    bon hôte/port. Assurez-vous que le serveur est démarré et écoute sur l’adresse que vous
    avez configurée.
  </Accordion>

  <Accordion title="messages[].content expected a string">
    Définissez `compat.requiresStringContent: true` dans l’entrée de modèle. Voir la
    section `requiresStringContent` ci-dessus pour les détails.
  </Accordion>

  <Accordion title="Les appels directs /v1/chat/completions passent, mais openclaw infer model run échoue">
    Essayez de définir `compat.supportsTools: false` pour désactiver la surface de schéma d’outil.
    Voir la remarque ci-dessus sur la limite Gemma liée au schéma d’outil.
  </Accordion>

  <Accordion title="inferrs plante encore sur des tours d’agent plus gros">
    Si OpenClaw n’obtient plus d’erreurs de schéma mais que `inferrs` plante encore sur des tours
    d’agent plus gros, traitez cela comme une limitation amont de `inferrs` ou du modèle. Réduisez
    la pression de prompt ou passez à un autre backend ou modèle local.
  </Accordion>
</AccordionGroup>

<Tip>
Pour une aide générale, voir [Dépannage](/fr/help/troubleshooting) et [FAQ](/fr/help/faq).
</Tip>

## Associé

<CardGroup cols={2}>
  <Card title="Modèles locaux" href="/fr/gateway/local-models" icon="server">
    Exécuter OpenClaw sur des serveurs de modèles locaux.
  </Card>
  <Card title="Dépannage du Gateway" href="/fr/gateway/troubleshooting#local-openai-compatible-backend-passes-direct-probes-but-agent-runs-fail" icon="wrench">
    Déboguer les backends locaux compatibles OpenAI qui passent les sondes mais échouent lors des exécutions d’agent.
  </Card>
  <Card title="Sélection de modèle" href="/fr/concepts/model-providers" icon="layers">
    Vue d’ensemble de tous les fournisseurs, références de modèle et comportements de basculement.
  </Card>
</CardGroup>
