Как LLM-вызовы из BloodGPT-сервисов доходят до провайдеров (OpenAI / Google Gemini). Сейчас — mixed topology: разные сервисы используют разные пути, и есть env-split (stage vs prod).
Эта страница — про routing topology. Лимиты и тарифы по провайдерам — отдельно: vertex-gemini-quotas, openai-quotas.
TL;DR
- 2 proxy в нашей системе:
bifrost-proxy(stage-only сейчас),litellm-proxy(stage + prod). Оба — OpenAI-compatible API gateway, routing к разным providers. - Большинство сервисов на prod EU ходят через
litellm-proxy→ Vertex AI (vertex_project: bg-prod-general). HIPAA-OK. - Исключение —
blood-gpt-dotnet(.NET API), который bypass’ит proxy и ходит напрямую в AI Studio (https://generativelanguage.googleapis.com) с API key. Это active compliance gap; миграция в общий routing черезbifrost/litellm— часть что-мигрирует § «LLM access». - Bifrost — только на staging, testbed для advanced features (provider keys management). На prod пока не задеплоен.
Proxies
litellm-proxy (berriai/litellm)
OpenAI-compatible API gateway. Принимает OpenAI-formatted requests, проксирует к назначенному provider/model. Поддерживает routing strategies, retries, request transforms.
| Stage | Prod EU | |
|---|---|---|
| Namespace | common-litellm-proxy | common-litellm-proxy |
| Branch | bloodgpt-stage-applications | bloodgpt-prod-applications |
| Path в repo | common/litellm-proxy/values.yaml | europe-west4/common/litellm-proxy/values.yaml |
vertex_project | bg-stage-general | bg-prod-general |
vertex_location | europe-west4 / global | europe-west4 / global |
| Service Account | litellm-proxy@bg-stage-general.iam.gserviceaccount.com | (likely litellm-proxy@bg-prod-general..., не проверено) |
Routed models (consistent на stage и prod): Gemini 2.5 Pro/Flash/Flash-Lite (europe-west4 region), Gemini 3.x Pro/Flash/Flash-Lite preview (global region), OpenAI GPT-5.2, GPT-5.2-codex, o3, o3-mini, GPT-4.1.
bifrost-proxy (maximhq/bifrost)
OpenAI-compatible LLM proxy от Maxim. Аналог litellm но с другой архитектурой — поддерживает provider keys management, custom plugins (см. bifrost-custom-plugin-loading, bifrost-mock-strategy).
| Stage | Prod EU | |
|---|---|---|
| Namespace | common-bifrost-proxy | НЕ задеплоен |
| Branch path | common/bifrost-proxy/values.yaml | — |
project_id | bg-stage-general | — |
| Providers | OpenAI + Vertex (vertex-eu + vertex-global keys) | — |
| Service Account | litellm-proxy@bg-stage-general.iam.gserviceaccount.com (shared с litellm) | — |
Status: testbed для будущего migration на prod. Конфигурирован с двумя vertex keys (eu region для 2.5, global region для 3.x).
Direct (no proxy) — единичный случай
blood-gpt-dotnet (.NET API backend):
# europe-west4/common/blood-gpt-dotnet/values.yaml (prod EU)
Gemini__BaseUrl: "https://generativelanguage.googleapis.com" # ← AI Studio (active)
# Gemini__BaseUrl: "https://aiplatform.googleapis.com" # ← Vertex (prepared comment-out)Auth: API key (GCP_APP_BLOOD_GPT_DOTNET_GEMINI_API_KEY в 1password). Migration plan на общий proxy-роутинг — часть что-мигрирует § «LLM access».
Service routing — prod EU (bloodgpt-prod-applications)
| Service | Routing | Provider | Status |
|---|---|---|---|
| blood-gpt-dotnet (.NET backend) | Direct API call | AI Studio (generativelanguage.googleapis.com) | Compliance gap — миграция в legacy-stack-migration |
| analysis-worker | → litellm-proxy | Vertex AI (bg-prod-general) | OK |
| algo-hub | → litellm-proxy | Vertex AI (bg-prod-general) | OK |
| recommendations-portal | → litellm-proxy | Vertex AI (bg-prod-general) | OK |
| b2c-dashboard | → litellm-proxy | Vertex AI (bg-prod-general) | OK |
| patient-portal | → litellm-proxy | Vertex AI (bg-prod-general) | OK |
| b2b-api / b2b-platform | (TBD — не проверено в этом проходе) |
Service routing — stage (bloodgpt-stage-applications)
Похожая структура, но с двумя proxy. Что-то идёт через bifrost (testbed), что-то через litellm. vertex_project указывает на bg-stage-general. Детальный map — не проверен в этом проходе, требует отдельной верификации если будет нужен.
Billing implications
- Prod billing (
BloodGPT Billing/017EE6-A9042C-3BFCA4): видимый Gemini API spend = .NET API direct AI Studio calls (на 12 мая 2026 — €1,044 за 11 дней). Vertex AI line при этом отсутствует в breakdown, потому что Node.js сервисы тратят наvertex_project: bg-prod-general— это спенд под этим billing, но возможно offset credits или не выделен в top-line view. - Stage billing (отдельный аккаунт): €1,307 Vertex AI + €3,746 Gemini API за 30 дней на 12 мая 2026. Vertex spend растёт +66% MoM — миграция стейджа активна.
Capacity baseline
Historical reference point — оценка target throughput от Ильдара 12 марта 2026 в #ai-engineering thread “ключи для ЛЛМ и лимиты”:
| Метрика | Значение | Источник |
|---|---|---|
| Target throughput | 100 tests/min | 15K RPM / 150 observations per test |
| Production rate | 144K tests/day = 45M tests/month | full RPM utilisation |
| Effective rate (TPM-bound, на тот момент) | ~40 tests/min | 1M tokens/min observed |
| OpenAI tier на тот момент | 15K RPM / 40M TPM | как baseline |
Bottleneck class: TPM-limited, не RPM-limited (по факту 40 vs возможные 100 tests/min).
Из того же треда — findings про routing strategy которые остались актуальны:
- Shared TPM across model families (OpenAI docs): «Some model families have shared rate limits. All calls to any model in the given shared limit list will count towards that 3.5M.» Failover
gpt-5→gpt-5-miniне обходит лимит если они share TPM. Применимо к нашей failover-стратегии: fallback должен быть на разное семейство, не разный размер той же модели. - Per-project key multiplication (гипотеза, не decision’нута): если limit per-project — можно умножить выдав ключи с разных проектов. Technically возможно для OpenAI; для Vertex Standard PayGo не работает (limit на org-уровне через spend, см. standard-paygo—тиры-по-расходу).
- Quick wins на 12 марта (Артём в том же треде):
- Перейти на Vertex — частично сделано (Node.js services через litellm-proxy, .NET pending — см. legacy-stack-migration § «LLM access»)
- Запросить повышенные лимиты у Сергея/Юры — сделано, Custom Tier denied 7 апреля (что-не-сработало)
- Локальные индивидуальные ключи — в работе на тот момент
Local dev
В корне репозитория /home/i/JOBS/BloodGPT/litellm-config.yaml (плюс .dev.yaml, .fast.yaml) — local litellm config для разработки. Использует gemini/ provider + GEMINI_API_KEY (AI Studio routing). Только для dev — не запускается в prod.
Failure modes / Открытые вопросы
- Bifrost prod deployment timeline — план есть, дата не зафиксирована
- b2b-api / b2b-platform routing — не проверено в этой сессии, оставлено как TBD
- Stage litellm-proxy auth: SA на bg-stage-general для Vertex calls — это правильное routing для стейджа, но cross-env nuance (если на стейдже билдится prod-image, не запутаемся ли с проектом)
Связанные решения
- legacy-stack-migration — общая миграция legacy .NET / Python стэков (включая
.NET → bifrost/Vertexrouting’овый аспект) - bifrost-custom-plugin-loading — кастомные plugins для bifrost
- bifrost-mock-strategy — mocking strategy для bifrost
Связано
- vertex-gemini-quotas — Vertex AI Gemini тарифы / тиры / 429
- openai-quotas — OpenAI тиры (TBD)
- bifrost — общая страница про bifrost product