6634d236bf
* wip * integrating smart-scrape * integrate smartscrape into llmExtract * wip * smart scrape multiple links * fixes * fix * wip * it worked! * wip. there's a bug on the batchExtract TypeError: Converting circular structure to JSON * wip * retry model * retry models * feat/scrape+json+extract interfaces ready * vertex -> googleapi * fix/transformArrayToObject. required params on schema is still a bug * change model * o3-mini -> gemini * Update extractSmartScrape.ts * sessionId * sessionId * Nick: f-0 start * Update extraction-service-f0.ts * Update types.ts * Nick: * Update queue-worker.ts * Nick: new interface * rename analyzeSchemaAndPrompt -> F0 * refactor: rename agent ID to model in types and extract logic * agent * id->model * id->model * refactor: standardize agent model handling and validation across extraction logic * livecast agent * (feat/f1) sdks (#1459) * feat: add FIRE-1 agent support to Python and JavaScript SDKs Co-Authored-By: hello@sideguide.dev <hello@sideguide.dev> * feat: add FIRE-1 agent support to scrape methods in both SDKs Co-Authored-By: hello@sideguide.dev <hello@sideguide.dev> * feat: add prompt and sessionId to AgentOptions interface Co-Authored-By: hello@sideguide.dev <hello@sideguide.dev> * Update index.ts --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: hello@sideguide.dev <hello@sideguide.dev> Co-authored-by: Nicolas <nicolascamara29@gmail.com> * feat(v1): rate limits * Update types.ts * Update llmExtract.ts * add cost tracking * remove * Update requests.http * fix smart scrape cost calc * log sm cost * fix counts * fix * expose cost tracking * models fix * temp: skipLibcheck * get rid of it * fix ts * dont skip lib check * Update extractSmartScrape.ts * Update queue-worker.ts * Update smartScrape.ts * Update requests.http * fix(rate-limiter): * types: fire-1 refine * bill 150 * fix credits used on crawl * ban from crawl * route cost limit warning * Update generic-ai.ts * genres * Update llmExtract.ts * test server diff * cletu --------- Co-authored-by: rafaelmmiller <150964962+rafaelsideguide@users.noreply.github.com> Co-authored-by: Thomas Kosmas <thomas510111@gmail.com> Co-authored-by: Ademílson F. Tonato <ademilsonft@outlook.com> Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: hello@sideguide.dev <hello@sideguide.dev> Co-authored-by: Gergő Móricz <mo.geryy@gmail.com>
47 lines
1.1 KiB
TypeScript
47 lines
1.1 KiB
TypeScript
import { RateLimiterRedis } from "rate-limiter-flexible";
|
|
import { RateLimiterMode } from "../types";
|
|
import Redis from "ioredis";
|
|
import type { AuthCreditUsageChunk } from "../controllers/v1/types";
|
|
|
|
export const redisRateLimitClient = new Redis(
|
|
process.env.REDIS_RATE_LIMIT_URL!,
|
|
);
|
|
|
|
const createRateLimiter = (keyPrefix, points) =>
|
|
new RateLimiterRedis({
|
|
storeClient: redisRateLimitClient,
|
|
keyPrefix,
|
|
points,
|
|
duration: 60, // Duration in seconds
|
|
});
|
|
|
|
export const testSuiteRateLimiter = new RateLimiterRedis({
|
|
storeClient: redisRateLimitClient,
|
|
keyPrefix: "test-suite",
|
|
points: 10000,
|
|
duration: 60, // Duration in seconds
|
|
});
|
|
|
|
const fallbackRateLimits: AuthCreditUsageChunk["rate_limits"] = {
|
|
crawl: 15,
|
|
scrape: 100,
|
|
search: 100,
|
|
map: 100,
|
|
extract: 100,
|
|
preview: 25,
|
|
extractStatus: 25000,
|
|
crawlStatus: 25000,
|
|
extractAgentPreview: 1,
|
|
scrapeAgentPreview: 5,
|
|
};
|
|
|
|
export function getRateLimiter(
|
|
mode: RateLimiterMode,
|
|
rate_limits: AuthCreditUsageChunk["rate_limits"] | null,
|
|
): RateLimiterRedis {
|
|
return createRateLimiter(
|
|
`${mode}`,
|
|
(rate_limits?.[mode] ?? fallbackRateLimits?.[mode] ?? 500),
|
|
);
|
|
}
|