UNPKG

i18n-ai-translate

Version:

Use LLMs to translate your i18n JSON to any language.

32 lines (31 loc) 1.15 kB
import RateLimiter from "./rate_limiter"; /** * Usage pattern * ------------- * await limiter.wait(estimatedTokens); // BEFORE the request * ... make API request ... * limiter.apiCalled(actualTokens); // AFTER the request */ export default class TokenRateLimiter implements RateLimiter { private lastAPICall; private readonly delayBetweenCallsMs; private readonly maxTokensPerMinute; private windowStart; private tokensThisWindow; private readonly verboseLogging; constructor(delayBetweenCallsMs: number, verboseLogging: boolean); /** * Call immediately **after** a successful request. * @param tokenCount Prompt + completion tokens the request actually consumed */ apiCalled(tokenCount: number): void; /** * Call immediately **before** you send a request. * It sleeps long enough so that: * • you do not exceed 200 000 tokens in any 60 s window * • you respect `delayBetweenCallsMs` (if you were using that before) * * @param tokenCount Expected token usage for the upcoming request */ wait(tokenCount: number): Promise<void>; }