diff --git a/src/renderer/src/components/MaxContextCount.tsx b/src/renderer/src/components/MaxContextCount.tsx new file mode 100644 index 0000000000..be9c9f293c --- /dev/null +++ b/src/renderer/src/components/MaxContextCount.tsx @@ -0,0 +1,17 @@ +import { MAX_CONTEXT_COUNT } from '@renderer/config/constant' +import { Infinity as InfinityIcon } from 'lucide-react' +import { CSSProperties } from 'react' + +type Props = { + maxContext: number + style?: CSSProperties + size?: number +} + +export default function MaxContextCount({ maxContext, style, size = 14 }: Props) { + return maxContext === MAX_CONTEXT_COUNT ? ( + + ) : ( + {maxContext.toString()} + ) +} diff --git a/src/renderer/src/config/constant.ts b/src/renderer/src/config/constant.ts index 80e2be8a34..32183072dc 100644 --- a/src/renderer/src/config/constant.ts +++ b/src/renderer/src/config/constant.ts @@ -33,3 +33,6 @@ export const THEME_COLOR_PRESETS = [ '#0EA5E9', // Sky Blue '#0284C7' // Light Blue ] + +export const MAX_CONTEXT_COUNT = 100 +export const UNLIMITED_CONTEXT_COUNT = 100000 diff --git a/src/renderer/src/pages/home/Inputbar/TokenCount.tsx b/src/renderer/src/pages/home/Inputbar/TokenCount.tsx index bad0729b8e..5c91ab9841 100644 --- a/src/renderer/src/pages/home/Inputbar/TokenCount.tsx +++ b/src/renderer/src/pages/home/Inputbar/TokenCount.tsx @@ -1,5 +1,6 @@ import { ArrowUpOutlined, MenuOutlined } from '@ant-design/icons' import { HStack, VStack } from '@renderer/components/Layout' +import MaxContextCount from '@renderer/components/MaxContextCount' import { useSettings } from '@renderer/hooks/useSettings' import { Divider, Popover } from 'antd' import { FC } from 'react' @@ -21,17 +22,17 @@ const TokenCount: FC = ({ estimateTokenCount, inputTokenCount, contextCou return null } - const formatMaxCount = (max: number) => { - return max.toString() - } - const PopoverContent = () => { return ( {t('chat.input.context_count.tip')} - {contextCount.current} / {contextCount.max} + + {contextCount.current} + / + + @@ -46,10 +47,20 @@ const TokenCount: FC = ({ estimateTokenCount, inputTokenCount, contextCou return ( - {contextCount.current} / {formatMaxCount(contextCount.max)} - - - {inputTokenCount} / {estimateTokenCount} + + + {contextCount.current} + / + + + + + + {inputTokenCount} + / + {estimateTokenCount} + + ) @@ -80,4 +91,9 @@ const Text = styled.div` color: var(--color-text-1); ` +const SlashSeparatorSpan = styled.span` + margin-left: 2px; + margin-right: 2px; +` + export default TokenCount diff --git a/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx b/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx index 7017b02890..0efdaa1aa5 100644 --- a/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx +++ b/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx @@ -4,7 +4,7 @@ import EditableNumber from '@renderer/components/EditableNumber' import { HStack } from '@renderer/components/Layout' import SelectModelPopup from '@renderer/components/Popups/SelectModelPopup' import Selector from '@renderer/components/Selector' -import { DEFAULT_CONTEXTCOUNT, DEFAULT_TEMPERATURE } from '@renderer/config/constant' +import { DEFAULT_CONTEXTCOUNT, DEFAULT_TEMPERATURE, MAX_CONTEXT_COUNT } from '@renderer/config/constant' import { SettingRow } from '@renderer/pages/settings' import { Assistant, AssistantSettingCustomParameters, AssistantSettings } from '@renderer/types' import { modalConfirm } from '@renderer/utils' @@ -312,7 +312,7 @@ const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateA = ({ assistant, updateAssistant, updateA } return { - contextCount: contextCount === 100 ? 100000 : contextCount, + contextCount: contextCount === MAX_CONTEXT_COUNT ? UNLIMITED_CONTEXT_COUNT : contextCount, temperature: assistant?.settings?.temperature ?? DEFAULT_TEMPERATURE, topP: assistant?.settings?.topP ?? 1, enableMaxTokens: assistant?.settings?.enableMaxTokens ?? false, diff --git a/src/renderer/src/services/MessagesService.ts b/src/renderer/src/services/MessagesService.ts index 72050d2e76..615103a11d 100644 --- a/src/renderer/src/services/MessagesService.ts +++ b/src/renderer/src/services/MessagesService.ts @@ -1,5 +1,5 @@ import SearchPopup from '@renderer/components/Popups/SearchPopup' -import { DEFAULT_CONTEXTCOUNT } from '@renderer/config/constant' +import { DEFAULT_CONTEXTCOUNT, MAX_CONTEXT_COUNT, UNLIMITED_CONTEXT_COUNT } from '@renderer/config/constant' import { getTopicById } from '@renderer/hooks/useTopic' import i18n from '@renderer/i18n' import { fetchMessagesSummary } from '@renderer/services/ApiService' @@ -41,7 +41,7 @@ export { export function getContextCount(assistant: Assistant, messages: Message[]) { const rawContextCount = assistant?.settings?.contextCount ?? DEFAULT_CONTEXTCOUNT - const maxContextCount = rawContextCount === 100 ? 100000 : rawContextCount + const maxContextCount = rawContextCount === MAX_CONTEXT_COUNT ? UNLIMITED_CONTEXT_COUNT : rawContextCount const _messages = takeRight(messages, maxContextCount)