mirror of
https://github.com/langgenius/dify.git
synced 2025-11-05 13:21:34 +00:00
Signed-off-by: -LAN- <laipz8200@outlook.com> Co-authored-by: twwu <twwu@dify.ai> Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com> Co-authored-by: jyong <718720800@qq.com> Co-authored-by: Wu Tianwei <30284043+WTW0313@users.noreply.github.com> Co-authored-by: QuantumGhost <obelisk.reg+git@gmail.com> Co-authored-by: lyzno1 <yuanyouhuilyz@gmail.com> Co-authored-by: quicksand <quicksandzn@gmail.com> Co-authored-by: Jyong <76649700+JohnJyong@users.noreply.github.com> Co-authored-by: lyzno1 <92089059+lyzno1@users.noreply.github.com> Co-authored-by: zxhlyh <jasonapring2015@outlook.com> Co-authored-by: Yongtao Huang <yongtaoh2022@gmail.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> Co-authored-by: Joel <iamjoel007@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: nite-knite <nkCoding@gmail.com> Co-authored-by: Hanqing Zhao <sherry9277@gmail.com> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Co-authored-by: Harry <xh001x@hotmail.com>
87 lines
2.5 KiB
TypeScript
87 lines
2.5 KiB
TypeScript
import { useTranslation } from 'react-i18next'
|
|
import { generateNewNode } from '@/app/components/workflow/utils'
|
|
import {
|
|
NODE_WIDTH_X_OFFSET,
|
|
START_INITIAL_POSITION,
|
|
} from '@/app/components/workflow/constants'
|
|
import { useIsChatMode } from './use-is-chat-mode'
|
|
import type { StartNodeType } from '@/app/components/workflow/nodes/start/types'
|
|
import startDefault from '@/app/components/workflow/nodes/start/default'
|
|
import llmDefault from '@/app/components/workflow/nodes/llm/default'
|
|
import answerDefault from '@/app/components/workflow/nodes/answer/default'
|
|
|
|
export const useWorkflowTemplate = () => {
|
|
const isChatMode = useIsChatMode()
|
|
const { t } = useTranslation()
|
|
|
|
const { newNode: startNode } = generateNewNode({
|
|
data: {
|
|
...startDefault.defaultValue as StartNodeType,
|
|
type: startDefault.metaData.type,
|
|
title: t(`workflow.blocks.${startDefault.metaData.type}`),
|
|
},
|
|
position: START_INITIAL_POSITION,
|
|
})
|
|
|
|
if (isChatMode) {
|
|
const { newNode: llmNode } = generateNewNode({
|
|
id: 'llm',
|
|
data: {
|
|
...llmDefault.defaultValue,
|
|
memory: {
|
|
window: { enabled: false, size: 10 },
|
|
query_prompt_template: '{{#sys.query#}}\n\n{{#sys.files#}}',
|
|
},
|
|
selected: true,
|
|
type: llmDefault.metaData.type,
|
|
title: t(`workflow.blocks.${llmDefault.metaData.type}`),
|
|
},
|
|
position: {
|
|
x: START_INITIAL_POSITION.x + NODE_WIDTH_X_OFFSET,
|
|
y: START_INITIAL_POSITION.y,
|
|
},
|
|
} as any)
|
|
|
|
const { newNode: answerNode } = generateNewNode({
|
|
id: 'answer',
|
|
data: {
|
|
...answerDefault.defaultValue,
|
|
answer: `{{#${llmNode.id}.text#}}`,
|
|
type: answerDefault.metaData.type,
|
|
title: t(`workflow.blocks.${answerDefault.metaData.type}`),
|
|
},
|
|
position: {
|
|
x: START_INITIAL_POSITION.x + NODE_WIDTH_X_OFFSET * 2,
|
|
y: START_INITIAL_POSITION.y,
|
|
},
|
|
} as any)
|
|
|
|
const startToLlmEdge = {
|
|
id: `${startNode.id}-${llmNode.id}`,
|
|
source: startNode.id,
|
|
sourceHandle: 'source',
|
|
target: llmNode.id,
|
|
targetHandle: 'target',
|
|
}
|
|
|
|
const llmToAnswerEdge = {
|
|
id: `${llmNode.id}-${answerNode.id}`,
|
|
source: llmNode.id,
|
|
sourceHandle: 'source',
|
|
target: answerNode.id,
|
|
targetHandle: 'target',
|
|
}
|
|
|
|
return {
|
|
nodes: [startNode, llmNode, answerNode],
|
|
edges: [startToLlmEdge, llmToAnswerEdge],
|
|
}
|
|
}
|
|
else {
|
|
return {
|
|
nodes: [startNode],
|
|
edges: [],
|
|
}
|
|
}
|
|
}
|