diff --git a/web/app/components/app/configuration/config-model/index.tsx b/web/app/components/app/configuration/config-model/index.tsx index 2a69aa3d23..e8cfc34821 100644 --- a/web/app/components/app/configuration/config-model/index.tsx +++ b/web/app/components/app/configuration/config-model/index.tsx @@ -1,6 +1,6 @@ 'use client' import type { FC } from 'react' -import React, { useEffect } from 'react' +import React, { useEffect, useState } from 'react' import cn from 'classnames' import { useTranslation } from 'react-i18next' import { useBoolean, useClickAway } from 'ahooks' @@ -12,6 +12,7 @@ import type { CompletionParams } from '@/models/debug' import { AppType } from '@/types/app' import { TONE_LIST } from '@/config' import Toast from '@/app/components/base/toast' +import { AlertTriangle } from '@/app/components/base/icons/src/vender/solid/alertsAndFeedback' export type IConifgModelProps = { mode: string @@ -55,6 +56,7 @@ const ConifgModel: FC = ({ const isChatApp = mode === AppType.chat const availableModels = options.filter(item => item.type === mode) const [isShowConfig, { setFalse: hideConfig, toggle: toogleShowConfig }] = useBoolean(false) + const [maxTokenSettingTipVisible, setMaxTokenSettingTipVisible] = useState(false) const configContentRef = React.useRef(null) useClickAway(() => { hideConfig() @@ -177,6 +179,14 @@ const ConifgModel: FC = ({ const ableStyle = 'bg-indigo-25 border-[#2A87F5] cursor-pointer' const diabledStyle = 'bg-[#FFFCF5] border-[#F79009]' + useEffect(() => { + const max = params[4].max + if (completionParams.max_tokens > max * 2 / 3) + setMaxTokenSettingTipVisible(true) + else + setMaxTokenSettingTipVisible(false) + }, [params, completionParams.max_tokens, setMaxTokenSettingTipVisible]) + return (
= ({ {params.map(({ key, ...param }) => ())}
+ { + maxTokenSettingTipVisible && ( +
+ +
{t('common.model.params.maxTokenSettingTip')}
+
+ ) + } )} diff --git a/web/app/components/base/icons/assets/vender/line/general/x.svg b/web/app/components/base/icons/assets/vender/line/general/x.svg new file mode 100644 index 0000000000..04815e59bc --- /dev/null +++ b/web/app/components/base/icons/assets/vender/line/general/x.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/web/app/components/base/icons/assets/vender/solid/alertsAndFeedback/alert-triangle.svg b/web/app/components/base/icons/assets/vender/solid/alertsAndFeedback/alert-triangle.svg new file mode 100644 index 0000000000..d7407382ce --- /dev/null +++ b/web/app/components/base/icons/assets/vender/solid/alertsAndFeedback/alert-triangle.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/web/app/components/base/icons/src/vender/line/general/X.json b/web/app/components/base/icons/src/vender/line/general/X.json new file mode 100644 index 0000000000..5c2fde5df6 --- /dev/null +++ b/web/app/components/base/icons/src/vender/line/general/X.json @@ -0,0 +1,39 @@ +{ + "icon": { + "type": "element", + "isRootNode": true, + "name": "svg", + "attributes": { + "width": "16", + "height": "16", + "viewBox": "0 0 16 16", + "fill": "none", + "xmlns": "http://www.w3.org/2000/svg" + }, + "children": [ + { + "type": "element", + "name": "g", + "attributes": { + "id": "x" + }, + "children": [ + { + "type": "element", + "name": "path", + "attributes": { + "id": "Icon", + "d": "M11.3334 4.66663L4.66675 11.3333M4.66675 4.66663L11.3334 11.3333", + "stroke": "currentColor", + "stroke-width": "1.5", + "stroke-linecap": "round", + "stroke-linejoin": "round" + }, + "children": [] + } + ] + } + ] + }, + "name": "X" +} \ No newline at end of file diff --git a/web/app/components/base/icons/src/vender/line/general/X.tsx b/web/app/components/base/icons/src/vender/line/general/X.tsx new file mode 100644 index 0000000000..982b8e1241 --- /dev/null +++ b/web/app/components/base/icons/src/vender/line/general/X.tsx @@ -0,0 +1,14 @@ +// GENERATE BY script +// DON NOT EDIT IT MANUALLY + +import * as React from 'react' +import data from './X.json' +import IconBase from '@/app/components/base/icons/IconBase' +import type { IconBaseProps, IconData } from '@/app/components/base/icons/IconBase' + +const Icon = React.forwardRef, Omit>(( + props, + ref, +) => ) + +export default Icon diff --git a/web/app/components/base/icons/src/vender/line/general/index.ts b/web/app/components/base/icons/src/vender/line/general/index.ts index dbbb85f2e3..1bd5afa467 100644 --- a/web/app/components/base/icons/src/vender/line/general/index.ts +++ b/web/app/components/base/icons/src/vender/line/general/index.ts @@ -1 +1,2 @@ export { default as Trash03 } from './Trash03' +export { default as X } from './X' diff --git a/web/app/components/base/icons/src/vender/solid/alertsAndFeedback/AlertTriangle.json b/web/app/components/base/icons/src/vender/solid/alertsAndFeedback/AlertTriangle.json new file mode 100644 index 0000000000..c73fbc5855 --- /dev/null +++ b/web/app/components/base/icons/src/vender/solid/alertsAndFeedback/AlertTriangle.json @@ -0,0 +1,38 @@ +{ + "icon": { + "type": "element", + "isRootNode": true, + "name": "svg", + "attributes": { + "width": "12", + "height": "12", + "viewBox": "0 0 12 12", + "fill": "none", + "xmlns": "http://www.w3.org/2000/svg" + }, + "children": [ + { + "type": "element", + "name": "g", + "attributes": { + "id": "alert-triangle" + }, + "children": [ + { + "type": "element", + "name": "path", + "attributes": { + "id": "Solid", + "fill-rule": "evenodd", + "clip-rule": "evenodd", + "d": "M6.40616 0.834185C6.14751 0.719172 5.85222 0.719172 5.59356 0.834185C5.3938 0.923011 5.26403 1.07947 5.17373 1.20696C5.08495 1.3323 4.9899 1.49651 4.88536 1.67711L0.751783 8.81693C0.646828 8.99818 0.551451 9.16289 0.486781 9.30268C0.421056 9.44475 0.349754 9.63572 0.372478 9.85369C0.401884 10.1357 0.549654 10.392 0.779012 10.5588C0.956259 10.6877 1.15726 10.7217 1.31314 10.736C1.46651 10.75 1.65684 10.75 1.86628 10.75H10.1334C10.3429 10.75 10.5332 10.75 10.6866 10.736C10.8425 10.7217 11.0435 10.6877 11.2207 10.5588C11.4501 10.392 11.5978 10.1357 11.6272 9.85369C11.65 9.63572 11.5787 9.44475 11.5129 9.30268C11.4483 9.1629 11.3529 8.9982 11.248 8.81697L7.11436 1.67709C7.00983 1.49651 6.91477 1.3323 6.82599 1.20696C6.73569 1.07947 6.60593 0.923011 6.40616 0.834185ZM6.49988 4.5C6.49988 4.22386 6.27602 4 5.99988 4C5.72374 4 5.49988 4.22386 5.49988 4.5V6.5C5.49988 6.77614 5.72374 7 5.99988 7C6.27602 7 6.49988 6.77614 6.49988 6.5V4.5ZM5.99988 8C5.72374 8 5.49988 8.22386 5.49988 8.5C5.49988 8.77614 5.72374 9 5.99988 9H6.00488C6.28102 9 6.50488 8.77614 6.50488 8.5C6.50488 8.22386 6.28102 8 6.00488 8H5.99988Z", + "fill": "currentColor" + }, + "children": [] + } + ] + } + ] + }, + "name": "AlertTriangle" +} \ No newline at end of file diff --git a/web/app/components/base/icons/src/vender/solid/alertsAndFeedback/AlertTriangle.tsx b/web/app/components/base/icons/src/vender/solid/alertsAndFeedback/AlertTriangle.tsx new file mode 100644 index 0000000000..1ddb34f39a --- /dev/null +++ b/web/app/components/base/icons/src/vender/solid/alertsAndFeedback/AlertTriangle.tsx @@ -0,0 +1,14 @@ +// GENERATE BY script +// DON NOT EDIT IT MANUALLY + +import * as React from 'react' +import data from './AlertTriangle.json' +import IconBase from '@/app/components/base/icons/IconBase' +import type { IconBaseProps, IconData } from '@/app/components/base/icons/IconBase' + +const Icon = React.forwardRef, Omit>(( + props, + ref, +) => ) + +export default Icon diff --git a/web/app/components/base/icons/src/vender/solid/alertsAndFeedback/index.ts b/web/app/components/base/icons/src/vender/solid/alertsAndFeedback/index.ts new file mode 100644 index 0000000000..6ad90c13fd --- /dev/null +++ b/web/app/components/base/icons/src/vender/solid/alertsAndFeedback/index.ts @@ -0,0 +1 @@ +export { default as AlertTriangle } from './AlertTriangle' diff --git a/web/i18n/lang/common.en.ts b/web/i18n/lang/common.en.ts index 5be911e859..cdb3fabc97 100644 --- a/web/i18n/lang/common.en.ts +++ b/web/i18n/lang/common.en.ts @@ -51,6 +51,7 @@ const translation = { maxToken: 'Max token', maxTokenTip: 'Max tokens depending on the model. Prompt and completion share this limit. One token is roughly 1 English character.', + maxTokenSettingTip: 'Your max token setting is high, potentially limiting space for prompts, queries, and data. Consider setting it below 2/3.', setToCurrentModelMaxTokenTip: 'Max token is updated to the maximum token of the current model 4,000.', }, tone: { diff --git a/web/i18n/lang/common.zh.ts b/web/i18n/lang/common.zh.ts index 5711bb4301..a6d17955a4 100644 --- a/web/i18n/lang/common.zh.ts +++ b/web/i18n/lang/common.zh.ts @@ -51,6 +51,7 @@ const translation = { maxToken: '最大 Token', maxTokenTip: '生成的最大令牌数取决于模型。提示和完成共享令牌数限制。一个令牌约等于 1 个英文或 半个中文字符。', + maxTokenSettingTip: '您设置的最大 tokens 数较大,可能会导致 prompt、用户问题、数据集内容没有 token 空间进行处理,建议设置到 2/3 以下。', setToCurrentModelMaxTokenTip: '最大令牌数更新为当前模型最大的令牌数 4,000。', }, tone: {