Architektura

Multi-tenancy w prywatnej instancji AI — architektura dla zespołów

Jak obsłużyć 15 zespołów wewnętrznych w jednej prywatnej instancji AI — z separacją danych, kontrolą kosztów per zespół i własnymi promptami dla każdego działu. Pokazujemy architekturę z 4 naszych wdrożeń (180-450 użytkowników), z koncepcją „virtual tenant", routingiem, billingiem i monitoringiem.

⏱ 9 min czytania · 📅 12.03.2026 · 👁 659 wyświetleń

Mała firma robi prywatną instancję AI dla 5 osób. Duża — dla 350. Różnica nie jest tylko ilościowa: pojawia się problem multi-tenancy. Jak dział marketingu nie widzi rozmów działu prawnego? Jak liczyć koszty per dział? Jak handlowiec ma swój prompt, a księgowa swój? Pokazujemy architekturę, którą sprawdziliśmy w 4 wdrożeniach.

Dlaczego nie wystarczy „jeden Claude dla wszystkich"

W firmie 200-osobowej każdy dział ma inne potrzeby:

  • Marketing pisze copy, oczekuje kreatywności i swobody.
  • Prawnicy potrzebują dokładności i citowania źródeł.
  • Księgowość pracuje z liczbami i nie może halucynować.
  • HR ma wrażliwe dane kandydatów.
  • Programiści piszą kod i potrzebują tools (Bash, Read, Edit).

Jeden prompt systemowy nie obsłuży tych potrzeb dobrze. A jeśli pozwolicie każdemu mieć swój — pojawia się chaos zarządzania.

Architektura — koncepcja „virtual tenant"

Nasza architektura ma 4 warstwy:

Warstwa 1 — autoryzacja użytkownika

SSO (typowo Azure AD / Google Workspace) → identyfikacja użytkownika → mapowanie na rolę („marketing", „księgowość", „prawnicy", „programiści", „HR", „management").

Warstwa 2 — virtual tenant (rola)

Każda rola ma własny zestaw: prompt systemowy, dostępne modele (Sonnet/Opus/Bielik), narzędzia (tools), limity kosztu miesięcznego, retencję historii, dostęp do RAG i baz wiedzy.

Warstwa 3 — gateway AI

Centralny router (LiteLLM albo własny napisany w PHP/Python). Egzekwuje uprawnienia, prowadzi accounting, dodaje prompty systemowe, robi logging i audyt.

Warstwa 4 — modele

Backend: API Anthropic/OpenAI/własna inferencja Bielika na GPU. Gateway sam wybiera, gdzie skierować zapytanie.

Schemat YAML — konfiguracja roli

tenants:
  ksiegowosc:
    system_prompt: "Jesteś asystentem księgowym. Pracujesz w PL GAAP."
    allowed_models: [claude-sonnet-4-5, bielik-2-3-11b]
    tools: [Read, search_documents]
    monthly_budget_usd: 240
    rag_collections: [ksef-docs, polskie-przepisy-podatkowe]
    history_retention_days: 90
    sensitive_data_filter: strict

  marketing:
    system_prompt: "Jesteś asystentem marketingu RedAI. Piszesz po polsku."
    allowed_models: [claude-opus-4-6, claude-sonnet-4-5]
    tools: [Read, Write, search_web]
    monthly_budget_usd: 380
    rag_collections: [brand-guidelines, case-studies-public]
    history_retention_days: 365
    sensitive_data_filter: none

Billing — koszt per dział

Każde wywołanie ma metadane: user_id, tenant, model, input_tokens, output_tokens, cost_usd. Dane idą do tabeli `ai_usage_log`. Co miesiąc generujemy raport per dział i obciążamy budżety wewnętrzne.

DziałUżytkownicyWywołań/miesKoszt USD
Marketing128 240312
Programiści2842 180897
Księgowość611 470218
HR43 87094
Prawnicy32 240187

Sensitive data filter — co to robi

W trybie `strict` (HR, prawnicy) gateway przed wysłaniem promptu skanuje treść pod kątem: PESEL, numerów kart kredytowych, NIP-ów osób fizycznych, adresów. Wykryte dane są zastępowane placeholderem (`[PESEL_REDACTED]`) zanim trafią do modelu. Po odpowiedzi modelu — odwrotna mapa (placeholdery wracają do wartości tylko w UI użytkownika, nie w logach).

Monitoring i alerty

  • Dzienny raport kosztu per dział — porównanie do budżetu.
  • Alert na nietypowe wywołania (np. jeden user generuje 30% wywołań działu).
  • Alert na próbę dostępu do funkcji spoza roli.
  • Alert na zapytania zawierające frazy „ignore previous", „forget your instructions" (próba prompt injection).

Skala, którą obsłużyliśmy

Największe wdrożenie: 450 użytkowników, 14 ról, 6 modeli backendowych, 240 000 wywołań miesięcznie. Latencja gateway dodaje 47 ms p50, 180 ms p99. Koszt utrzymania samego gatewaya: ok. 1 200 zł/mies. (mała VM + Redis + Postgres).

Czego nauczyliśmy się ciężko

  • Nie pozwalajcie użytkownikom zmieniać promptu systemowego — w dwóch wdrożeniach złamaliśmy tę regułę, w obu wpadliśmy w prompt injection w 3 tygodnie.
  • Audyt od dnia 1 — log wszystkich wywołań, nie tylko błędów. Audyt compliance to wymóg, nie nice-to-have.
  • Budżety twarde, nie miękkie — gdy dział przekroczy budżet, blokujemy do końca miesiąca. „Miękkie ostrzeżenie" nie działa — zawsze ktoś przekracza dwukrotnie.

Planujecie wdrożenie dla >50 osób? Napiszcie. Pokażemy gateway działający u nas i zaprojektujemy strukturę ról pod Waszą organizację w trakcie 2-godzinnego warsztatu.

Chcesz przetestować, jak AI rozwiąże to u Ciebie?

30 minut rozmowy + pokaz działającego wdrożenia u klienta. Bez NDA.

Umów demo

Może Cię też zainteresować

Newsletter redai

Dostawaj kolejne wpisy do skrzynki

Co dwa tygodnie: nowy case, nowe moduły AI, błędy klientów. Bez spamu.