Gå til innhold

ADR-002: Custom token bucket rate limiting⚓︎

Kontekst⚓︎

Google Gemini API har begrensninger på tokens per minutt (TPM) og samtidige foresporsler. Med flere brukere som chatter og analyser som kjorer i bakgrunnen, trenger vi a sikre at vi holder oss innenfor kvotene.

Beslutning⚓︎

Vi implementerer en egen ChatRequestQueue med token bucket-algoritme: - 1 000 000 tokens per minutt - Maks 10 samtidige foresporsler (SemaphoreSlim) - Token-estimering: (inputChars / 4) + 5000 buffer - System.Threading.Channels for unbounded foresporselsko

Alternativ vurdert⚓︎

ASP.NET Core innebygd rate limiting: Opererer pa HTTP-foresporselsnivaet, ikke token-niva. Passer ikke for LLM-APIer der kostnaden varierer dramatisk per foresporsler.

Konsekvenser⚓︎

Positive: - Forhindrer API-kvoteoverskridelser - Foresporsler koes i stedet for a feile

Avveininger: - Token-estimering er grov (chars/4) — kan over- eller underestimere - Hele budsjett refylles hvert minutt (ikke glidende vindu) - Forelopig kommentert ut i ServiceConfiguration.cs — ikke aktivt i bruk