---
title: AI Models
description: Продавайте доступ к моделям ИИ через свой шлюз: подключайте провайдеров, задавайте цены и тарифицируйте запросы к единому эндпоинту через кошелек клиента.
url: https://nexcmp.com/ru/docs/infrastructure/ai-models/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# AI Models {#ai-models}

> **В панели управления:** System › Admin › License & updates (`/license`), чтобы включить модуль. Затем Services › AI Models: Providers (`/ai/providers`), Models (`/ai/models`), Profit (`/ai/profit`) и Audit (`/ai/audit`). Клиенты используют AI › API в клиентском портале.

## Назначение {#what-it-does}

AI Models — это шлюз и биллинговый уровень на базе вашей панели. Клиенты получают ключи API и обращаются к **единому эндпоинту на вашем домене** в формате, совместимом с OpenAI или Anthropic. Вы сами выбираете, какие модели предлагать и сколько стоит 1 млн токенов. NexCMP проверяет ключ, лимиты и баланс кошелька, перенаправляет запрос добавленному провайдеру, ведет учет токенов и списывает средства с предоплатного кошелька клиента.

**Источники моделей вы подключаете сами.** В NexCMP нет предустановленных провайдеров, моделей, адресов по умолчанию и цен. Платформа не предоставляет модели, ключи API, токены или аккаунты провайдеров.

::: warning Сначала проверьте условия использования источников
Многие источники моделей ограничивают перепродажу или передачу доступа третьим лицам. Используйте только те источники, к которым у вас есть право доступа и перепродажи, и соблюдайте их правила, а также применимое законодательство. Данная страница не является юридической консультацией.
:::

