UNPKG

@lobehub/chat

Version:

Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.

49 lines (41 loc) 1.7 kB
import { UserStore } from '@/store/user'; import { AWSBedrockKeyVault, AzureOpenAIKeyVault, GlobalLLMProviderKey, OpenAICompatibleKeyVault, UserKeyVaults, } from '@/types/user/settings'; import { currentSettings } from '../../settings/selectors/settings'; export const keyVaultsSettings = (s: UserStore): UserKeyVaults => currentSettings(s).keyVaults || {}; const openAIConfig = (s: UserStore) => keyVaultsSettings(s).openai || {}; const bedrockConfig = (s: UserStore) => keyVaultsSettings(s).bedrock || {}; const ollamaConfig = (s: UserStore) => keyVaultsSettings(s).ollama || {}; const azureConfig = (s: UserStore) => keyVaultsSettings(s).azure || {}; const cloudflareConfig = (s: UserStore) => keyVaultsSettings(s).cloudflare || {}; const getVaultByProvider = (provider: GlobalLLMProviderKey) => (s: UserStore) => (keyVaultsSettings(s)[provider] || {}) as OpenAICompatibleKeyVault & AzureOpenAIKeyVault & AWSBedrockKeyVault; const isProviderEndpointNotEmpty = (provider: string) => (s: UserStore) => { const vault = getVaultByProvider(provider as GlobalLLMProviderKey)(s); return !!vault?.baseURL || !!vault?.endpoint; }; const isProviderApiKeyNotEmpty = (provider: string) => (s: UserStore) => { const vault = getVaultByProvider(provider as GlobalLLMProviderKey)(s); return !!vault?.apiKey || !!vault?.accessKeyId || !!vault?.secretAccessKey; }; const password = (s: UserStore) => keyVaultsSettings(s).password || ''; export const keyVaultsConfigSelectors = { azureConfig, bedrockConfig, cloudflareConfig, getVaultByProvider, isProviderApiKeyNotEmpty, isProviderEndpointNotEmpty, keyVaultsSettings, ollamaConfig, openAIConfig, password, };