From 864529cbf61925f3b85cfa698613c766efd93436 Mon Sep 17 00:00:00 2001 From: Dean-YZG Date: Mon, 6 May 2024 21:14:53 +0800 Subject: [PATCH] feat: googleApiKey & anthropicApiKey support setting multi-key --- app/config/server.ts | 38 +++++++++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 11 deletions(-) diff --git a/app/config/server.ts b/app/config/server.ts index edf58aaff3f..b5d754ddedd 100644 --- a/app/config/server.ts +++ b/app/config/server.ts @@ -51,6 +51,22 @@ const ACCESS_CODES = (function getAccessCodes(): Set { } })(); +function getApiKey(keys?: string) { + const apiKeyEnvVar = keys ?? ""; + const apiKeys = apiKeyEnvVar.split(",").map((v) => v.trim()); + const randomIndex = Math.floor(Math.random() * apiKeys.length); + const apiKey = apiKeys[randomIndex]; + if (apiKey) { + console.log( + `[Server Config] using ${randomIndex + 1} of ${ + apiKeys.length + } api key - ${apiKey}`, + ); + } + + return apiKey; +} + export const getServerSideConfig = () => { if (typeof process === "undefined") { throw Error( @@ -74,13 +90,13 @@ export const getServerSideConfig = () => { const isGoogle = !!process.env.GOOGLE_API_KEY; const isAnthropic = !!process.env.ANTHROPIC_API_KEY; - const apiKeyEnvVar = process.env.OPENAI_API_KEY ?? ""; - const apiKeys = apiKeyEnvVar.split(",").map((v) => v.trim()); - const randomIndex = Math.floor(Math.random() * apiKeys.length); - const apiKey = apiKeys[randomIndex]; - console.log( - `[Server Config] using ${randomIndex + 1} of ${apiKeys.length} api key`, - ); + // const apiKeyEnvVar = process.env.OPENAI_API_KEY ?? ""; + // const apiKeys = apiKeyEnvVar.split(",").map((v) => v.trim()); + // const randomIndex = Math.floor(Math.random() * apiKeys.length); + // const apiKey = apiKeys[randomIndex]; + // console.log( + // `[Server Config] using ${randomIndex + 1} of ${apiKeys.length} api key`, + // ); const allowedWebDevEndpoints = ( process.env.WHITE_WEBDEV_ENDPOINTS ?? "" @@ -88,20 +104,20 @@ export const getServerSideConfig = () => { return { baseUrl: process.env.BASE_URL, - apiKey, + apiKey: getApiKey(process.env.OPENAI_API_KEY), openaiOrgId: process.env.OPENAI_ORG_ID, isAzure, azureUrl: process.env.AZURE_URL, - azureApiKey: process.env.AZURE_API_KEY, + azureApiKey: getApiKey(process.env.AZURE_API_KEY), azureApiVersion: process.env.AZURE_API_VERSION, isGoogle, - googleApiKey: process.env.GOOGLE_API_KEY, + googleApiKey: getApiKey(process.env.GOOGLE_API_KEY), googleUrl: process.env.GOOGLE_URL, isAnthropic, - anthropicApiKey: process.env.ANTHROPIC_API_KEY, + anthropicApiKey: getApiKey(process.env.ANTHROPIC_API_KEY), anthropicApiVersion: process.env.ANTHROPIC_API_VERSION, anthropicUrl: process.env.ANTHROPIC_URL,