Providers

Робить висновки

inferrs може обслуговувати локальні моделі за OpenAI-сумісним API /v1. OpenClaw працює з inferrs через загальний шлях openai-completions.

Властивість Значення
Ідентифікатор провайдера inferrs (власний; налаштовується в models.providers.inferrs)
Plugin немає — inferrs не є вбудованим Plugin провайдера OpenClaw
Змінна середовища автентифікації Необов’язково. Підійде будь-яке значення, якщо ваш сервер inferrs не має автентифікації
API OpenAI-сумісний (openai-completions)
Пропонований базовий URL http://127.0.0.1:8080/v1 (або там, де працює ваш сервер inferrs)

Початок роботи

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

    inferrs serve google/gemma-4-E2B-it \
      --host 127.0.0.1 \
      --port 8080 \
      --device metal
    
  • Перевірте, що сервер доступний

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

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

  • Повний приклад конфігурації

    У цьому прикладі використовується Gemma 4 на локальному сервері inferrs.

    {
      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,
                },
              },
            ],
          },
        },
      },
    }
    

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

    Чому requiresStringContent має значення

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

    compat: {
      requiresStringContent: true
    }
    

    OpenClaw перетворить частини з чистим текстовим вмістом на звичайні рядки перед надсиланням запиту.

    Застереження щодо Gemma та схеми інструментів

    Деякі поточні комбінації inferrs + Gemma приймають невеликі прямі запити /v1/chat/completions, але все одно дають збій на повних ходах середовища виконання агента OpenClaw.

    Якщо це трапляється, спершу спробуйте таке:

    compat: {
      requiresStringContent: true,
      supportsTools: false
    }
    

    Це вимикає поверхню схеми інструментів OpenClaw для моделі й може зменшити навантаження промпта на суворіші локальні бекенди.

    Якщо дуже малі прямі запити все ще працюють, але звичайні ходи агента OpenClaw і далі аварійно завершуються всередині inferrs, решта проблеми зазвичай пов’язана з поведінкою upstream-моделі або сервера, а не з транспортним шаром OpenClaw.

    Ручний smoke-тест

    Після налаштування протестуйте обидва шари:

    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
    

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

    Поведінка в стилі проксі

    inferrs розглядається як OpenAI-сумісний бекенд /v1 у стилі проксі, а не як нативна кінцева точка OpenAI.

    • Формування запитів, призначене лише для нативного OpenAI, тут не застосовується
    • Немає service_tier, Responses store, підказок prompt-cache і формування payload для сумісності з reasoning OpenAI
    • Приховані заголовки атрибуції OpenClaw (originator, version, User-Agent) не додаються до власних базових URL inferrs

    Усунення несправностей

    curl /v1/models завершується помилкою

    inferrs не запущено, він недоступний або не прив’язаний до очікуваного хоста/порту. Переконайтеся, що сервер запущено й він прослуховує адресу, яку ви налаштували.

    messages[].content очікує рядок

    Установіть compat.requiresStringContent: true у записі моделі. Докладніше див. у розділі requiresStringContent вище.

    Прямі виклики /v1/chat/completions проходять, але openclaw infer model run завершується помилкою

    Спробуйте встановити compat.supportsTools: false, щоб вимкнути поверхню схеми інструментів. Див. застереження щодо схеми інструментів Gemma вище.

    inferrs усе ще аварійно завершується на більших ходах агента

    Якщо OpenClaw більше не отримує помилки схеми, але inferrs усе ще аварійно завершується на більших ходах агента, розглядайте це як обмеження upstream-inferrs або моделі. Зменште навантаження промпта або перейдіть на інший локальний бекенд чи модель.

    Пов’язане