LibreChat / client /src /utils /getDefaultEndpoint.ts
N.Achyuth Reddy
Upload 683 files
9705b6c
import type { TConversation, TPreset, TEndpointsConfig } from 'librechat-data-provider';
import getLocalStorageItems from './getLocalStorageItems';
type TConvoSetup = Partial<TPreset> | Partial<TConversation>;
type TDefaultEndpoint = { convoSetup: TConvoSetup; endpointsConfig: TEndpointsConfig };
const defaultEndpoints = [
'openAI',
'azureOpenAI',
'bingAI',
'chatGPTBrowser',
'gptPlugins',
'google',
'anthropic',
];
const getEndpointFromSetup = (convoSetup: TConvoSetup, endpointsConfig: TEndpointsConfig) => {
const { endpoint: targetEndpoint } = convoSetup || {};
if (targetEndpoint && endpointsConfig?.[targetEndpoint]) {
return targetEndpoint;
} else if (targetEndpoint) {
console.warn(`Illegal target endpoint ${targetEndpoint} ${endpointsConfig}`);
}
return null;
};
const getEndpointFromLocalStorage = (endpointsConfig: TEndpointsConfig) => {
try {
const { lastConversationSetup } = getLocalStorageItems();
const { endpoint } = lastConversationSetup;
const isDefaultConfig = Object.values(endpointsConfig ?? {})?.every((value) => !value);
if (isDefaultConfig && endpoint) {
return endpoint;
}
if (isDefaultConfig && endpoint) {
return endpoint;
}
return endpoint && endpointsConfig[endpoint] ? endpoint : null;
} catch (error) {
console.error(error);
return null;
}
};
const getDefinedEndpoint = (endpointsConfig: TEndpointsConfig) => {
return defaultEndpoints.find((e) => Object.hasOwn(endpointsConfig ?? {}, e)) ?? 'openAI';
};
const getDefaultEndpoint = ({ convoSetup, endpointsConfig }: TDefaultEndpoint) => {
return (
getEndpointFromSetup(convoSetup, endpointsConfig) ||
getEndpointFromLocalStorage(endpointsConfig) ||
getDefinedEndpoint(endpointsConfig)
);
};
export default getDefaultEndpoint;