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 Responses store, 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 base inferrs personalizzati

    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