浏览代码

fix (conf/code): Variables not correctly filled can still be referenced (#21451)

Co-authored-by: crazywoola <427733928@qq.com>
tags/1.5.0
AntzUhl 4 个月前
父节点
当前提交
27172b0898
没有帐户链接到提交者的电子邮件

+ 1
- 1
web/app/components/app/configuration/config-prompt/advanced-prompt-input.tsx 查看文件

@@ -227,7 +227,7 @@ const AdvancedPromptInput: FC<Props> = ({
}}
variableBlock={{
show: true,
variables: modelConfig.configs.prompt_variables.filter(item => item.type !== 'api').map(item => ({
variables: modelConfig.configs.prompt_variables.filter(item => item.type !== 'api' && item.key && item.key.trim() && item.name && item.name.trim()).map(item => ({
name: item.name,
value: item.key,
})),

+ 21
- 10
web/app/components/app/configuration/config-prompt/simple-prompt-input.tsx 查看文件

@@ -97,20 +97,31 @@ const Prompt: FC<ISimplePromptInput> = ({
},
})
}
const promptVariablesObj = (() => {
const obj: Record<string, boolean> = {}
promptVariables.forEach((item) => {
obj[item.key] = true
})
return obj
})()

const [newPromptVariables, setNewPromptVariables] = React.useState<PromptVariable[]>(promptVariables)
const [newTemplates, setNewTemplates] = React.useState('')
const [isShowConfirmAddVar, { setTrue: showConfirmAddVar, setFalse: hideConfirmAddVar }] = useBoolean(false)

const handleChange = (newTemplates: string, keys: string[]) => {
const newPromptVariables = keys.filter(key => !(key in promptVariablesObj) && !externalDataToolsConfig.find(item => item.variable === key)).map(key => getNewVar(key, ''))
// Filter out keys that are not properly defined (either not exist or exist but without valid name)
const newPromptVariables = keys.filter((key) => {
// Check if key exists in external data tools
if (externalDataToolsConfig.find((item: ExternalDataTool) => item.variable === key))
return false

// Check if key exists in prompt variables
const existingVar = promptVariables.find((item: PromptVariable) => item.key === key)
if (!existingVar) {
// Variable doesn't exist at all
return true
}

// Variable exists but check if it has valid name and key
return !existingVar.name || !existingVar.name.trim() || !existingVar.key || !existingVar.key.trim()

return false
}).map(key => getNewVar(key, ''))

if (newPromptVariables.length > 0) {
setNewPromptVariables(newPromptVariables)
setNewTemplates(newTemplates)
@@ -210,14 +221,14 @@ const Prompt: FC<ISimplePromptInput> = ({
}}
variableBlock={{
show: true,
variables: modelConfig.configs.prompt_variables.filter(item => item.type !== 'api').map(item => ({
variables: modelConfig.configs.prompt_variables.filter((item: PromptVariable) => item.type !== 'api' && item.key && item.key.trim() && item.name && item.name.trim()).map((item: PromptVariable) => ({
name: item.name,
value: item.key,
})),
}}
externalToolBlock={{
show: true,
externalTools: modelConfig.configs.prompt_variables.filter(item => item.type === 'api').map(item => ({
externalTools: modelConfig.configs.prompt_variables.filter((item: PromptVariable) => item.type === 'api').map((item: PromptVariable) => ({
name: item.name,
variableName: item.key,
icon: item.icon,

+ 1
- 1
web/app/components/app/configuration/config/agent/prompt-editor.tsx 查看文件

@@ -107,7 +107,7 @@ const Editor: FC<Props> = ({
}}
variableBlock={{
show: true,
variables: modelConfig.configs.prompt_variables.map(item => ({
variables: modelConfig.configs.prompt_variables.filter(item => item.key && item.key.trim() && item.name && item.name.trim()).map(item => ({
name: item.name,
value: item.key,
})),

正在加载...
取消
保存