Рецепт · OpenClaw

Neon AI Gateway в OpenClaw: один провайдер на ветку базы

Настраиваем models.providers.neon с креденшелом на ветку и проверяем, что запросы уходят в нужную ветку Neon.

· 4 мин чтения

Коротко

  • Neon AI Gateway: один креденшел доходит до моделей OpenAI, Anthropic, Google, Meta, Databricks и Alibaba.
  • Провайдер кастомный: запись models.providers.neon пишем руками, openclaw onboard его не предлагает.
  • Хост Gateway привязан к ветке Neon, поэтому при переключении ветки меняется и эндпоинт.

Сверено с документацией OpenClaw 2026.10.10, 3 ноября 2026.

Собрать модели OpenAI, Anthropic, Google, Meta, Databricks и Alibaba за одним ключом — задача для шлюза перед провайдерами. У Neon это решает один учётный доступ на ветку: настраиваем models.providers.neon так, чтобы запросы уходили в выбранную ветку Neon.

Шаг 1. Учётные данные на ветку

  1. В Neon Console выберите ветку, откройте Credentials в разделе APP BACKEND и нажмите Create credential.
  2. Отметьте scope ai_gateway:invoke. Токен начинается с nt_live_ и показывается один раз.
  3. Через CLI: команда neon env pull --file .env записывает и учётные данные, и host текущей ветки.
export NEON_AI_GATEWAY_BASE_URL="https://<your-neon-branch-host>"
export NEON_AI_GATEWAY_TOKEN="example-neon-gateway-token-not-real"

В NEON_AI_GATEWAY_BASE_URL кладётся host из консоли, без пути после него. Это не строка подключения к базе.

Шаг 2. Провайдер neon в конфиге

Запись добавляем до выбора модели. Транспорт openai-completions, baseUrl состоит из host и /v1: клиент OpenAI дописывает к адресу chat/completions.

{
  models: {
    providers: {
      neon: {
        baseUrl: "https://<your-neon-branch-host>/v1",
        apiKey: "${NEON_AI_GATEWAY_TOKEN}",
        api: "openai-completions",
        models: [
          {
            id: "gpt-5-mini",
            name: "GPT-5 Mini",
            reasoning: true,
            input: ["text", "image"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 400000,
          },
          {
            id: "gemini-3-flash",
            name: "Gemini 3 Flash",
            reasoning: true,
            input: ["text", "image"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 1000000,
          },
          {
            id: "qwen3-next-80b-a3b-instruct",
            name: "Qwen3-Next 80B Instruct",
            reasoning: false,
            input: ["text"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 131000,
          },
        ],
      },
    },
  },
  agents: {
    defaults: {
      model: { primary: "neon/gpt-5-mini" },
    },
  },
}

Шаг 3. Проверка ветки и модели

  1. Выберите модель и посмотрите каталог провайдера:
  2. Проверьте, что ветка действительно та: запросите список моделей с тем же токеном.
  3. Сравните ответ с соседней веткой: тот же учётный доступ там даёт 403 с credential not authorized for this branch.
openclaw models set neon/gpt-5-mini
openclaw models list --provider neon
curl "$NEON_AI_GATEWAY_BASE_URL/v1/models" \
  -H "Authorization: Bearer $NEON_AI_GATEWAY_TOKEN"

Без записи models.providers.neon команда openclaw models set падает с Unknown model provider "neon" и конфиг не меняет. Список моделей приходит в форме OpenRouter, но pricing, context_length и per_request_limits всегда null, поэтому contextWindow и cost берите из каталога Neon: $0.25 и $2.00 за миллион токенов у gpt-5-mini, $0.50 и $3.00 у gemini-3-flash, $0.15 и $1.20 у qwen3-next-80b-a3b-instruct.

Два отдельных эндпоинта Neon

Часть моделей живёт не на /v1. Responses-модели требуют openai-responses и base URL с /openai/v1, а Claude-модели доступны только через anthropic-messages на /anthropic, где Neon требует bearer-токен, поэтому нужен authHeader: true.

{
  models: {
    providers: {
      "neon-responses": {
        baseUrl: "https://<your-neon-branch-host>/openai/v1",
        apiKey: "${NEON_AI_GATEWAY_TOKEN}",
        api: "openai-responses",
        models: [
          {
            id: "gpt-5-3-codex",
            name: "GPT-5.3 Codex",
            reasoning: true,
            input: ["text", "image"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 400000,
          },
        ],
      },
    },
  },
}
{
  models: {
    providers: {
      "neon-anthropic": {
        baseUrl: "https://<your-neon-branch-host>/anthropic",
        apiKey: "${NEON_AI_GATEWAY_TOKEN}",
        authHeader: true,
        api: "anthropic-messages",
        models: [
          {
            id: "claude-sonnet-4-6",
            name: "Claude Sonnet 4.6",
            reasoning: true,
            input: ["text", "image"],
            cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
            contextWindow: 200000,
          },
        ],
      },
    },
  },
  agents: {
    defaults: {
      model: { primary: "neon-anthropic/claude-sonnet-4-6" },
      models: {
        "neon-anthropic/claude-sonnet-4-6": {
          params: { cacheRetention: "short" },
        },
      },
    },
  },
}

Где ломается и когда не применять

  • Neon AI Gateway требует платного плана и доступен не во всех регионах.
  • Хост ветки — это публичный HTTPS-эндпоинт, поэтому переопределение приватной сети не нужно.
  • Учётные данные действуют на ветке, где созданы, и на её потомках. Ротация: сначала новый токен, потом новое значение в окружении, потом отзыв старого.
  • OpenClaw не отправляет stream_options на этот маршрут: supportsUsageInStreaming выводится как false. Потоковый ход часто отчитается нулём токенов. Флаг compat: { supportsUsageInStreaming: true } включайте только после проверки модели.
  • Эндпоинт /openai/v1 принимает только идентификаторы OpenAI: Gemini, Llama или Qwen дают 400 model "<model-id>" is not available on the openai_responses endpoint. Эндпоинт /anthropic — только Claude: не-Anthropic ID дают 400 model "<model-id>" is not available on the anthropic_messages endpoint.
  • В записях моделей нет maxTokens, поэтому OpenClaw применяет свой предел в 8192 выходных токенов. Значение 20 000 выходных токенов в минуту у Neon это лимит скорости, а не потолок ответа.