AI Models — это отдельный продукт, независимый от **AI Chat and AI Agent** (модуль **AI**, см. [AI providers](https://nexcmp.com/ru/docs/ai/ai-providers/)). Эти два модуля не зависят друг от друга.

## Требования {#requirements}

| Параметр | Требование |
|---|---|
| Модуль | **AI Models**, включенный в License & updates, Modules. По умолчанию выключен. |
| Провайдеры | Один или несколько источников моделей, которые вам разрешено перепродавать, каждый с OpenAI-совместимым API (`/chat/completions`), Anthropic-совместимым API (`/messages`) или обоими. Для каждого требуются базовый URL и API-ключ. |
| Сеть | Панель должна иметь доступ к каждому провайдеру по **HTTPS через порт 443** по публичному доменному имени. Провайдер на внутреннем хосте, другом порту или обычном HTTP должен быть указан в **Allowed internal hosts** (параметр `ai_endpoint_allow`). |
| Клиенты | Аккаунт клиента с подтвержденным адресом электронной почты и балансом в кошельке. |
| Оборудование | Нет. NexCMP только перенаправляет запросы: без GPU и файлов моделей. |

## Подготовка инфраструктуры {#prepare-the-infrastructure}

1. Получите ключ API от каждого используемого источника моделей и сохраните его base URL (например, `https://api.example.com/v1`).
2. Проверьте условия перепродажи у поставщика источника.
3. Если источник работает внутри вашей сети, определите его адрес, например `http://10.0.0.5:8000/v1`. Вы укажете `10.0.0.5:8000` в **Allowed internal hosts**.

## Подключение в NexCMP {#connect-in-nexcmp}

### 1. Включите модуль {#_1-turn-the-module-on}

Откройте **System › Admin › License & updates**, найдите карточку **Module** и включите **AI Models**. Меню обновится, и появится раздел **Services › AI Models**. Пока модуль выключен, страницы клиента, страницы панели управления и шлюз отвечают `404 module_disabled`, а обращения к провайдерам не выполняются.

![Карточка Module с включенным переключателем AI Models](https://nexcmp.com/ru/docs/images/infrastructure/ai-models-01-modules.webp)

### 2. Добавьте провайдера {#_2-add-a-provider}

1. Откройте **AI Models › Providers** и выберите **Add provider**.
2. Укажите короткий **slug**, **name** (отображается только вам), **type** (OpenAI-compatible, Anthropic-compatible или Both), **base URL**, **API key** и **priority** (чем меньше число, тем раньше выполняется попытка).
3. Сохраните. Ключ хранится в зашифрованном виде, и впоследствии отображаются только последние четыре символа. Ключ можно ввести только в авторизованной сессии администратора.

Используйте **Both** только для шлюза, который действительно поддерживает оба формата. NexCMP **не** выполняет конвертацию между двумя форматами: к модели OpenAI-compatible провайдера обращение идет по адресу `/ai/v1/chat/completions`, а к модели Anthropic-compatible провайдера — по адресу `/ai/v1/messages`.

![Страница Providers со списком из трех тестовых провайдеров с указанием типа, приоритета и статуса](https://nexcmp.com/ru/docs/images/infrastructure/ai-models-02-providers.webp)

### 3. Проверка подключения {#_3-test-the-connection}

Нажмите **Test connection** у нужного провайдера. NexCMP обращается к `GET <base URL>/models` с этим ключом и сообщает статус **ok** либо причину ошибки: **auth** (неверный ключ), **blocked**, **billing** или **unreachable**. Тестирование ограничено 6 запросами в минуту.

### 4. Синхронизация моделей {#_4-sync-the-models}

Нажмите **Sync models**. NexCMP считывает список моделей провайдера и добавляет каждую новую модель **отключенной и без цены**. Модель, которой больше нет в списке провайдера, помечается флагом. Когда модуль включен, список также синхронизируется автоматически каждые 6 часов (параметр `ai_models_sync_hours`).

### 5. Настройка цен и включение моделей {#_5-set-prices-and-switch-models-on}

1. Откройте **AI Models › Models**.
2. Для каждой модели, которую вы хотите продавать, укажите **цену продажи** в долларах США за 1 миллион токенов: **input**, **cached input** и **output**.
3. При желании укажите вашу **себестоимость** модели. Тогда в **Profit** будет отображаться выручка относительно себестоимости по дням и по моделям, а цена продажи ниже себестоимости плюс минимальная маржа (параметр `ai_min_margin_pct`, по умолчанию 10) будет отклоняться, если только вы не подтвердите осознанную работу в убыток. Функция **Set price from cost** применяет заданную вами наценку; наценка по умолчанию не установлена.
4. Включите модель. Модель без цены продажи включить невозможно. Если цена cached input оставлена равной нулю, тарификация выполняется по цене input.

![Страница Models с ценами продажи input, cached input и output, а также переключателями включения](https://nexcmp.com/ru/docs/images/infrastructure/ai-models-03-models.webp)

### 6. Маршруты и отказоустойчивость {#_6-routes-and-failover}

В карточке модели в разделе **Routes** перечислены обслуживающие ее провайдеры по порядку. Добавьте резервного провайдера, настройте очередность и при необходимости укажите отдельное имя модели для каждого провайдера (имя, отправляемое провайдеру, может отличаться от опубликованного вами). Если провайдер возвращает ошибку сервера, ошибку авторизации или биллинга, отсутствие модели либо превышение лимита запросов, NexCMP пробует следующий маршрут. Если после отправки запроса истекает таймаут ожидания ответа, запрос **не** перенаправляется другому провайдеру, чтобы вы не платили дважды.

Для каждого провайдера действует ограничение частоты запросов `ai_provider_rpm` в минуту (по умолчанию 50). Если провайдер продолжает возвращать ошибки авторизации или биллинга, NexCMP отправляет оповещение администратору в Telegram (при настроенном Telegram).

### 7. Включение переключателя продаж {#_7-open-the-sale-switch}

В верхней части страниц AI Models **переключатель продаж** (параметр `feature_ai_models`) по умолчанию выключен. Пока он выключен, клиенты видят, что сервис еще не запущен, а в публичном прайс-листе он отображается как недоступный. Убедитесь, что хотя бы одна модель включена, имеет цену продажи и маршрут с ключом, после чего включите переключатель.

### Возможности клиентов {#what-customers-can-do}

В клиентском портале, **AI › API**:

- **Models** отображает ваши модели и цены, base URL и готовые примеры команд.
- **API Keys**: создание, переименование, ротация, отключение и удаление ключей. Секретный ключ отображается только один раз; сохраняется только его хеш. Для каждого ключа: разрешенные модели, срок действия, мягкий бюджет (предупреждение) и жесткий бюджет (блокировка с `402`), запросы в минуту и токены в минуту.
- **Usage** по моделям, ключам и дням, с возможностью экспорта.
- **Logs**: фильтруемые записи запросов (время, ключ, модель, токены, стоимость, статус, задержка). **Промпты и ответы не сохраняются.** Логи хранятся 90 дней по умолчанию (`ai_log_retention_days`).
- **Settings**: бюджет аккаунта и адрес электронной почты для оповещений о бюджете.
- **Playground**: общение с моделью в чате, параллельное сравнение моделей и копирование подходящего кода.

![Страница API Keys у клиента с базовыми URL для обоих форматов API](https://nexcmp.com/ru/docs/images/infrastructure/ai-models-04-keys.webp)

Эндпоинты шлюза на вашем домене:

```text
POST /ai/v1/chat/completions      OpenAI-compatible
POST /ai/v1/messages              Anthropic-compatible (also /ai/v1/messages/count_tokens)
GET  /ai/v1/models                model list
GET  /ai/v1/models/pricing        public price list, no key needed
```

### Кошелек и биллинг {#wallet-and-billing}

Потребление ресурсов AI списывается с того же предоплаченного кошелька, что и остальные услуги. Перед отправкой запроса провайдеру NexCMP резервирует сумму максимальной возможной стоимости запроса; если баланс ниже минимума (`ai_min_balance_cents`, по умолчанию 20 центов) или недостаточен, запрос отклоняется с `402 insufficient_balance`, и **обращение к провайдеру не выполняется**. Использование агрегируется по аккаунтам и фиксируется проводками в журнале кошелька каждый час с проверкой каждые 5 минут; еще не списанные средства уже вычитаются из баланса, видимого шлюзу.

Реселлеры могут продавать AI Models на собственном домене: их наценка или скидка применяется к вашей продажной цене, а с их оптового кошелька списывается оптовая цена. Переключатель AI в настройках каждого реселлера (включен по умолчанию) определяет доступ к продаже.

## Проверка {#verify}

1. После шага 3 **Test connection** показывает **ok** и количество моделей.
2. После шага 4 новые модели отображаются в списке отключенными и без цены.
3. От имени клиента с пополненным кошельком создайте ключ и выполните запрос к шлюзу:

   ```bash
   curl https://your-domain/ai/v1/chat/completions \
     -H "Authorization: Bearer sk-ai-…" -H "Content-Type: application/json" \
     -d '{"model":"model-one","messages":[{"role":"user","content":"hello"}]}'
   ```

   Ответ `200` содержит результат работы модели. **Usage** отображает запрос, а **Profit** покажет его, если вы указали себестоимость.
4. При нулевом балансе кошелька тот же запрос возвращает `402 insufficient_balance`.

## Ограничения и примечания {#limits-and-notes}

- В модуль не встроены провайдеры, модели или цены, а прайс-листы никогда не загружаются от провайдера автоматически.
- Инструменты, выполняемые на стороне провайдера и тарифицируемые за вызов (например, веб-поиск), отклоняются из-за невозможности их учета. Дальше передается только ограниченный список параметров запроса.
- Расход токенов берется из ответа провайдера; если в ответе их нет, NexCMP оценивает объем расчетным путем и помечает запись как приблизительную.
- Ошибки от провайдера очищаются перед отправкой клиенту (удаляются имена, хосты, адреса и внутреннее имя модели у провайдера). Клиенты никогда не видят, какой провайдер обслужил запрос.
- Клиенты обращаются к шлюзу через домен вашей панели, поэтому TLS для этого домена должен работать корректно.
- NexCMP не предоставляет SLA, дообучение моделей или GPU-хостинг в рамках этого модуля.

## Устранение неполадок {#troubleshooting}

| Симптом | Причина и решение |
|---|---|
| Каждая страница AI Models и шлюз возвращают `404 module_disabled` | Модуль отключен. Включите **AI Models** в меню License & updates, Modules. |
| Добавление провайдера завершается ошибкой `endpoint_host_not_allowed`, `endpoint_must_be_https` или `invalid_endpoint_port` | Базовый URL должен использовать протокол HTTPS на порту 443 с публичным доменным именем. Для внутреннего хоста, другого порта или обычного HTTP укажите `host:port` в **Allowed internal hosts**. |
| `blocked_endpoint` | Адрес является IP-адресом, либо имя разрешается в приватный адрес. Добавьте его в **Allowed internal hosts**, если это предусмотрено настройкой. |
| **Test connection** сообщает `auth` | Ключ неверен или не имеет прав доступа. Введите ключ заново. |
| Не удается включить модель (`no_price`) | Сначала задайте продажную цену. |
| Клиенты получают `503 ai_unavailable` | Переключатель продажи выключен, либо отключен переключатель AI у реселлера. |
| Клиенты получают `503 upstream_unavailable` | Нет активного маршрута с ключом, обслуживающего эту модель в запрошенном формате. Проверьте маршруты модели и тип провайдера. |
| Клиенты получают `402 insufficient_balance` | Баланс кошелька ниже минимального или недостаточен для выполнения запроса. Попросите клиента пополнить баланс. |
