Управление каналами в AI-шлюзе
«Канал (Channel)» — это конфигурация точки подключения поставщика в AI-шлюзе: в ней хранятся адрес поставщика, реальный API Key, доступные модели, а также сведения о тарификации и лимитах. Именно на основе этих каналов шлюз маршрутизирует запросы от приложений к нужному поставщику. В этой статье рассказано, как добавлять каналы, настраивать их, тестировать и управлять ими.
Предварительные условия
- ServBay установлен и запущен, вы вошли в учётную запись ServBay (перед добавлением канала вход обязателен).
- У вас есть реальный API Key целевого поставщика (для локальных поставщиков вроде Ollama / LM Studio его можно не указывать).
- Если вы ещё не знакомы с общей архитектурой AI-шлюза, сначала прочитайте Введение в AI-шлюз.
Добавление канала
Перейдите на страницу AI-шлюз → Каналы (Channels) и нажмите Добавить (Add), чтобы открыть мастер. Мастер состоит из трёх шагов.
Шаг 1. Выбор поставщика
Поставщики отображаются сгруппированными по категориям — чтобы выбрать, нажмите на карточку:
- Основные (Mainstream): OpenAI, Anthropic, Google Gemini, Azure OpenAI, AWS Bedrock, OpenRouter.
- Китайские (China): DeepSeek, Qwen (Tongyi Qianwen), Zhipu GLM, Kimi, Doubao·Volcano Engine, ERNIE Bot, Hunyuan, MiniMax, 01.AI, StepFun.
- Локальные (Local): Ollama, LM Studio.
- Пользовательские (Custom): OpenAI Compatible, Custom.
После выбора поставщика шлюз автоматически подставит его Base URL по умолчанию.
Переключение между двумя регионами
Такие китайские поставщики, как Qwen (Tongyi Qianwen), Zhipu GLM, Kimi, Doubao·Volcano Engine, Hunyuan, MiniMax и StepFun, одновременно предоставляют два набора эндпоинтов: внутри Китая и глобальный. При выборе такого поставщика в мастере появляется переключатель «Регион» (🇨🇳 Китай / 🌐 Глобальный); при переключении Base URL автоматически обновляется на адрес соответствующего региона.
Шаг 2. Заполнение конфигурации
- Название канала (обязательно) — используется для идентификации канала в списке, можно задать произвольно.
- Base URL (обязательно) — адрес API поставщика. Для большинства поставщиков он уже подставлен автоматически; для Azure OpenAI и Custom его нужно указать вручную.
- API Key (необязательно) — реальный ключ поставщика. Если оставить поле пустым, можно будет проверить только достижимость эндпоинта, но не действительность ключа; для локальных поставщиков (Ollama / LM Studio) его обычно указывать не нужно.
- Модели — есть два способа, выберите один из них:
- Автоматическое обнаружение: нажмите «Обнаружить», и шлюз обратится к API списка моделей поставщика, чтобы получить доступные модели; вы отметите нужные в виде чипов (chip).
- Ручной ввод: просто введите название модели. Для каналов Azure нужно указывать имя развёртывания (Deployment name), а не название модели.
- Приоритет / вес — если одну и ту же модель могут обслуживать несколько каналов, шлюз на основе этих параметров определяет маршрутизацию и распределение нагрузки.
Внимание для Azure OpenAI
В поле «Модели» для канала Azure следует указывать имя развёртывания (Deployment name), созданное вами на портале Azure, а не название базовой модели. В Base URL также нужно указать эндпоинт вашего ресурса Azure.
Шаг 3. Подтверждение и отправка
Проверьте сводку конфигурации и отправьте её. После успешной отправки новый канал появится в списке каналов, где будет отображаться состояние работоспособности в реальном времени.
Определение возможностей и стратегия маршрутизации
После добавления канала шлюз выполняет определение возможностей (capability probing) — это ключевой механизм интеллектуальной маршрутизации в AI-шлюзе. Его результаты определяют, смогут ли инструменты вроде Claude Code работать напрямую или потребуется создать сопоставление моделей, а также как выбирать целевую модель.
Два ключевых показателя определения
Для каждого канала шлюз проверяет два основных факта (оба имеют три состояния: true / false / не определено):
| Показатель | Смысл | true | false | Не определено |
|---|---|---|---|---|
Принимает имена моделей Claude (accepts_claude_names) | Распознаёт ли канал изначально такие имена моделей, как claude-opus-* / claude-sonnet-* / claude-haiku-* | Можно подключаться напрямую, сопоставление не нужно | Не распознаёт, обязательно создать сопоставление, переводящее имена claude-* в реальные имена моделей вышестоящего поставщика | Проверка не запускалась или завершилась неудачей, вывод сделать нельзя |
Различает уровни (tier_aware) | Возвращает ли вышестоящий сервис разные модели в зависимости от уровня opus / sonnet / haiku | Вышестоящий сервис уже различает уровни, можно передать обработку ему | Не различает уровни (возвращает одну и ту же модель для всех уровней), требуется сопоставление на стороне шлюза | Определить не удалось или проверка не проводилась |
Почему нужно проверять, а не догадываться
Поведение разных поставщиков сильно различается. OpenAI изначально не распознаёт имена моделей claude-*; некоторые проксирующие поставщики распознают их через пересылку; а поставщики тарифных пакетов для программирования (например, подписки Claude Pro/Max) могут распознавать только определённые имена моделей, привязанные к подписке. Шлюз не строит догадок по типу канала, а сначала фактически проверяет, а затем определяет стратегию маршрутизации.
Определение маршрутизации: пять состояний
Когда вы выполняете «перехват в один клик» для Claude Code на странице AI Gateway → Управление подключениями → Клиенты, шлюз агрегирует результаты проверки всех каналов-кандидатов и формирует определение маршрутизации:
| Состояние каналов-кандидатов | Определение | Смысл |
|---|---|---|
| Нет доступных каналов-кандидатов (нет каналов / все неработоспособны / в области действия виртуального ключа нет каналов) | Нет каналов-кандидатов | Сначала нужно добавить или исправить каналы |
| Хотя бы у одного канала-кандидата значение не определено | Не проверено | Сначала нужно запустить проверку; нельзя создавать сопоставление без предварительной верификации |
| Все каналы-кандидаты распознают имена моделей Claude | Прямое подключение | Сопоставление не создаётся, запросы пересылаются как есть |
| Ни один канал-кандидат не распознаёт имена моделей Claude | Сопоставление обязательно | Шлюз создаёт сопоставления для трёх уровней, переводя claude-* в реальные имена моделей вышестоящего поставщика |
| Среди кандидатов есть и распознающие, и не распознающие | Смешанный | Требуется решение человека (распознающие работают напрямую, нераспознающие — через сопоставление) |
Сопоставление моделей: перевод claude-* в реальные имена моделей вышестоящего поставщика
Когда выносится определение «Сопоставление обязательно», шлюз создаёт для Claude Code три правила сопоставления моделей, покрывающих три уровня:
| Имя модели, отправляемое Claude Code | Правило сопоставления (шаблон) | Сопоставляется с |
|---|---|---|
claude-opus-* | Совпадает со всеми запросами уровня opus | Флагманской моделью среди каналов-кандидатов |
claude-sonnet-* | Совпадает со всеми запросами уровня sonnet | Флагманской или стандартной моделью среди каналов-кандидатов |
claude-haiku-* | Совпадает со всеми запросами уровня haiku | Облегчённой моделью среди каналов-кандидатов |
Правила выбора целевой модели (с откатом по приоритету):
- Предустановка семейства: если среди моделей-кандидатов встречается ключевое слово известного семейства (например,
glm), в качестве цели для уровней opus/sonnet берётся флагманская модель этого семейства (например,glm-5.2), а в качестве цели для уровня haiku — облегчённая модель этого семейства (например,glm-4.7-flash). - Совпадение по ключевому слову: если предустановки семейства нет, для opus/sonnet берётся первая модель из списка кандидатов; для haiku — первая модель среди кандидатов, совпадающая с ключевым словом облегчённой модели (
flash/mini/lite/air/small/turbo/haiku). - Резервный вариант: если совпадений всё ещё нет, для всех трёх уровней берётся первая модель из списка кандидатов.
Ошибка на уровне haiku обходится дороже всего
Уровень haiku в Claude Code используется чаще всего (каждый лёгкий вызов в диалоге идёт именно через него). Если по ошибке подставить в уровень haiku флагманскую модель, счёт может вырасти в несколько раз. Таблица совпадений по ключевым словам в шлюзе охватывает 7 облегчённых суффиксов (flash / mini / lite / air / small / turbo / haiku), что гарантирует, что в уровень haiku не попадёт тяжёлая модель.
Механизм записи сопоставлений
После подтверждения перехвата шлюз записывает записи сопоставлений через API /admin/model-mappings. Каждая запись сопоставления содержит:
- Исходный протокол (
source_protocol):anthropic(запросы, отправляемые Claude Code, имеют формат Anthropic) - Сопоставление исходной модели (
source_model_pattern): шаблон, напримерclaude-opus-* - Целевой протокол (
target_protocol):openai(всё единообразно преобразуется в формат OpenAI и отправляется вышестоящему поставщику) - Целевая модель (
target_model): конкретное имя модели, выбранное в результате проверки
Запись идемпотентна — повторный перехват не создаёт дублирующихся сопоставлений; перед записью сначала запрашивается текущий список сопоставлений для сравнения.
Правила маршрутизации во время выполнения: failover и понижение уровня
Помимо статических сопоставлений, записываемых на этапе перехвата, шлюз также поддерживает правила маршрутизации во время выполнения (routing rules), которые принимают решения динамически при прохождении запроса через шлюз:
| Поле правила | Назначение |
|---|---|
Условие срабатывания (condition_type) | Когда срабатывает понижение, например при исчерпании квоты канала (quota_exhausted) |
Порог стоимости (cost_threshold_usd) | Необязательно: срабатывает, когда накопленная стоимость по этому каналу превышает порог |
Действие (action_type) | Что делать после срабатывания, например переключиться на указанный резервный канал (switch_to) |
Целевой канал (target_channel_id) | Резервный канал, на который выполняется понижение |
Целевая модель (target_model) | Необязательно: одновременно с переключением на резервный канал сменить и модель |
Комбинируя несколько правил маршрутизации, можно реализовать, например, автоматическое переключение с канала A на эндпоинт канала B с оплатой по факту использования при исчерпании квоты подписки, а также понижение до более дешёвой модели, когда 24-часовая стоимость по какому-либо каналу превышает лимит.
Балансировка нагрузки и приоритет
Когда одну и ту же модель могут обслуживать несколько работоспособных каналов, шлюз выбирает по следующей стратегии:
- Режим приоритета (по умолчанию): выбирается только канал с наивысшим приоритетом; среди каналов с одинаковым приоритетом шлюз распределяет по внутренним весам.
- Режим round-robin (
round_robin): запросы поочерёдно распределяются между всеми работоспособными каналами-кандидатами.
Приоритет задаётся в конфигурации канала (чем больше число, тем выше приоритет), а allowed_channels виртуального ключа ограничивает диапазон доступных каналов.
Проверка подключения
В списке каналов можно выполнить проверку подключения для отдельного канала. Проверка ведётся по двум измерениям:
- Достижимость эндпоинта (reachable) — проверяется, доступен ли Base URL (правильность сети и адреса).
- Действительность ключа (authenticated) — выполняется фактический вызов API поставщика для проверки действительности API Key. Проверяется только при заполненном API Key.
Результаты проверки отображают: задержку туда-обратно (в миллисекундах), значок состояния и сообщение об ошибке.
TIP
В мастере добавления, если эндпоинт недостижим, переход к следующему шагу блокируется; если эндпоинт достижим, но ключ недействителен, выводится только предупреждение, и вы можете продолжить (например, если планируете добавить ключ позже).
Расширенная конфигурация
При добавлении или редактировании канала можно развернуть расширенную конфигурацию для учёта затрат и контроля квот:
- Коэффициент тарификации (Rate Multiplier) — множитель к официальной цене поставщика, удобен для расчёта по вашей реальной себестоимости или цене перепродажи; по умолчанию
1.0. - Структура биллинга — описывает способ оплаты по данному каналу, например оплата по факту использования (pay as you go), подписка (subscription), пакет (package).
- Баланс — источник баланса может быть фиксированным значением, счётом OSS или ручным ведением; при выборе счёта OSS также можно указать тип счёта. Баланс и время обновления отображаются только для чтения в сведениях о канале.
- Дата окончания подписки — для каналов типа подписки / пакета можно записать дату окончания.
- Лимиты квот — можно задать верхний предел по количеству токенов, числу запросов или сумме, а также выбрать период (ежедневно / еженедельно / ежемесячно / произвольный). После исчерпания квоты канал автоматически исключается из маршрутизации — это предохранительный клапан от непредвиденных перерасходов.
Редактирование и удаление канала
- Редактирование — откройте канал в списке, чтобы изменить название, Base URL, API Key, модели и расширенную конфигурацию.
- Удаление — после удаления канала зависящие от него виртуальные ключи больше не смогут маршрутизироваться на него, поэтому будьте осторожны.
Состояние работоспособности
Список каналов и страница обзора отображают состояние работоспособности каждого канала в реальном времени (норма / пониженная работоспособность / недоступен), что помогает быстро выявлять нерабочие конфигурации поставщиков.
Часто задаваемые вопросы (FAQ)
- Вопрос: при добавлении канала требуется вход?
- Ответ: AI-шлюз — это дополнительная функция ServBay; перед добавлением каналов / ключей необходимо войти в учётную запись ServBay, просто войдите, следуя подсказкам интерфейса.
- Вопрос: сообщается, что достигнут лимит числа каналов?
- Ответ: количество создаваемых каналов зависит от тарифного плана учётной записи; при достижении лимита можно удалить неиспользуемые каналы или перейти на более высокий план.
- Вопрос: автоматическое обнаружение моделей не получает список?
- Ответ: сначала убедитесь, что Base URL указан верно и API Key действителен (можно проверить через «Действительность ключа» в проверке подключения); некоторым поставщикам для возврата списка моделей необходим действующий ключ. Также можно переключиться на ручной ввод имён моделей.
- Вопрос: нужно ли указывать Key для подключения локальных Ollama / LM Studio?
- Ответ: обычно не нужно. Достаточно, чтобы соответствующий локальный сервис был запущен и прослушивал порт по умолчанию (Ollama —
11434, LM Studio —1234).
- Ответ: обычно не нужно. Достаточно, чтобы соответствующий локальный сервис был запущен и прослушивал порт по умолчанию (Ollama —
Итог
Каналы — основа маршрутизации запросов в AI-шлюзе. С помощью мастера из трёх шагов вы можете быстро подключить почти 20 поставщиков; переключение между двумя регионами, автоматическое обнаружение моделей и двухмерная проверка подключения помогут убедиться в правильности конфигурации, а расширенные настройки тарификации и квот позволят тонко управлять затратами. После настройки каналов можно создать виртуальные ключи для использования приложениями и инструментами.
