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.

56 lines (49 loc) 1.98 kB
import { getAgentStoreState } from '@/store/agent'; import { agentChatConfigSelectors } from '@/store/agent/selectors'; import { getAiInfraStoreState } from '@/store/aiInfra'; import { aiModelSelectors, aiProviderSelectors } from '@/store/aiInfra/selectors'; /** * Search configuration result */ export interface SearchConfig { /** Whether search is enabled in chat config */ enabledSearch: boolean; /** Whether model has builtin search capability */ isModelHasBuiltinSearch: boolean; /** Whether provider has builtin search capability */ isProviderHasBuiltinSearch: boolean; /** Whether to use application's builtin search tool */ useApplicationBuiltinSearchTool: boolean; /** Whether to use model's builtin search */ useModelSearch: boolean; } /** * Get search configuration for given model and provider * This centralizes the search logic that was duplicated across multiple places */ export const getSearchConfig = (model: string, provider: string): SearchConfig => { const chatConfig = agentChatConfigSelectors.currentChatConfig(getAgentStoreState()); const aiInfraStoreState = getAiInfraStoreState(); const enabledSearch = chatConfig.searchMode !== 'off'; const isProviderHasBuiltinSearch = aiProviderSelectors.isProviderHasBuiltinSearch(provider)(aiInfraStoreState); const isModelHasBuiltinSearch = aiModelSelectors.isModelHasBuiltinSearch( model, provider, )(aiInfraStoreState); const isModelBuiltinSearchInternal = aiModelSelectors.isModelBuiltinSearchInternal( model, provider!, )(aiInfraStoreState); const useModelSearch = ((isProviderHasBuiltinSearch || isModelHasBuiltinSearch) && chatConfig.useModelBuiltinSearch) || isModelBuiltinSearchInternal || false; const useApplicationBuiltinSearchTool = enabledSearch && !useModelSearch; return { enabledSearch, isModelHasBuiltinSearch, isProviderHasBuiltinSearch, useApplicationBuiltinSearchTool, useModelSearch, }; };