AI Gateway на Rust
Rust-шлюз, который даёт приложению один знакомый API и сам выбирает, где выполнить запрошенную модель. Он разделяет изменения аккаунта, живой квоты, сетевого пути и версии сервиса, поэтому приложение получает нужную модель или ясную ошибку без потери контекста сессии.
Один знакомый вход в формате OpenAI или Anthropic для запрошенной модели вместо отдельной интеграции с каждым провайдером.
Шлюз выбирает аккаунт после проверки живой квоты, сетевого пути и новой версии сервиса. Недоступная модель обозначается явно, а не подменяется.
Приложение получает ясную ошибку. Контекст сессии отделён от причины отказа, а открытый поток завершается на начавшей его версии.
Как запрос проходит через шлюз
Без текстов запросов, аккаунтов, ключей, приватного трафика и закрытого исходного кода.
- API приложенияПриложение отправляет запрос в формате OpenAI или Anthropic вместо отдельной интеграции с каждым провайдером.
- Адаптер провайдераМодель, сообщения, инструменты и потоковые события переводятся в протокол выбранного провайдера.
- Где выполнить запросПоддержка модели, доступ аккаунта, квота и закреплённый сетевой путь проверяются вместе.
- Продолжение сессииКонтекст сессии сохраняется, а сбои квоты, сети и версии сервиса восстанавливаются разными способами.
Приложение получает один вход
Приложение работает с ним как с обычным API: отправляет знакомый запрос и получает ответ нужной модели тем же способом. Внутри шлюз подбирает провайдера и аккаунт, переводит формат запроса и сохраняет контекст, если условия меняются.
Форматы провайдеров, доступ аккаунтов и живая квота остаются внутри Rust-шлюза, а не расползаются по каждой интеграции приложения.
Путь одного запроса
- Один вход для приложения: Приложение отправляет привычный запрос OpenAI или Anthropic, не перестраивая интеграцию под каждого провайдера.
- Перевод запроса: Сообщения, инструменты, параметры рассуждения и потоковые события преобразуются в реальный протокол провайдера, а не считаются одинаковыми для всех API.
- Где выполнить запрос: До запуска проверяются запрошенная модель, права аккаунта, живая квота и назначенный сетевой путь. Недоступная модель обозначается явно, а не подменяется молча.
- Сессия продолжается: Контекст сессии сохраняется между запросами и после рестарта. История инструментов продолжает ту же работу, а не становится новым диалогом.
- Долгий ответ и смена версии: Одно только время не обрывает активную генерацию. Новая версия должна завершить реальный ответ модели до перехода нового трафика, а открытые соединения заканчивают работу там, где начались.