Главная / Статьи / Phlox-GW: шлюз LLM с открытым исходным кодом, включающий функции управления бюджетом, ограничений и высокой доступности

Phlox-GW: шлюз LLM с открытым исходным кодом, включающий функции управления бюджетом, ограничений и высокой доступности

Разверните собственный шлюз LLM с функциями возврата средств, ограничений по частоте запросов, защиты персональных данных, журналами аудита, точками входа OpenAI и Anthropic, а также кластеризацией на основе Postgres.

2581 слов

Воркеры LLM с открытым исходным кодом часто предлагают «корпоративные» механизмы управления — возвраты средств, бюджетирование, SSO, ограничения, журналы аудита, кластеризация для высокой доступности, лимиты на количество запросов, маршрутизацию — только при наличии платной лицензии. Phlox-GW (Phlox Gateway) предоставляет эти функции в полностью открытом исходным кодом воркере, предназначенном для самостоятельной развертки в инфраструктуре команд: единый интерфейс для работы с разными провайдерами, поддержка конечных точек OpenAI и Anthropic, а также преобразование протоколов, что позволяет клиентам вроде Claude Code взаимодействовать с моделями, работающими на разных базах данных.

Phlox-GW представляет собой один бинарный файл на языке Go, подходящий для macOS, Linux (включая WSL) и Windows. Для небольших проектов достаточно одной инстансии с использованием SQLite; в более крупных проектах возможна развертка многоклеточных кластеров на базе PostgreSQL. Существует также сопутствующий проект Phlox AI Platform, который может использоваться вместе с воркером при необходимости полноценного интерфейса чата; данное руководство посвящено именно воркеру.

Ознакомление с интерфейсом Phlox-GW

Панель управления операциями

Администраторы видят общие показатели — количество пользователей, поставщиков, ключей API, событий, общую сумму расходов — а также графики за тридцать дней по ежедневным затратам, токенам, запросам, ошибкам и среднему времени задержки.

Мониторинг затрат и бюджета

К людям и отделам привязываются месячные бюджеты. У пользователей есть метка отдела, благодаря чему расходы суммируются. Превышение предупредительного порога приводит к уведомлению; достижение строгого лимита блокирует использование платных моделей до следующего цикла или увеличения лимита. Именно этот цикл возвратов средств является основной причиной, по которой команды предпочитают использовать шлюз вместо прямых ключей поставщика.

Лимиты скорости

Лимиты применяются на уровне пользователя, отдела, поставщика или модели в виде количества запросов в минуту (RPM) и/или токенов в минуту (TPM).

Высокая доступность и масштабирование с кластеризацией

Одного процесса Go на PostgreSQL уже достаточно для большинства задач. Для обеспечения доступности или работы тысяч одновременных сессий добавьте инстансы, разделяющие один Postgres, и разместите перед ним сетевой балансировщик нагрузки с функцией проверки работоспособности, которая отключает неисправные узлы.

Аудит

Записи аудита фиксируют входы и действия с настройками: время, исполнитель, действие, цель, детали и IP-адрес.

Логирование запросов с сохранением конфиденциальности

Каждый запрос к шлюзу фиксирует метаданные — время, идентификатор запроса, пользователя, отдел, ключ API, поставщика, модель, протокол, конечную точку — без сохранения содержимого запроса или ответа, так что информация остается конфиденциальной, в то же время у операционной службы сохраняется история инцидентов.

Ограничения / удаление/блокировка персональных данных

Средний слой может удалять или блокировать сообщения при обнаружении чувствительных данных, как на входе (чтобы предотвратить утечки к поставщикам), так и на выходе (чтобы предотвратить утечки к клиентам), в зависимости от настроек.

Ключи API самообслуживания

Залогиненные пользователи могут создавать именованные ключи с опциональным сроком действия, аннулировать их и просматривать информацию о последних моментах использования. Администраторы имеют общий вид всего набора ключей для установления бюджетов/ограничений и их аннулирования. Полная информация о ключах появляется только при их создании.

Мониторинг использования в режиме самообслуживания

