Providers

Виводить висновок

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

Властивість Значення
Ідентифікатор провайдера inferrs (власний; налаштовується в models.providers.inferrs)
Plugin немає — це не вбудований Plugin провайдера 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":"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

    Якщо перша команда працює, а друга завершується помилкою, див. розділ «Усунення несправностей» нижче.

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

    Оскільки 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