Parcourir la source

fix: enhance model parameter handling with advanced mode support and localization updates (#25963)

tags/1.9.0
Wu Tianwei il y a 1 mois
Parent
révision
87394d2512
Aucun compte lié à l'adresse e-mail de l'auteur

+ 1
- 0
web/app/components/app/configuration/index.tsx Voir le fichier

provider, provider,
modelId, modelId,
completionParams, completionParams,
isAdvancedMode,
) )
if (Object.keys(removedDetails).length) if (Object.keys(removedDetails).length)
Toast.notify({ type: 'warning', message: `${t('common.modelProvider.parametersInvalidRemoved')}: ${Object.entries(removedDetails).map(([k, reason]) => `${k} (${reason})`).join(', ')}` }) Toast.notify({ type: 'warning', message: `${t('common.modelProvider.parametersInvalidRemoved')}: ${Object.entries(removedDetails).map(([k, reason]) => `${k} (${reason})`).join(', ')}` })

+ 2
- 21
web/app/components/header/account-setting/model-provider-page/model-parameter-modal/index.tsx Voir le fichier

import { fetchModelParameterRules } from '@/service/common' import { fetchModelParameterRules } from '@/service/common'
import Loading from '@/app/components/base/loading' import Loading from '@/app/components/base/loading'
import { useProviderContext } from '@/context/provider-context' import { useProviderContext } from '@/context/provider-context'
import { TONE_LIST } from '@/config'
import { PROVIDER_WITH_PRESET_TONE, STOP_PARAMETER_RULE, TONE_LIST } from '@/config'
import { ArrowNarrowLeft } from '@/app/components/base/icons/src/vender/line/arrows' import { ArrowNarrowLeft } from '@/app/components/base/icons/src/vender/line/arrows'


export type ModelParameterModalProps = { export type ModelParameterModalProps = {
isInWorkflow?: boolean isInWorkflow?: boolean
scope?: string scope?: string
} }
const stopParameterRule: ModelParameterRule = {
default: [],
help: {
en_US: 'Up to four sequences where the API will stop generating further tokens. The returned text will not contain the stop sequence.',
zh_Hans: '最多四个序列,API 将停止生成更多的 token。返回的文本将不包含停止序列。',
},
label: {
en_US: 'Stop sequences',
zh_Hans: '停止序列',
},
name: 'stop',
required: false,
type: 'tag',
tagPlaceholder: {
en_US: 'Enter sequence and press Tab',
zh_Hans: '输入序列并按 Tab 键',
},
}


