refactor: Speed up Config fetching and Setup Config Groundwork 👷🚧 (#1297)

* refactor: move endpoint services to own directory

* refactor: make endpointconfig handling more concise, separate logic, and cache result for subsequent serving

* refactor: ModelController gets same treatment as EndpointController, draft OverrideController

* wip: flesh out override controller more to return real value

* refactor: client/api changes in anticipation of override
This commit is contained in:
Danny Avila 2023-12-06 19:36:57 -05:00 committed by GitHub
parent 9b2359fc27
commit 0bae503a0a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 405 additions and 138 deletions

View file

@ -1,35 +1,17 @@
const { EModelEndpoint } = require('../routes/endpoints/schemas');
const {
getOpenAIModels,
getChatGPTBrowserModels,
getAnthropicModels,
} = require('../services/ModelService');
const { useAzurePlugins } = require('../services/EndpointService').config;
const fitlerAssistantModels = (str) => {
return /gpt-4|gpt-3\\.5/i.test(str) && !/vision|instruct/i.test(str);
};
const { getLogStores } = require('~/cache');
const { CacheKeys } = require('~/common/enums');
const { loadDefaultModels } = require('~/server/services/Config');
async function modelController(req, res) {
const openAI = await getOpenAIModels();
const azureOpenAI = await getOpenAIModels({ azure: true });
const gptPlugins = await getOpenAIModels({ azure: useAzurePlugins, plugins: true });
const chatGPTBrowser = getChatGPTBrowserModels();
const anthropic = getAnthropicModels();
res.send(
JSON.stringify({
[EModelEndpoint.openAI]: openAI,
[EModelEndpoint.azureOpenAI]: azureOpenAI,
[EModelEndpoint.assistant]: openAI.filter(fitlerAssistantModels),
[EModelEndpoint.google]: ['chat-bison', 'text-bison', 'codechat-bison'],
[EModelEndpoint.bingAI]: ['BingAI', 'Sydney'],
[EModelEndpoint.chatGPTBrowser]: chatGPTBrowser,
[EModelEndpoint.gptPlugins]: gptPlugins,
[EModelEndpoint.anthropic]: anthropic,
}),
);
const cache = getLogStores(CacheKeys.CONFIG);
let modelConfig = await cache.get(CacheKeys.MODELS_CONFIG);
if (modelConfig) {
res.send(modelConfig);
return;
}
modelConfig = await loadDefaultModels();
await cache.set(CacheKeys.MODELS_CONFIG, modelConfig);
res.send(modelConfig);
}
module.exports = modelController;