Отдельные пользователи могут видеть количество своих запросов, токены ввода/вывода, сумму расходов и детальный разбивку затрат по моделям без необходимости ожидания экспорта данных из финансового модуля.

Установка Phlox-GW

Для оценки на рабочем столе бинарный файл является самодостаточным и создает базу данных SQLite при первом запуске. Для сборки из исходного кода требуется актуальная среда разработки Go и npm для ресурсов интерфейса. Типичная процедура запуска:

curl \
  --proto '=https' \
  --tlsv1.2 \
  -fsSL \
  https://raw.githubusercontent.com/robert-mcdermott/phlox-gw/main/install.sh \
  | sh

Создайте каталог для хранения данных и запустите сервис:

  mkdir -p "/Users/<your-username>/.local/share/phlox-gw"
  cd "/Users/<your-username>/.local/share/phlox-gw"
  phlox-gw

Направьте браузер на локальный интерфейс, создайте первого администратора и продолжите настройку там. В производственных установках обычно задаются переменные окружения для DSN Postgres, адреса прослушивания, точек завершения TLS на балансировщике нагрузки и секретов сессий — полный список переменных приведен в документации репозитория.

Настройка Phlox-GW

Обязательного файла конфигурации нет: настройки осуществляются с помощью переменных окружения и веб-интерфейса.

Добавление/настройка поставщика

Зарегистрируйте каждый источник данных (совместимый с OpenAI, Anthropic или другие поддерживаемые), указав базовый URL и учетные данные, хранящиеся у шлюза, а не на каждом ноутбуке.

Добавление и настройка модели

Сопоставьте идентификаторы моделей поставщика с именами, видимыми для шлюза, укажите цены для возмещения расходов и выберите пути маршрутизации/резервирования, когда несколько бэкендов могут обслуживать одну и ту же логическую модель.

Тестирование поставщика и модели в среде Playground

Встроенная среда Playground отправляет пробный чат через выбранный путь поставщика/модели, чтобы проблемы с подключением проявились до того, как клиенты будут направлены к шлюзу.

Добавление пользователей

Создайте учётные записи (или подключите SSO/OIDC, если это включено), назначьте роли и отделы, а также установите бюджеты/ограничения.

Создание бюджетов

Определите ежемесячные лимиты и пороги предупреждения для отдельных пользователей и отделов; модели с фиксированной ценой учитывают эти ограничения при обработке запросов.

Использование Phlox-GW

Создание API-ключа

В панели самообслуживания сгенерируйте ключ, скопируйте его один раз и сохраните в секретном хранилище клиента.

Тестирование конечных точек шлюза

Экспортируйте ключ:

export PHLOX_API_KEY="pgw-sk-<rest-of-your-api-key>"

Функции дополнения текста в стиле OpenAI через локальный шлюз:

curl -Ns http://127.0.0.1:8080/v1/chat/completions \
  -H "Authorization: Bearer $PHLOX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "local-ollama/glm-5.2:cloud",
    "messages": [{"role": "user", "content": "What is the capital of France?"}],
    "stream": false
  }'

Сообщения в стиле Anthropic через переведённую конечную точку:

curl -sS http://127.0.0.1:8080/anthropic/v1/messages \
  -H "x-api-key: $PHLOX_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "local-ollama/glm-5.2:cloud",
    "max_tokens": 64,
    "messages": [{ "role": "user", "content": "What is the capital of Texas?" }]
  }'|jq

Использование Claude Code с Phlox-GW

Укажите Claude Code (или аналогичный инструмент) на базовый URL, совместимый с Anthropic, и ключ шлюза:

env \
  ANTHROPIC_BASE_URL="http://127.0.0.1:8080/anthropic" \
  ANTHROPIC_API_KEY="$PHLOX_API_KEY" \
  ANTHROPIC_MODEL="azure/gpt-5.5" \
  claude

Благодаря преобразованию протоколов клиенты, построенные на технологиях Anthropic, могут обращаться к любым ресурсам, к которым направляет шлюз.

Проверка использования

Пользователи обновляют панели с данными о количестве токенов и затратах; резкие скачки должны соответствовать известным пакетным задачам или неуправляемым агентам.

Мониторинг использования и затрат в качестве администратора

