mirror of
https://gitea.toothfairyai.com/ToothFairyAI/tf_code.git
synced 2026-04-20 15:44:44 +00:00
zen: raise limit
This commit is contained in:
@@ -99,7 +99,13 @@ export async function handler(
|
|||||||
const dataDumper = createDataDumper(sessionId, requestId, projectId)
|
const dataDumper = createDataDumper(sessionId, requestId, projectId)
|
||||||
const trialLimiter = createTrialLimiter(modelInfo.trialProvider, ip)
|
const trialLimiter = createTrialLimiter(modelInfo.trialProvider, ip)
|
||||||
const trialProvider = await trialLimiter?.check()
|
const trialProvider = await trialLimiter?.check()
|
||||||
const rateLimiter = createRateLimiter(modelInfo.allowAnonymous, ip, input.request)
|
const rateLimiter = createRateLimiter(
|
||||||
|
modelInfo.id,
|
||||||
|
modelInfo.allowAnonymous,
|
||||||
|
modelInfo.rateLimit,
|
||||||
|
ip,
|
||||||
|
input.request,
|
||||||
|
)
|
||||||
await rateLimiter?.check()
|
await rateLimiter?.check()
|
||||||
const stickyTracker = createStickyTracker(modelInfo.stickyProvider, sessionId)
|
const stickyTracker = createStickyTracker(modelInfo.stickyProvider, sessionId)
|
||||||
const stickyProvider = await stickyTracker?.get()
|
const stickyProvider = await stickyTracker?.get()
|
||||||
|
|||||||
@@ -6,17 +6,25 @@ import { i18n } from "~/i18n"
|
|||||||
import { localeFromRequest } from "~/lib/language"
|
import { localeFromRequest } from "~/lib/language"
|
||||||
import { Subscription } from "@opencode-ai/console-core/subscription.js"
|
import { Subscription } from "@opencode-ai/console-core/subscription.js"
|
||||||
|
|
||||||
export function createRateLimiter(allowAnonymous: boolean | undefined, rawIp: string, request: Request) {
|
export function createRateLimiter(
|
||||||
|
modelId: string,
|
||||||
|
allowAnonymous: boolean | undefined,
|
||||||
|
rateLimit: number | undefined,
|
||||||
|
rawIp: string,
|
||||||
|
request: Request,
|
||||||
|
) {
|
||||||
if (!allowAnonymous) return
|
if (!allowAnonymous) return
|
||||||
const dict = i18n(localeFromRequest(request))
|
const dict = i18n(localeFromRequest(request))
|
||||||
|
|
||||||
const limits = Subscription.getFreeLimits()
|
const limits = Subscription.getFreeLimits()
|
||||||
const limitValue =
|
const limitValue =
|
||||||
limits.checkHeader && !request.headers.get(limits.checkHeader) ? limits.fallbackValue : limits.dailyRequests
|
limits.checkHeader && !request.headers.get(limits.checkHeader)
|
||||||
|
? limits.fallbackValue
|
||||||
|
: (rateLimit ?? limits.dailyRequests)
|
||||||
|
|
||||||
const ip = !rawIp.length ? "unknown" : rawIp
|
const ip = !rawIp.length ? "unknown" : rawIp
|
||||||
const now = Date.now()
|
const now = Date.now()
|
||||||
const interval = buildYYYYMMDD(now)
|
const interval = rateLimit ? `${buildYYYYMMDD(now)}${modelId.substring(0, 2)}` : buildYYYYMMDD(now)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
track: async () => {
|
track: async () => {
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ export namespace ZenData {
|
|||||||
stickyProvider: z.enum(["strict", "prefer"]).optional(),
|
stickyProvider: z.enum(["strict", "prefer"]).optional(),
|
||||||
trialProvider: z.string().optional(),
|
trialProvider: z.string().optional(),
|
||||||
fallbackProvider: z.string().optional(),
|
fallbackProvider: z.string().optional(),
|
||||||
|
rateLimit: z.number().optional(),
|
||||||
providers: z.array(
|
providers: z.array(
|
||||||
z.object({
|
z.object({
|
||||||
id: z.string(),
|
id: z.string(),
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ export namespace Subscription {
|
|||||||
const LimitsSchema = z.object({
|
const LimitsSchema = z.object({
|
||||||
free: z.object({
|
free: z.object({
|
||||||
promoTokens: z.number().int(),
|
promoTokens: z.number().int(),
|
||||||
|
newDailyRequests: z.number().int(),
|
||||||
dailyRequests: z.number().int(),
|
dailyRequests: z.number().int(),
|
||||||
checkHeader: z.string(),
|
checkHeader: z.string(),
|
||||||
fallbackValue: z.number().int(),
|
fallbackValue: z.number().int(),
|
||||||
|
|||||||
Reference in New Issue
Block a user