TokenLimiter
Ez a könyvtár lehetővé teszi a tokenek percenkénti használatának korlátozását több goroutine-on keresztül, opcionális késleltetés támogatásával, amíg a használat a megengedett határértéken belül nem lesz.
Megoldandó probléma
Megoldás
Tipikus felhasználási területek
- API hívások rátakorlátozása konkurens folyamatokon keresztül
- Erőforrás-felhasználás szabályozása elosztott rendszerekben
- Token használat kezelése harmadik féltől származó API integrációkhoz
- API rátakorlátoknak való megfelelés biztosítása nagy áteresztőképességű alkalmazásokban
Felhasználók
- LinkResearchTools
- Egy nagy AI márka
Verzió történet
- Áttekintés és frissítés a legújabb könyvtárakra
- Régebbi rendszerekkel való kompatibilitási problémák javítása
- Áttekintés és frissítés a legújabb könyvtárakra
Licenc feltételek
Funkciók #
- Szálbiztos token korlátozás több goroutine-on keresztül
- Opció a késleltetésre, amíg nem illeszkedik: ha engedélyezve van, és a token használati limit túllépésre kerül, a hívás vár, amíg elegendő token nem lett feldolgozva ahhoz, hogy a használat a határértéken belülre kerüljön
- Hiba a limit túllépésekor: ha nincs engedélyezve a késleltetés, a hívás hibaüzenetet ad vissza, ha a token használati limit túllépésre kerül
- Átlagos használat nyomon követése: az átlagos token használat nyomon követése egy sor ponton keresztül (pl. utolsó 100 használat)
- Utolsó perc lekérése: metódus az utolsó perc lekérésére, amelyet tokenek hozzáadására használtak
Korlátozások #
Ez a TokenLimiter csak egyetlen gépen működik. Ha egy klaszter több csomópontján futtatják, a token limit túlléphető. Ennek egy lehetséges megoldása, ha minden csomópontnak a Token Per Minute (TPM) kvóta egy részét adjuk. Ez akkor működne, ha tudom, hogy minden csomópont hasonló kihasználtsággal fog rendelkezni. Azonban, ha egy gép kevesebb kérést kezel, és nem üzemel, annak kvótája kihasználatlan marad, rontva a klaszter teljesítményét. A megfelelő megoldás egy TokenLimiter klaszter implementálása lenne, amely dinamikusan kezeli a token limitek elosztását gépenként.
Miben különbözik a Rate Limitertől #
Bár a rate limiterek és a TokenLimiter egyaránt korlátozzák az erőforrások használatát valamilyen módon, vannak kulcsfontosságú különbségek. A rate limiterek jellemzően a kérések számát korlátozzák egy adott időtartamban, és gyakran elszigetelten kezelik a párhuzamosságot. Az általam készített TokenLimiter kifejezetten token-alapú rendszerekre (pl. API tokenek) lett tervezve, ahol minden művelet különböző mennyiségű tokent fogyaszthat, és szálbiztos kezelést biztosít a párhuzamos műveletek között.