Providers

Inferrs

inferrs предоставляет локальные модели через совместимый с OpenAI API /v1. OpenClaw взаимодействует с ним через универсальный адаптер openai-completions.

Свойство Значение
Идентификатор провайдера inferrs (пользовательский; настраивается в models.providers.inferrs)
Плагин отсутствует — это не встроенный плагин провайдера OpenClaw
Переменная среды аутентификации не требуется; если сервер inferrs не использует аутентификацию, подойдет любое значение
API совместимый с OpenAI (openai-completions)
Рекомендуемый базовый URL http://127.0.0.1:8080/v1 (или адрес, на котором принимает подключения сервер inferrs)

Начало работы

  • Запустите inferrs с моделью

    bash
    inferrs serve google/gemma-4-E2B-it \  --host 127.0.0.1 \  --port 8080 \  --device metal
  • Убедитесь, что сервер доступен

    bash
    curl http://127.0.0.1:8080/healthcurl http://127.0.0.1:8080/v1/models
  • Добавьте запись провайдера OpenClaw

    Добавьте явную запись провайдера и укажите ее для модели по умолчанию. См. пример конфигурации ниже.

  • Полный пример конфигурации

    Gemma 4 на локальном сервере 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,            },          },        ],      },    },  },}

    Запуск по требованию

    OpenClaw может самостоятельно запускать inferrs только при выборе модели inferrs/.... Добавьте localService в ту же запись провайдера:

    json5
    {  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 должен быть абсолютным путем. Выполните which inferrs на хосте Gateway и используйте полученный путь. Полное описание полей: Сервисы локальных моделей.

    Расширенная конфигурация

    Почему requiresStringContent имеет значение

    Некоторые маршруты Chat Completions inferrs принимают в messages[].content только строки, а не структурированные массивы частей содержимого.

    Ограничение Gemma и схемы инструментов

    Некоторые сочетания inferrs и Gemma принимают небольшие прямые запросы /v1/chat/completions, но завершаются сбоем при полных циклах среды выполнения агента OpenClaw. Сначала попробуйте отключить поверхность схемы инструментов:

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

    Это снижает нагрузку промпта на более строгие локальные бэкенды. Если небольшие прямые запросы по-прежнему работают, но обычные циклы агента OpenClaw продолжают завершаться сбоем внутри inferrs, считайте это ограничением вышестоящей модели или сервера, а не проблемой транспорта OpenClaw.

    Ручная быстрая проверка

    После настройки проверьте оба уровня:

    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":"Сколько будет 2 + 2?"}],"stream":false}'
    bash
    openclaw infer model run \  --model inferrs/google/gemma-4-E2B-it \  --prompt "Сколько будет 2 + 2? Ответьте одним коротким предложением." \  --json

    Если первая команда работает, а вторая завершается сбоем, см. раздел «Устранение неполадок» ниже.

    Поведение в режиме прокси

    Поскольку inferrs использует универсальный адаптер openai-completions (а не openai-responses), формирование запросов, предназначенное только для нативного OpenAI, никогда не применяется: не отправляются ни service_tier, ни store Responses, ни подсказки для кэша промптов, ни совместимая с рассуждениями OpenAI структура полезной нагрузки.

    Устранение неполадок

    Сбой curl /v1/models

    inferrs не запущен, недоступен или не привязан к настроенным хосту и порту. Убедитесь, что сервер запущен и прослушивает этот адрес.

    messages[].content должна быть строкой

    Задайте compat.requiresStringContent: true в записи модели (см. выше).

    Прямые вызовы /v1/chat/completions выполняются успешно, но openclaw infer model run завершается сбоем

    Задайте compat.supportsTools: false, чтобы отключить поверхность схемы инструментов (см. ограничение Gemma выше).

    inferrs по-прежнему аварийно завершается при более крупных циклах агента

    Если ошибки схемы устранены, но inferrs по-прежнему аварийно завершается при более крупных циклах агента, считайте это ограничением вышестоящего inferrs или модели. Снизьте нагрузку промпта либо смените бэкенд или модель.

    Связанные разделы

    Was this useful?
    On this page

    On this page