diff --git a/src/services/openai.ts b/src/services/openai.ts index 4ef1661b..7841e134 100644 --- a/src/services/openai.ts +++ b/src/services/openai.ts @@ -2,8 +2,9 @@ import OpenAI from 'openai'; import { createStreamableValue, render } from 'ai/rsc'; -import { kv } from '@/services/vercel-kv'; +import { kv } from '@vercel/kv'; import { Ratelimit } from '@upstash/ratelimit'; +import { HAS_VERCEL_KV } from '@/site/config'; const RATE_LIMIT_IDENTIFIER = 'openai-image-query'; const RATE_LIMIT_MAX_QUERIES_PER_HOUR = 100; @@ -11,7 +12,7 @@ const RATE_LIMIT_MAX_QUERIES_PER_HOUR = 100; const provider = new OpenAI({ apiKey: process.env.OPENAI_SECRET_KEY }); // Allows 100 requests per hour -const ratelimit = kv +const ratelimit = HAS_VERCEL_KV ? new Ratelimit({ redis: kv, limiter: Ratelimit.slidingWindow(RATE_LIMIT_MAX_QUERIES_PER_HOUR, '1h'), diff --git a/src/services/vercel-kv.ts b/src/services/vercel-kv.ts deleted file mode 100644 index f6ef92e8..00000000 --- a/src/services/vercel-kv.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { createClient } from '@vercel/kv'; - -export const kv = - process.env.REDIS_REST_API_URL && - process.env.REDIS_REST_API_TOKEN - ? createClient({ - url: process.env.REDIS_REST_API_URL, - token: process.env.REDIS_REST_API_TOKEN, - }) - : undefined; diff --git a/src/site/SiteChecklistClient.tsx b/src/site/SiteChecklistClient.tsx index 31f3c185..64a36404 100644 --- a/src/site/SiteChecklistClient.tsx +++ b/src/site/SiteChecklistClient.tsx @@ -286,7 +286,7 @@ export default function SiteChecklistClient({ {renderEnvVars(['OPENAI_SECRET_KEY'])} 0 && - (process.env.REDIS_REST_API_TOKEN ?? '').length > 0; + (process.env.KV_URL ?? '').length > 0; // STORAGE: VERCEL BLOB export const HAS_VERCEL_BLOB_STORAGE =