1. 为什么你需要一个智能AI工作流编辑器?
最近两年,AI应用开发的热度居高不下,无论是大语言模型(LLM)的集成,还是自动化任务的编排,都离不开一个核心环节:工作流。想象一下,你要开发一个智能客服系统,用户的问题进来后,可能需要先经过意图识别,然后调用不同的知识库查询,最后再生成一个结构化的回复。这个过程里,每个步骤就是一个节点,节点之间的流转逻辑就是边。如果全靠代码硬写,逻辑会非常复杂,而且一旦需求变动,改起来简直是噩梦。
这时候,一个可视化的工作流编辑器就成了刚需。它让你能像搭积木一样,通过拖拽节点、连接线条来设计整个AI任务的执行流程。开发效率提升了,产品经理和业务同学也能直观地理解甚至参与流程设计。而要在Vue技术栈里快速实现这样一个编辑器,Vue Flow 是我目前用过最顺手、最强大的工具,没有之一。它不是一个简单的画图工具,而是一个功能完备的图形编辑框架,专为构建复杂的、交互式的节点图而生。接下来,我就结合自己实际打造AI工作流编辑器的经验,带你从零开始,一步步实现一个功能齐全的智能编辑器。
2. 快速上手:5分钟创建你的第一个流程图
别被“智能”、“高级”这些词吓到,万事开头易。我们先从最基础的开始,把Vue Flow跑起来,看看它到底长啥样。
2.1 环境准备与安装
首先,确保你有一个Vue 3项目。用Vite创建是最快的,运行 npm create vue@latest,按照提示操作就行。项目创建好后,我们进入正题,安装Vue Flow的核心库。
# 进入你的项目目录
cd your-vue-project
# 安装 Vue Flow 核心包
npm install @vue-flow/core
除了核心包,Vue Flow还有一些非常实用的附加组件,我强烈建议一并安装,它们能极大提升编辑器的体验和功能完整性。
# 安装背景网格组件(让画布更有设计感)
npm install @vue-flow/background
# 安装迷你地图组件(方便导航大型流程图)
npm install @vue-flow/minimap
# 安装控制面板组件(缩放、居中、全屏等控件)
npm install @vue-flow/controls
# 安装节点工具栏组件(为节点添加操作按钮)
npm install @vue-flow/node-toolbar
安装完成后,别忘了引入它们的样式文件。我习惯在项目的入口文件(比如 main.js 或 main.ts)里全局引入,这样在任何组件中都能直接使用。
// main.js
import { createApp } from 'vue'
import App from './App.vue'
// 引入核心样式
import '@vue-flow/core/dist/style.css'
// 引入默认主题(可选,但推荐)
import '@vue-flow/core/dist/theme-default.css'
// 引入附加组件的样式
import '@vue-flow/background/dist/style.css'
import '@vue-flow/minimap/dist/style.css'
import '@vue-flow/controls/dist/style.css'
import '@vue-flow/node-toolbar/dist/style.css'
createApp(App).mount('#app')
2.2 绘制基础节点与连线
环境搭好了,我们来画点东西。创建一个新的Vue组件,比如叫 BasicFlow.vue。Vue Flow的使用思路非常直观:你提供一组节点(nodes)和一组连线(edges)的数据,它负责把它们渲染成可交互的图形。
<template>
<div style="width: 100%; height: 600px; border: 1px solid #eee;">
<VueFlow :nodes="nodes" :edges="edges" fit-view-on-init>
<Background />
<MiniMap />
<Controls />
</VueFlow>
</div>
</template>
<script setup>
import { ref } from 'vue'
// 从核心库引入VueFlow组件
import { VueFlow } from '@vue-flow/core'
// 引入附加组件
import { Background, MiniMap, Controls } from '@vue-flow/core'
// 定义节点数据
const nodes = ref([
{
id: '1', // 节点唯一标识
position: { x: 100, y: 100 }, // 节点在画布上的坐标
data: { label: '开始节点' }, // 节点承载的数据
type: 'input', // 节点类型:input表示只有输出点
},
{
id: '2',
position: { x: 400, y: 100 },
data: { label: '处理节点' },
// 不指定type,默认为 'default',既有输入点也有输出点
},
{
id: '3',
position: { x: 700, y: 100 },
data: { label: '结束节点' },
type: 'output', // 节点类型:output表示只有输入点
},
])
// 定义连线数据
const edges = ref([
{
id: 'e1-2', // 连线唯一标识
source: '1', // 源节点ID
target: '2', // 目标节点ID
label: '流程开始', // 连线上的标签
},
{
id: 'e2-3',
source: '2',
target: '3',
label: '流程结束',
animated: true, // 设置为true,连线会有流动的动画效果
},
])
</script>
把这段代码运行起来,你就能在浏览器里看到一个最基础的流程图了。三个节点,两条连线,其中一条还是动态流动的。你可以用鼠标拖拽节点移动,用滚轮缩放画布,点击控制面板的按钮进行居中、缩放操作。迷你地图能让你在复杂流程中快速定位。是不是感觉已经有点模样了?但这只是冰山一角。
3. 核心进阶:打造属于AI工作流的自定义节点
基础节点只能显示个标签,这远远不够。在AI工作流里,一个节点可能代表“调用GPT接口”、“条件判断”、“数据提取”等复杂操作。我们需要能展示丰富信息、包含表单、甚至能进行配置的节点。这就必须用到Vue Flow的自定义节点功能。
3.1 设计并注册自定义节点类型
Vue Flow允许你通过 nodeTypes 属性注册多种类型的节点。每种类型对应一个你自己编写的Vue组件。我们来创建一个代表“AI模型调用”的节点。
首先,创建自定义节点组件 AIModelNode.vue:
<template>
<!-- 这个div就是节点的视觉容器,Vue Flow会为其注入位置、选中状态等属性 -->
<div class="ai-model-node" :class="{ selected }">
<div class="node-header">
<strong>{
{ data.label }}</strong>
<span class="model-type">{
{ data.modelType || 'GPT-4' }}</span>
</div>
<div class="node-content">
<div class="param-item">
<label>温度


234

被折叠的 条评论
为什么被折叠?