const PROVIDER_WITH_PRESET_TONE = ['langgenius/openai/openai', 'langgenius/azure_openai/azure_openai']
const ModelParameterModal: FC<ModelParameterModalProps> = ({ const ModelParameterModal: FC<ModelParameterModalProps> = ({
popupClassName, popupClassName,
portalToFollowElemContentClassName, portalToFollowElemContentClassName,
!isLoading && !!parameterRules.length && ( !isLoading && !!parameterRules.length && (
[ [
...parameterRules, ...parameterRules,
...(isAdvancedMode ? [stopParameterRule] : []),
...(isAdvancedMode ? [STOP_PARAMETER_RULE] : []),
].map(parameter => ( ].map(parameter => (
<ParameterItem <ParameterItem
key={`${modelId}-${parameter.name}`} key={`${modelId}-${parameter.name}`}

+ 1
- 0
web/app/components/plugins/plugin-detail-panel/model-selector/index.tsx Voir le fichier

provider, provider,
model, model,
value?.completion_params, value?.completion_params,
isAdvancedMode,
) )
nextCompletionParams = filtered nextCompletionParams = filtered



+ 2
- 22
web/app/components/plugins/plugin-detail-panel/model-selector/llm-params-panel.tsx Voir le fichier

} from '@/app/components/header/account-setting/model-provider-page/declarations' } from '@/app/components/header/account-setting/model-provider-page/declarations'
import type { ParameterValue } from '@/app/components/header/account-setting/model-provider-page/model-parameter-modal/parameter-item' import type { ParameterValue } from '@/app/components/header/account-setting/model-provider-page/model-parameter-modal/parameter-item'
import { fetchModelParameterRules } from '@/service/common' import { fetchModelParameterRules } from '@/service/common'
import { TONE_LIST } from '@/config'
import { PROVIDER_WITH_PRESET_TONE, STOP_PARAMETER_RULE, TONE_LIST } from '@/config'
import cn from '@/utils/classnames' import cn from '@/utils/classnames'


const PROVIDER_WITH_PRESET_TONE = ['langgenius/openai/openai', 'langgenius/azure_openai/azure_openai']
const stopParameterRule: ModelParameterRule = {
default: [],
help: {
en_US: 'Up to four sequences where the API will stop generating further tokens. The returned text will not contain the stop sequence.',
zh_Hans: '最多四个序列,API 将停止生成更多的 token。返回的文本将不包含停止序列。',
},
label: {
en_US: 'Stop sequences',
zh_Hans: '停止序列',
},
name: 'stop',
required: false,
type: 'tag',
tagPlaceholder: {
en_US: 'Enter sequence and press Tab',
zh_Hans: '输入序列并按 Tab 键',
},
}

type Props = { type Props = {
isAdvancedMode: boolean isAdvancedMode: boolean
provider: string provider: string
{!!parameterRules.length && ( {!!parameterRules.length && (
[ [
...parameterRules, ...parameterRules,
...(isAdvancedMode ? [stopParameterRule] : []),
...(isAdvancedMode ? [STOP_PARAMETER_RULE] : []),
].map(parameter => ( ].map(parameter => (
<ParameterItem <ParameterItem
key={`${modelId}-${parameter.name}`} key={`${modelId}-${parameter.name}`}

+ 1
- 0
web/app/components/workflow/nodes/llm/panel.tsx Voir le fichier

model.provider, model.provider,
model.modelId, model.modelId,
inputs.model.completion_params, inputs.model.completion_params,
true,
) )
const keys = Object.keys(removedDetails) const keys = Object.keys(removedDetails)
if (keys.length) if (keys.length)

+ 22
- 0
web/config/index.ts Voir le fichier

import { PipelineInputVarType } from '@/models/pipeline' import { PipelineInputVarType } from '@/models/pipeline'
import { DatasetAttr } from '@/types/feature' import { DatasetAttr } from '@/types/feature'
import pkg from '../package.json' import pkg from '../package.json'
import type { ModelParameterRule } from '@/app/components/header/account-setting/model-provider-page/declarations'


const getBooleanConfig = ( const getBooleanConfig = (
envVar: string | undefined, envVar: string | undefined,
export const APP_VERSION = pkg.version export const APP_VERSION = pkg.version


export const RAG_PIPELINE_PREVIEW_CHUNK_NUM = 20 export const RAG_PIPELINE_PREVIEW_CHUNK_NUM = 20

export const PROVIDER_WITH_PRESET_TONE = ['langgenius/openai/openai', 'langgenius/azure_openai/azure_openai']

export const STOP_PARAMETER_RULE: ModelParameterRule = {
default: [],
help: {
en_US: 'Up to four sequences where the API will stop generating further tokens. The returned text will not contain the stop sequence.',
zh_Hans: '最多四个序列,API 将停止生成更多的 token。返回的文本将不包含停止序列。',
},
label: {
en_US: 'Stop sequences',
zh_Hans: '停止序列',
},
name: 'stop',
required: false,
type: 'tag',
tagPlaceholder: {
en_US: 'Enter sequence and press Tab',
zh_Hans: '输入序列并按 Tab 键',
},
}

+ 1
- 0
web/i18n/en-US/common.ts Voir le fichier

selectModelCredential: 'Select a model credential', selectModelCredential: 'Select a model credential',
customModelCredentialsDeleteTip: 'Credential is in use and cannot be deleted', customModelCredentialsDeleteTip: 'Credential is in use and cannot be deleted',
}, },
parametersInvalidRemoved: 'Some parameters are invalid and have been removed',
}, },
dataSource: { dataSource: {
add: 'Add a data source', add: 'Add a data source',

+ 1
- 0
web/i18n/zh-Hans/common.ts Voir le fichier

selectModelCredential: '选择模型凭据', selectModelCredential: '选择模型凭据',
customModelCredentialsDeleteTip: '模型凭据正在使用中,无法删除', customModelCredentialsDeleteTip: '模型凭据正在使用中,无法删除',
}, },
parametersInvalidRemoved: '部分参数无效,已移除',
}, },
dataSource: { dataSource: {
add: '添加数据源', add: '添加数据源',

+ 8
- 1
web/utils/completion-params.ts Voir le fichier

export const mergeValidCompletionParams = ( export const mergeValidCompletionParams = (
oldParams: FormValue | undefined, oldParams: FormValue | undefined,
rules: ModelParameterRule[], rules: ModelParameterRule[],
isAdvancedMode: boolean = false,
): { params: FormValue; removedDetails: Record<string, string> } => { ): { params: FormValue; removedDetails: Record<string, string> } => {
if (!oldParams || Object.keys(oldParams).length === 0) if (!oldParams || Object.keys(oldParams).length === 0)
return { params: {}, removedDetails: {} } return { params: {}, removedDetails: {} }
const removedDetails: Record<string, string> = {} const removedDetails: Record<string, string> = {}


Object.entries(oldParams).forEach(([key, value]) => { Object.entries(oldParams).forEach(([key, value]) => {
if (key === 'stop' && isAdvancedMode) {
// keep stop in advanced mode
nextParams[key] = value
return
}
const rule = ruleMap[key] const rule = ruleMap[key]
if (!rule) { if (!rule) {
removedDetails[key] = 'unsupported' removedDetails[key] = 'unsupported'
provider: string, provider: string,
modelId: string, modelId: string,
oldParams: FormValue | undefined, oldParams: FormValue | undefined,
isAdvancedMode: boolean = false,
): Promise<{ params: FormValue; removedDetails: Record<string, string> }> => { ): Promise<{ params: FormValue; removedDetails: Record<string, string> }> => {
const { fetchModelParameterRules } = await import('@/service/common') const { fetchModelParameterRules } = await import('@/service/common')
const url = `/workspaces/current/model-providers/${provider}/models/parameter-rules?model=${modelId}` const url = `/workspaces/current/model-providers/${provider}/models/parameter-rules?model=${modelId}`
const { data: parameterRules } = await fetchModelParameterRules(url) const { data: parameterRules } = await fetchModelParameterRules(url)
return mergeValidCompletionParams(oldParams, parameterRules ?? [])
return mergeValidCompletionParams(oldParams, parameterRules ?? [], isAdvancedMode)
} }

Chargement…
Annuler
Enregistrer