diff --git a/src/renderer/src/components/EditableNumber/index.tsx b/src/renderer/src/components/EditableNumber/index.tsx index 220cf5fb57..a428dfc04c 100644 --- a/src/renderer/src/components/EditableNumber/index.tsx +++ b/src/renderer/src/components/EditableNumber/index.tsx @@ -19,6 +19,7 @@ export interface EditableNumberProps { suffix?: string prefix?: string align?: 'start' | 'center' | 'end' + formatter?: (value: number | null) => string | number } const EditableNumber: FC = ({ @@ -35,7 +36,8 @@ const EditableNumber: FC = ({ style, className, size = 'middle', - align = 'end' + align = 'end', + formatter }) => { const [isEditing, setIsEditing] = useState(false) const [inputValue, setInputValue] = useState(value) @@ -89,7 +91,7 @@ const EditableNumber: FC = ({ changeOnBlur={changeOnBlur} /> - {value ?? placeholder} + {formatter ? formatter(value ?? null) : (value ?? placeholder)} ) diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index 3a47ff3070..a416aeb005 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -838,7 +838,7 @@ "label": "Context", "tip": "The number of previous messages to keep in the context." }, - "max": "Max", + "max": "Unlimited", "max_tokens": { "confirm": "Set max tokens", "confirm_content": "Set the maximum number of tokens the model can generate. Need to consider the context limit of the model, otherwise an error will be reported", @@ -1051,6 +1051,7 @@ "copied": "Copied", "copy": "Copy", "copy_failed": "Copy failed", + "current": "Current", "cut": "Cut", "default": "Default", "delete": "Delete", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index de528ee8ab..b45f4d772d 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -1051,6 +1051,7 @@ "copied": "已复制", "copy": "复制", "copy_failed": "复制失败", + "current": "当前", "cut": "剪切", "default": "默认", "delete": "删除", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index 50293536e1..9179f18042 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -838,7 +838,7 @@ "label": "上下文", "tip": "在上下文中保留的前幾則訊息" }, - "max": "最大", + "max": "不限", "max_tokens": { "confirm": "設置最大 Token 數", "confirm_content": "設置單次交互所用的最大 Token 數,會影響返回結果的長度。要根據模型上下文限制來設定,否則會發生錯誤", @@ -1051,6 +1051,7 @@ "copied": "已複製", "copy": "複製", "copy_failed": "複製失敗", + "current": "当前", "cut": "剪下", "default": "預設", "delete": "刪除", diff --git a/src/renderer/src/i18n/translate/de-de.json b/src/renderer/src/i18n/translate/de-de.json index b2c0e21544..1691144860 100644 --- a/src/renderer/src/i18n/translate/de-de.json +++ b/src/renderer/src/i18n/translate/de-de.json @@ -1051,6 +1051,7 @@ "copied": "Kopiert", "copy": "Kopieren", "copy_failed": "Kopieren fehlgeschlagen", + "current": "Aktuell", "cut": "Ausschneiden", "default": "Standard", "delete": "Löschen", diff --git a/src/renderer/src/i18n/translate/el-gr.json b/src/renderer/src/i18n/translate/el-gr.json index 01773b480d..88fade4b2b 100644 --- a/src/renderer/src/i18n/translate/el-gr.json +++ b/src/renderer/src/i18n/translate/el-gr.json @@ -838,7 +838,7 @@ "label": "Πλήθος ενδιάμεσων", "tip": "Πλήθος των μηνυμάτων που θα παραμείνουν στα ενδιάμεσα, όσο μεγαλύτερο είναι το αριθμός, τόσο μεγαλύτερο είναι το μήκος του ενδιάμεσου και τόσο περισσότερα tokens χρησιμοποιούνται. Συνομιλία συνήθως συνιστάται μεταξύ 5-10" }, - "max": "Όχι ορισμένο", + "max": "άπειρος", "max_tokens": { "confirm": "Ενεργοποίηση περιορισμού μήκους μηνύματος", "confirm_content": "Μετά την ενεργοποίηση του περιορισμού μήκους μηνύματος, ο μέγιστος αριθμός των tokens που χρησιμοποιούνται κάθε φορά, θα επηρεάζει το μήκος της απάντησης. Πρέπει να το ρυθμίζετε βάσει των περιορισμών του πλαισίου του μοντέλου, διαφορετικά θα σφάλλεται.", @@ -1051,6 +1051,7 @@ "copied": "Αντιγράφηκε", "copy": "Αντιγραφή", "copy_failed": "Αποτυχία αντιγραφής", + "current": "Τρέχων", "cut": "Κοπή", "default": "Προεπιλογή", "delete": "Διαγραφή", diff --git a/src/renderer/src/i18n/translate/es-es.json b/src/renderer/src/i18n/translate/es-es.json index 4bf1daa0eb..9e5a5d75e3 100644 --- a/src/renderer/src/i18n/translate/es-es.json +++ b/src/renderer/src/i18n/translate/es-es.json @@ -1051,6 +1051,7 @@ "copied": "Copiado", "copy": "Copiar", "copy_failed": "Error al copiar", + "current": "Actual", "cut": "Cortar", "default": "Predeterminado", "delete": "Eliminar", diff --git a/src/renderer/src/i18n/translate/fr-fr.json b/src/renderer/src/i18n/translate/fr-fr.json index 0f2895581b..35f48bd35d 100644 --- a/src/renderer/src/i18n/translate/fr-fr.json +++ b/src/renderer/src/i18n/translate/fr-fr.json @@ -1051,6 +1051,7 @@ "copied": "Copié", "copy": "Copier", "copy_failed": "Échec de la copie", + "current": "Actuel", "cut": "Couper", "default": "Défaut", "delete": "Supprimer", diff --git a/src/renderer/src/i18n/translate/ja-jp.json b/src/renderer/src/i18n/translate/ja-jp.json index 8d5c342b2a..2196c03724 100644 --- a/src/renderer/src/i18n/translate/ja-jp.json +++ b/src/renderer/src/i18n/translate/ja-jp.json @@ -838,7 +838,7 @@ "label": "コンテキスト", "tip": "コンテキストに保持する以前のメッセージの数" }, - "max": "最大", + "max": "制限なし", "max_tokens": { "confirm": "最大トークン数", "confirm_content": "最大トークン数を設定すると、モデルが生成できる最大トークン数が制限されます。これにより、返される結果の長さに影響が出る可能性があります。モデルのコンテキスト制限に基づいて設定する必要があります。そうしないとエラーが発生します", @@ -1051,6 +1051,7 @@ "copied": "コピーされました", "copy": "コピー", "copy_failed": "コピーに失敗しました", + "current": "現在", "cut": "切り取り", "default": "デフォルト", "delete": "削除", diff --git a/src/renderer/src/i18n/translate/pt-pt.json b/src/renderer/src/i18n/translate/pt-pt.json index 7e1a85af73..aee876b559 100644 --- a/src/renderer/src/i18n/translate/pt-pt.json +++ b/src/renderer/src/i18n/translate/pt-pt.json @@ -1051,6 +1051,7 @@ "copied": "Copiado", "copy": "Copiar", "copy_failed": "Falha ao copiar", + "current": "Atual", "cut": "Cortar", "default": "Padrão", "delete": "Excluir", diff --git a/src/renderer/src/i18n/translate/ru-ru.json b/src/renderer/src/i18n/translate/ru-ru.json index 82ff1287e6..ea9b78b716 100644 --- a/src/renderer/src/i18n/translate/ru-ru.json +++ b/src/renderer/src/i18n/translate/ru-ru.json @@ -838,7 +838,7 @@ "label": "Контекст", "tip": "Количество предыдущих сообщений, которые нужно сохранить в контексте." }, - "max": "Максимум", + "max": "без ограничений", "max_tokens": { "confirm": "Максимальное количество токенов", "confirm_content": "Установить максимальное количество токенов, влияет на длину результата. Нужно учитывать контекст модели, иначе будет ошибка", @@ -1051,6 +1051,7 @@ "copied": "Скопировано", "copy": "Копировать", "copy_failed": "Не удалось скопировать", + "current": "Текущий", "cut": "Вырезать", "default": "По умолчанию", "delete": "Удалить", diff --git a/src/renderer/src/pages/home/Tabs/SettingsTab.tsx b/src/renderer/src/pages/home/Tabs/SettingsTab.tsx index f56357cc4e..9aca265c40 100644 --- a/src/renderer/src/pages/home/Tabs/SettingsTab.tsx +++ b/src/renderer/src/pages/home/Tabs/SettingsTab.tsx @@ -3,7 +3,12 @@ import { HStack } from '@renderer/components/Layout' import Scrollbar from '@renderer/components/Scrollbar' import Selector from '@renderer/components/Selector' import { HelpTooltip } from '@renderer/components/TooltipIcons' -import { DEFAULT_CONTEXTCOUNT, DEFAULT_MAX_TOKENS, DEFAULT_TEMPERATURE } from '@renderer/config/constant' +import { + DEFAULT_CONTEXTCOUNT, + DEFAULT_MAX_TOKENS, + DEFAULT_TEMPERATURE, + MAX_CONTEXT_COUNT +} from '@renderer/config/constant' import { isOpenAIModel } from '@renderer/config/models' import { UNKNOWN } from '@renderer/config/translate' import { useCodeStyle } from '@renderer/context/CodeStyleProvider' @@ -172,9 +177,6 @@ const SettingsTab: FC = (props) => { setStreamOutput(assistant?.settings?.streamOutput ?? true) }, [assistant]) - const assistantContextCount = assistant?.settings?.contextCount || 20 - const maxContextCount = assistantContextCount > 20 ? assistantContextCount : 20 - const model = assistant.model || getDefaultModel() const isOpenAI = isOpenAIModel(model) @@ -227,21 +229,44 @@ const SettingsTab: FC = (props) => { ) : ( )} - + {t('chat.settings.context_count.label')} + + { + if (value !== null && value >= 0 && value <= 20) { + setContextCount(value) + onContextCountChange(value) + } + }} + formatter={(value) => (value === MAX_CONTEXT_COUNT ? t('chat.settings.max') : (value ?? ''))} + style={{ width: '100%' }} + /> + - + diff --git a/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx b/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx index a2efdf387d..d340b6a673 100644 --- a/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx +++ b/src/renderer/src/pages/settings/AssistantSettings/AssistantModelSettings.tsx @@ -359,6 +359,7 @@ const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateA setTimeoutTimer('contextCount_onChange', () => updateAssistantSettings({ contextCount: value }), 500) } }} + formatter={(value) => (value === MAX_CONTEXT_COUNT ? t('chat.settings.max') : (value ?? ''))} style={{ width: '100%' }} /> @@ -373,7 +374,7 @@ const AssistantModelSettings: FC = ({ assistant, updateAssistant, updateA value={typeof contextCount === 'number' ? contextCount : 0} marks={{ 0: '0', 25: '25', 50: '50', 75: '75', 100: t('chat.settings.max') }} step={1} - tooltip={{ formatter: formatSliderTooltip }} + tooltip={{ formatter: formatSliderTooltip, open: false }} />