Администраторы отслеживают панели управления флотом, сводные данные по отделам, а также графики ошибок и задержек. Нарушения бюджета и превышение лимитов являются важными операционными событиями, а не неожиданностями в таблицах.

Ограничения — удаление конфиденциальной информации

Включите шаблоны для поиска секретов, личных идентификаторов или внутренних имен хостов. Выберите опцию маскировки или блокировки для каждой группы шаблонов. Перед применением к реальному трафику протестируйте их с использованием синтетических образцов в режиме тестирования.

Логирование и аудит

Логирование запросов

Логи запросов, содержащие только метаданные, позволяют эффективно реагировать на инциденты и разрешать споры, связанные с возвратом средств, без хранения конфиденциального текста запросов.

Логирование аудита

События конфигурации и аутентификации позволяют ответить на вопрос «Кто изменил маршрутизацию вчера?» без необходимости просмотра логов приложения.

Заключение

Пакеты Phlox-GW объединяют функции возврата средств, управления бюджетами, ограничений скорости, правил безопасности, аудита и кластеризации в один открытый бинарный файл с интерфейсами OpenAI и Anthropic. Для оценки начните с SQLite, затем перейдите на Postgres и NLB, когда важна доступность, а учетные данные поставщика и правила храните в одном месте, а не в разрозненных файлах среды рабочего стола.

Чек-лист для первой производственной сессии: (1) оцените стоимость каждой разработанной модели, чтобы бюджеты имели смысл, (2) присвойте пользователям отделы до начала первого цикла выставления счетов, (3) включите логи запросов метаданных и начните аудит с первого дня, (4) протестируйте синтетические образцы PII через механизмы контроля в среде тестирования, (5) используйте пару узлов на базе Postgres с проверкой работоспособности и балансировкой нагрузки перед тем, как обещать высокую доступность, и (6) задокументируйте, как клиенты Claude Code / SDK должны настраивать базовый URL и ключи, чтобы shadow IT не мог обойти шлюз с прямыми учетными данными поставщика. Пересмотрите лимиты RPM/TPM через неделю реального трафика агентов — первоначальные лимиты почти всегда слишком щедрые для периодических нагрузок и слишком строгие для интерактивного чата. Ведите руководство по ротации ключей шлюза и секретов поставщика в разные даты, чтобы одна утечка не привела к двойному сбою. Наконец, экспортируйте данные о расходах по отделам в фиксированные сроки, даже если

Пока никто не спрашивал; финансовый отдел обратится с вопросами после появления первого неожиданного счета, и у шлюза уже есть все необходимые цифры, если теги были установлены правильно.

При расширении за пределы одной команды рассматривайте шлюз как продуктовую платформу: используйте политики маршрутизации версий, проверяйте альтернативные узлы при региональных сбоях у поставщика и получайте уведомления о росте количества ошибок 429 от источников данных отдельно от лимитов, установленных самим шлюзом. Для ситуаций ограничения пропускной способности на источниках данных и локальных политических ограничений требуются разные действия — либо приобрести дополнительную мощность, либо научить оператора работать с проблемными агентами. Сопоставляйте метрики Phlox-GW с страницами статуса поставщиков в одном окне мониторинга, чтобы операторы не пытались отладить «задержку шлюза», которая на самом деле является сбоем в конкретном регионе. Благодаря таким привычкам шлюз остается элементом управляющей плоскости, а не еще одним непрозрачным прокси-сервером.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели SLO для Document Gateway определяются так же, как и для любого другого сервиса на периферии: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с исключением времени обработки модели на верхнем уровне, когда это возможно, а также показатели использования ресурсов по отделам. Эти три графика позволяют выявить большинство сообщений о проблемах ещё до того, как они превратятся в темы в Slack.

Показатели качества работы шлюза документов определяются так же, как и у любого другого краевого сервиса: доступность интерфейсов /v1 и /anthropic, показатель задержки p95 с учетом времени обработки модели на верхнем уровне, когда это возможно, а также нормативы использования ресурсов по отделам. Эти три показателя позволяют выявить большинство случаев, когда сервис кажется неисправным, еще до того, как они превратятся в обсуждения в Slack.