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.

71 lines (52 loc) 2.47 kB
import { contextCachingModels, thinkingWithToolClaudeModels } from '@/const/models'; import { DEFAULT_AGENT_CHAT_CONFIG, DEFAULT_AGENT_SEARCH_FC_MODEL } from '@/const/settings'; import { AgentStoreState } from '@/store/agent/initialState'; import { LobeAgentChatConfig } from '@/types/agent'; import { currentAgentConfig } from './agent'; export const currentAgentChatConfig = (s: AgentStoreState): LobeAgentChatConfig => currentAgentConfig(s).chatConfig || {}; const agentSearchMode = (s: AgentStoreState) => currentAgentChatConfig(s).searchMode || 'off'; const isAgentEnableSearch = (s: AgentStoreState) => agentSearchMode(s) !== 'off'; const useModelBuiltinSearch = (s: AgentStoreState) => currentAgentChatConfig(s).useModelBuiltinSearch; const searchFCModel = (s: AgentStoreState) => currentAgentChatConfig(s).searchFCModel || DEFAULT_AGENT_SEARCH_FC_MODEL; const enableHistoryCount = (s: AgentStoreState) => { const config = currentAgentConfig(s); const chatConfig = currentAgentChatConfig(s); // 如果开启了上下文缓存,且当前模型类型匹配,则不开启历史记录 const enableContextCaching = !chatConfig.disableContextCaching; if (enableContextCaching && contextCachingModels.has(config.model)) return false; // 当开启搜索时,针对 claude 3.7 sonnet 模型不开启历史记录 const enableSearch = isAgentEnableSearch(s); if (enableSearch && thinkingWithToolClaudeModels.has(config.model)) return false; return chatConfig.enableHistoryCount; }; const historyCount = (s: AgentStoreState): number => { const chatConfig = currentAgentChatConfig(s); return chatConfig.historyCount ?? (DEFAULT_AGENT_CHAT_CONFIG.historyCount as number); // historyCount 为 0 即不携带历史消息 }; const displayMode = (s: AgentStoreState) => { const chatConfig = currentAgentChatConfig(s); return chatConfig.displayMode || 'chat'; }; const enableHistoryDivider = (historyLength: number, currentIndex: number) => (s: AgentStoreState) => { const config = currentAgentChatConfig(s); return ( enableHistoryCount(s) && historyLength > (config.historyCount ?? 0) && config.historyCount === historyLength - currentIndex ); }; export const agentChatConfigSelectors = { agentSearchMode, currentChatConfig: currentAgentChatConfig, displayMode, enableHistoryCount, enableHistoryDivider, historyCount, isAgentEnableSearch, searchFCModel, useModelBuiltinSearch, };