dify/web/app/components/workflow/nodes/agent/panel.tsx

74 lines
2.5 KiB
TypeScript
Raw Normal View History

import type { FC } from 'react'
import type { NodePanelProps } from '../../types'
import type { AgentNodeType } from './types'
import Field from '../_base/components/field'
import { AgentStrategy } from '../_base/components/agent-strategy'
2024-12-25 14:52:11 +08:00
import useConfig from './use-config'
import { useTranslation } from 'react-i18next'
2024-12-27 15:34:54 +08:00
import OutputVars, { VarItem } from '../_base/components/output-vars'
const i18nPrefix = 'workflow.nodes.agent'
2024-12-25 11:24:24 +08:00
const AgentPanel: FC<NodePanelProps<AgentNodeType>> = (props) => {
2024-12-26 10:16:52 +08:00
const { inputs, setInputs, currentStrategy } = useConfig(props.id, props.data)
2024-12-25 14:52:11 +08:00
const { t } = useTranslation()
2024-12-27 15:34:54 +08:00
return <div className='my-2'>
2024-12-25 14:52:11 +08:00
<Field title={t('workflow.nodes.agent.strategy.label')} className='px-4' >
<AgentStrategy
strategy={inputs.agent_strategy_name ? {
agent_strategy_provider_name: inputs.agent_strategy_provider_name!,
agent_strategy_name: inputs.agent_strategy_name!,
agent_parameters: inputs.agent_parameters,
2024-12-26 10:16:52 +08:00
agent_strategy_label: inputs.agent_strategy_label!,
2024-12-27 15:34:54 +08:00
agent_output_schema: inputs.output_schema,
} : undefined}
onStrategyChange={(strategy) => {
setInputs({
...inputs,
agent_strategy_provider_name: strategy?.agent_strategy_provider_name,
agent_strategy_name: strategy?.agent_strategy_name,
agent_parameters: strategy?.agent_parameters,
2024-12-26 10:16:52 +08:00
agent_strategy_label: strategy?.agent_strategy_label,
2024-12-27 15:34:54 +08:00
output_schema: strategy!.agent_output_schema,
})
}}
2024-12-26 10:16:52 +08:00
formSchema={currentStrategy?.parameters as any || []}
2024-12-25 11:24:24 +08:00
formValue={inputs.agent_parameters || {}}
onFormValueChange={value => setInputs({
...inputs,
agent_parameters: value,
})}
/>
</Field>
2024-12-27 15:34:54 +08:00
<div>
<OutputVars>
<VarItem
name='text'
type='String'
description={t(`${i18nPrefix}.outputVars.text`)}
/>
<VarItem
name='files'
type='Array[File]'
description={t(`${i18nPrefix}.outputVars.files.title`)}
/>
<VarItem
name='json'
type='Array[Object]'
description={t(`${i18nPrefix}.outputVars.json`)}
/>
{inputs.output_schema && Object.entries(inputs.output_schema).map(([name, schema]) => (
<VarItem
key={name}
name={name}
type={schema.type}
description={schema.description}
/>
))}
</OutputVars>
</div>
2024-12-25 11:24:24 +08:00
</div>
}
export default AgentPanel