На этой странице

На этой странице

Get started

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?