Phlox-GW: шлюз LLM з відкритим кодом із функціями бюджетування, захисними механізмами та високою доступністю.
Самостійно розгорнути шлюз LLM із можливістю стягнення коштів назад, обмежень швидкості, захисту персональних даних, журналів аудиту, кінцевими точками OpenAI та Anthropic та кластеризацією на основі Postgres.
Ворота 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 Key
У панелі самообслуговування створіть ключ, скопіюйте його один раз та збережіть у секретному сховищі клієнта.
Тестування кінцевих точок шлюзу
Експортуйте ключ:
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 та ключі, щоб не допустити обходу шлюза за допомогою сирих облікових даних постачальника. Перегляньте ліміти 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 для документного шлюза визначаються так само, як і для будь-якої іншої сервісної точки: доступність интерфейсів /v1 та /anthropic, значення затримки p95 без урахування часу обробки моделі на вхідному рівні, коли це можливо, а також показники використання ресурсів за відділами. Ці три графіки дозволяють виявити більшість скарг на проблеми ще до того, як вони стануть темами у чатах Slack.
Шляхи досягнення SLO для документного шлюза визначаються так само, як і для будь-якої іншої сервісної точки: доступність интерфейсів /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 для документного шлюза визначаються так само, як і для будь-якої іншої сервісної точки: доступність интерфейсів /v1 та /anthropic, значення затримки p95 без урахування часу обробки моделі на вхідному рівні, коли це можливо, а також показники використання ресурсів за відділами. Ці три графіки дозволяють виявити більшість скарг на проблеми ще до того, як вони стануть темами у чатах Slack.
Шляхи досягнення SLO для документного шлюза визначаються так само, як і для будь-якої іншої сервісної точки: доступність интерфейсів /v1 та /anthropic, значення затримки p95 без урахування часу обробки моделі на вхідному рівні, коли це можливо, а також показники використання ресурсів за відділами. Ці три графіки дозволяють виявити більшість скарг на проблеми ще до того, як вони стануть темами у чатах Slack.
Шляхи досягнення SLO для документного шлюза визначаються так само, як і для будь-якої іншої сервісної точки: доступність интерфейсів /v1 та /anthropic, значення затримки p95 без урахування часу обробки моделі на вхідному рівні, коли це можливо, а також показники використання ресурсів за відділами. Ці три графіки дозволяють виявити більшість скарг на проблеми ще до того, як вони стануть темами у чатах Slack.
Шляхи досягнення SLO для документного шлюза визначаються так само, як і для будь-якої іншої сервісної точки: доступність интерфейсів /v1 та /anthropic, значення затримки p95 без урахування часу обробки моделі на вхідному рівні, коли це можливо, а також показники використання ресурсів за відділами. Ці три графіки дозволяють виявити більшість скарг на проблеми ще до того, як вони стануть темами у чатах Slack.
Шляхи досягнення SLO для Document Gateway визначаються так само, як і для будь-якої іншої сервісної точки: доступність интерфейсів /v1 та /anthropic, значення затримки p95 без урахування часу обробки моделі на вхідному рівні, коли це можливо, а також показники використання ресурсів за відділами. Ці три графіки дозволяють виявити більшість скарг на проблеми ще до того, як вони стануть темами обговорень у Slack.
Шляхи досягнення SLO для Document Gateway визначаються так само, як і для будь-якої іншої сервісної точки: доступність интерфейсів /v1 та /anthropic, значення затримки p95 без урахування часу обробки моделі на вхідному рівні, коли це можливо, а також показники використання ресурсів за відділами. Ці три графіки дозволяють виявити більшість скарг на проблеми ще до того, як вони стануть темами обговорень у Slack.
Індикатори якості роботи документних шлюзів визначаються так само, як і для будь-яких інших краєвих сервісів: доступність интерфейсів /v1 та /anthropic, показник затримки p95 без урахування часу обробки моделі на вхідному рівні, коли це можливо, а також показники використання ресурсів за відділами. Ці три показники дозволяють виявити більшість скарг на проблеми ще до того, як вони стануть темами обговорень у Slack.