|
import { generateNewNode } from '../utils'
|
|
import {
|
|
NODE_WIDTH_X_OFFSET,
|
|
START_INITIAL_POSITION,
|
|
} from '../constants'
|
|
import { useIsChatMode } from './use-workflow'
|
|
import { useNodesInitialData } from './use-nodes-data'
|
|
|
|
export const useWorkflowTemplate = () => {
|
|
const isChatMode = useIsChatMode()
|
|
const nodesInitialData = useNodesInitialData()
|
|
|
|
const startNode = generateNewNode({
|
|
data: nodesInitialData.start,
|
|
position: START_INITIAL_POSITION,
|
|
})
|
|
|
|
if (isChatMode) {
|
|
const llmNode = generateNewNode({
|
|
id: 'llm',
|
|
data: {
|
|
...nodesInitialData.llm,
|
|
memory: {
|
|
window: { enabled: false, size: 10 },
|
|
},
|
|
selected: true,
|
|
},
|
|
position: {
|
|
x: START_INITIAL_POSITION.x + NODE_WIDTH_X_OFFSET,
|
|
y: START_INITIAL_POSITION.y,
|
|
},
|
|
} as any)
|
|
|
|
const answerNode = generateNewNode({
|
|
id: 'answer',
|
|
data: {
|
|
...nodesInitialData.answer,
|
|
answer: `{{#${llmNode.id}.text#}}`,
|
|
},
|
|
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: [],
|
|
}
|
|
}
|
|
}
|
|
|