mirror of
				https://github.com/langgenius/dify.git
				synced 2025-10-31 02:42:59 +00:00 
			
		
		
		
	
		
			
	
	
		
			74 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			74 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|   | 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: [], | ||
|  |     } | ||
|  |   } | ||
|  | } |