mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-16 16:30:15 +01:00
* feat: Enhance loadServiceKey to support stringified JSON input * chore: Update GOOGLE_SERVICE_KEY_FILE_PATH to GOOGLE_SERVICE_KEY_FILE for consistency
54 lines
1.9 KiB
JavaScript
54 lines
1.9 KiB
JavaScript
const path = require('path');
|
|
const { logger } = require('@librechat/data-schemas');
|
|
const { loadServiceKey, isUserProvided } = require('@librechat/api');
|
|
const { EModelEndpoint } = require('librechat-data-provider');
|
|
const { config } = require('./EndpointService');
|
|
|
|
const { openAIApiKey, azureOpenAIApiKey, useAzurePlugins, userProvidedOpenAI, googleKey } = config;
|
|
|
|
/**
|
|
* Load async endpoints and return a configuration object
|
|
* @param {Express.Request} req - The request object
|
|
*/
|
|
async function loadAsyncEndpoints(req) {
|
|
let serviceKey, googleUserProvides;
|
|
|
|
/** Check if GOOGLE_KEY is provided at all(including 'user_provided') */
|
|
const isGoogleKeyProvided = googleKey && googleKey.trim() !== '';
|
|
|
|
if (isGoogleKeyProvided) {
|
|
/** If GOOGLE_KEY is provided, check if it's user_provided */
|
|
googleUserProvides = isUserProvided(googleKey);
|
|
} else {
|
|
/** Only attempt to load service key if GOOGLE_KEY is not provided */
|
|
const serviceKeyPath =
|
|
process.env.GOOGLE_SERVICE_KEY_FILE || path.join(__dirname, '../../..', 'data', 'auth.json');
|
|
|
|
try {
|
|
serviceKey = await loadServiceKey(serviceKeyPath);
|
|
} catch (error) {
|
|
logger.error('Error loading service key', error);
|
|
serviceKey = null;
|
|
}
|
|
}
|
|
|
|
const google = serviceKey || isGoogleKeyProvided ? { userProvide: googleUserProvides } : false;
|
|
|
|
const useAzure = req.app.locals[EModelEndpoint.azureOpenAI]?.plugins;
|
|
const gptPlugins =
|
|
useAzure || openAIApiKey || azureOpenAIApiKey
|
|
? {
|
|
availableAgents: ['classic', 'functions'],
|
|
userProvide: useAzure ? false : userProvidedOpenAI,
|
|
userProvideURL: useAzure
|
|
? false
|
|
: config[EModelEndpoint.openAI]?.userProvideURL ||
|
|
config[EModelEndpoint.azureOpenAI]?.userProvideURL,
|
|
azure: useAzurePlugins || useAzure,
|
|
}
|
|
: false;
|
|
|
|
return { google, gptPlugins };
|
|
}
|
|
|
|
module.exports = loadAsyncEndpoints;
|