.NET 开源工作流: Slickflow.NET 工作流引擎关于AI大模型的应用实践
Slickflow.NET 中 AI 大模型的应用实践概述Slickflow.NET 是一个基于 .NET 的开源工作流引擎在 3.5.0 版本中引入了强大的 AI 大模型集成能力。通过集成 DeepSeek、OpenAI 等主流大模型服务Slickflow.NET 实现了三个核心 AI 特性为传统的工作流引擎注入了智能化的新活力。这三个核心特性分别是文生流程图Text-to-BPMN用户输入自然语言描述AI 自动生成符合 BPMN 2.0 规范的流程图图片分类识别Image Classification利用多模态大模型根据用户上传的图片进行智能分类和识别RAG 增强检索RAG-Enhanced Retrieval结合向量数据库和大模型实现基于知识库的智能问答这些功能的引入不仅大大降低了工作流设计的门槛也为工作流引擎的应用场景带来了革命性的变化。本文将深入探讨这三个特性的技术实现原理、应用场景以及设计思路。一、文生流程图Text-to-BPMN1.1 功能概述与价值文生流程图是 Slickflow.NET 中最具创新性的 AI 特性。传统的 BPMN 流程图设计需要用户具备一定的业务建模知识熟悉各种流程元素如开始事件、用户任务、网关等并且需要手动拖拽和连接各个节点。这个过程对于非技术背景的业务人员来说学习成本较高设计效率也相对较低。文生流程图功能彻底改变了这一现状。用户只需用自然语言描述业务流程系统就能自动理解用户的意图并生成符合 BPMN 2.0 标准的流程图 JSON 数据。例如用户输入创建一个订单处理流程开始 - 验证订单 - 检查库存 - 如果库存充足则发货否则通知缺货 - 结束系统就能自动生成包含开始事件、用户任务、条件网关、结束事件等完整元素的流程图。该功能基于通义千问qwen-plus实现。推理模型相比普通的大语言模型在逻辑推理和结构化输出方面表现更加出色这对于生成符合规范的 BPMN 流程图至关重要。1.2 技术实现原理1.2.1 系统提示词System Prompt设计系统提示词的设计是整个功能的核心。为了让 AI 能够准确理解需求并生成符合 BPMN 2.0 规范的流程图系统提示词需要包含以下几个关键部分角色定义明确告诉 AI 它是一个 BPMN 2.0 建模助手专门负责根据用户描述生成流程模型。输出格式要求严格规定输出必须是有效的 JSON 格式并且必须包含三个核心部分Process流程定义信息包含流程 ID、名称、是否可执行等属性ProcessNodes流程节点数组每个节点包含 ID、名称、类型等信息SequenceFlows连接线数组定义节点之间的流转关系节点类型约束明确列出支持的节点类型包括开始事件startEvent、结束事件endEvent、用户任务userTask、服务任务serviceTask、排他网关exclusiveGateway等并说明每种节点的用途和使用场景。JSON Schema 规范提供完整的 JSON Schema 定义确保 AI 生成的 JSON 结构完全符合预期。Schema 中定义了每个字段的类型、是否必填、取值范围等约束条件。输出要求强调只输出 JSON 内容不包含任何额外的解释、描述或代码块标记确保后续解析的准确性。通过这样详细的系统提示词设计AI 能够准确理解任务要求生成符合规范的流程图数据。1.2.2 API 调用与响应处理系统通过BpmnApiClient类与大模型 API 进行交互。该类封装了 HTTP 请求的构建、发送和响应处理逻辑。关键实现包括请求构建根据配置的模型类型DeepSeek 或通义千问构建符合对应 API 规范的请求体。请求体包含系统提示词、用户输入、模型参数如 temperature、max_tokens等信息。超时控制使用CancellationToken设置 120 秒的超时时间避免因网络问题或 API 响应慢导致的长时间等待。响应解析从 API 返回的 JSON 响应中提取生成的内容。由于不同模型的响应格式可能略有差异需要根据实际情况进行适配。错误处理对网络异常、超时、API 错误等情况进行妥善处理提供清晰的错误信息便于问题排查。public async Taskstring GenerateBpmnProcessAsync(string message) { var chatBpmnRequest GetChatRequestMessageByModel(message); var cts new CancellationTokenSource(TimeSpan.FromSeconds(120)); try { // 构建并发送 HTTP 请求 var response await _httpClient.SendAsync(httpRequest, HttpCompletionOption.ResponseHeadersRead, cts.Token); // 解析响应并提取生成的内容 var content root.GetProperty(choices)[0] .GetProperty(message) .GetProperty(content) .GetString(); return content; } catch (TaskCanceledException ex) { throw new HttpRequestException($API request timeout., ex); } }1.2.3 智能缓存机制为了提高响应速度和降低成本系统实现了基于 TF-IDF词频-逆文档频率和 LSHLocality-Sensitive Hashing局部敏感哈希的智能缓存机制。TF-IDF 向量化将用户的问题文本转换为 TF-IDF 向量。TF-IDF 能够反映词语在文档中的重要性既考虑了词频TF也考虑了逆文档频率IDF能够有效区分不同问题的语义特征。LSH 快速检索使用 LSH 算法将高维的 TF-IDF 向量映射到低维的哈希桶中。LSH 的特点是相似的向量会被映射到相同的哈希桶这样可以在 O(1) 的时间复杂度内快速找到相似的问题。相似度计算对于 LSH 检索到的候选问题使用余弦相似度进行精确匹配。余弦相似度能够衡量两个向量的方向相似性值域在 [0, 1] 之间值越大表示越相似。缓存策略当相似度超过阈值默认 0.7时直接返回缓存的答案避免重复调用 API。如果缓存未命中或相似度不足则调用 API 生成新答案并将问题和答案存入缓存。缓存管理当缓存记录数量超过上限默认 1000 条时根据访问频率和最近访问时间计算得分删除得分最低的记录保持缓存的有效性和新鲜度。这种缓存机制能够显著减少 API 调用次数降低使用成本同时提高响应速度改善用户体验。1.3 应用场景文生流程图功能在实际应用中具有广泛的价值业务流程快速原型业务人员可以用自然语言快速描述业务流程系统自动生成流程图用于需求讨论和方案验证大大提高了沟通效率。知识传承将资深业务专家的经验以自然语言的形式记录下来通过 AI 自动转换为标准化的流程图便于知识沉淀和传承。流程优化对现有流程进行描述AI 生成流程图后可以直观地看到流程结构便于发现优化点。教育培训作为 BPMN 学习的辅助工具帮助初学者理解如何将业务描述转换为标准化的流程图。1.4 技术优势相比传统的流程图设计方式文生流程图具有以下优势降低学习成本用户无需学习 BPMN 的复杂语法和规范只需用自然语言描述即可。提高设计效率从描述到流程图生成整个过程只需几秒钟相比手动设计节省大量时间。减少人为错误AI 生成的流程图严格遵循 BPMN 2.0 规范避免了手动设计时可能出现的结构错误。支持迭代优化用户可以不断调整自然语言描述快速生成不同版本的流程图进行对比。二、图片分类识别Image Classification2.1 功能概述与价值随着多模态大模型如 GPT-4 Vision、Claude 3 等的快速发展AI 已经具备了强大的视觉理解能力。Slickflow.NET 充分利用了这一技术趋势在工作流引擎中集成了图片分类识别功能使得工作流不仅能够处理文本数据还能处理图片数据大大扩展了应用场景。图片分类识别功能允许用户在工作流节点中上传图片系统利用多模态大模型的视觉能力对图片进行智能分析和分类。这个功能的核心价值在于将非结构化的图片数据转换为结构化的信息为后续的业务处理提供依据。2.2 技术实现原理2.2.1 多模态消息构建多模态大模型如 OpenAI 的 GPT-4 Vision支持同时接收文本和图片作为输入。系统通过LlmChatMessageBuilder类构建符合 API 规范的多模态消息。图片预处理用户上传的图片通常以 Base64 编码的形式传输。系统首先对 Base64 字符串进行清洗去除可能存在的data:image/xxx;base64,前缀只保留纯 Base64 编码内容。MIME 类型识别根据图片文件的扩展名.jpg、.png、.gif、.webp、.bmp 等推断正确的 MIME 类型。正确的 MIME 类型对于 API 调用至关重要错误的类型可能导致 API 返回 400 错误。消息格式构建按照 OpenAI 的多模态消息格式构建包含文本和图片的消息内容。消息结构包括type: text用户输入的文本描述或问题type: image_url图片的 data URI格式为data:{mimeType};base64,{base64Content}detail图片处理精度可选值包括 low低精度快速处理、high高精度详细分析、auto自动选择系统提示词根据业务场景配置系统提示词指导 AI 如何分析图片。例如对于文档识别场景可以提示你是一个专业的文档识别助手请识别图片中的文档类型并提取关键信息。// 构建多模态消息的核心逻辑 if (imageFileData ! null imageFileData.MeidaType MultiMediaTypeEnum.Image) { // 处理 Base64 编码和 MIME 类型 var imageUrl $data:{mimeType};base64,{rawBase64}; // 构建多模态内容 var multiModalContent new Listobject { new { type text, text userMessage }, new { type image_url, image_url new { url imageUrl, detail auto } } }; }2.2.2 API 调用与结果处理系统通过OpenAILlmService类调用多模态大模型 API。调用过程包括模型选择根据配置选择合适的多模态模型。OpenAI 的 GPT-4 Vision 是目前最成熟的多模态模型之一支持高精度的图片理解。参数配置设置合适的max_tokens最大输出长度和temperature创造性参数。对于分类任务通常使用较低的 temperature 值如 0.3-0.5以获得更确定性的结果。响应解析从 API 返回的 JSON 响应中提取 AI 的分析结果。结果通常是结构化的文本描述包含图片类型、关键信息、识别置信度等。错误处理对图片格式错误、API 调用失败、超时等情况进行妥善处理提供友好的错误提示。2.3 应用场景图片分类识别功能在实际业务中具有广泛的应用价值文档类型识别在文档管理流程中用户上传图片AI 自动识别是发票、合同、身份证、营业执照等不同类型的文档并根据识别结果路由到不同的处理流程。质量检测在制造业的质量控制流程中上传产品图片AI 判断是否存在缺陷、是否符合质量标准自动触发返工或放行流程。内容提取从图片中提取文字、表格、图表等信息转换为结构化数据用于后续的数据处理和分析。身份验证在用户注册或实名认证流程中识别身份证、护照等证件图片提取关键信息并验证真伪。异常检测在监控流程中分析监控图片识别异常情况如设备故障、安全隐患等自动触发告警流程。2.4 实际应用示例动物分类识别为了更好地说明图片分类识别功能我们来看一个具体的应用示例动物分类识别系统。场景描述在一个宠物管理系统中用户上传宠物照片系统需要自动识别照片中的动物是猫还是狗并根据识别结果进行后续的分类处理。工作流程用户上传图片用户通过工作流节点上传一张宠物照片图片以 Base64 编码的形式传输到系统。图片预处理系统对上传的图片进行预处理包括格式验证、Base64 编码清洗、MIME 类型识别等。构建多模态消息系统构建包含图片和文本提示的多模态消息系统提示词你是一个专业的动物识别助手请仔细分析图片中的动物判断是猫还是狗并说明判断依据。用户消息请识别这张图片中的动物类型图片数据Base64 编码的图片内容调用 AI 服务将构建好的消息发送给 GPT-4 Vision 模型模型分析图片内容。结果处理AI 返回识别结果例如这是一只猫。判断依据图片中的动物具有典型的猫科动物特征包括尖尖的耳朵、细长的尾巴、以及猫特有的面部特征。毛色为橘色和白色相间。流程路由系统根据识别结果猫或狗自动路由到不同的处理分支如果是猫进入猫咪宠物粮食购买流程如果是狗进入狗狗宠物粮食购买流程技术实现要点图片格式支持系统支持 JPG、PNG、GIF、WebP、BMP 等多种图片格式识别准确率GPT-4 Vision 在动物识别任务上准确率通常超过 95%响应时间整个识别过程通常在 3-5 秒内完成错误处理对于无法识别或识别结果不确定的情况系统会提示用户手动选择或重新上传这个示例展示了图片分类识别功能在实际业务中的应用价值通过 AI 自动识别大大简化了人工分类的工作提高了处理效率。2.5 技术优势图片分类识别功能为工作流引擎带来了以下优势扩展输入能力工作流不再局限于文本数据可以处理图片、文档等多媒体数据大大扩展了应用场景。自动化处理将人工判断转换为 AI 自动识别提高了处理效率和准确性。降低人工成本减少了人工审核和分类的工作量降低了运营成本。实时响应AI 识别通常在几秒内完成能够实现实时的流程处理。持续优化随着模型能力的提升识别准确率会不断提高系统能力持续增强。三、RAG 增强检索RAG-Enhanced Retrieval3.1 功能概述与价值RAGRetrieval-Augmented Generation检索增强生成是当前 AI 领域最热门的技术之一。它结合了信息检索和文本生成的优势通过从知识库中检索相关文档并将其作为上下文提供给大语言模型从而生成更准确、更相关、更符合事实的回答。Slickflow.NET 实现了基于 Supabase 向量数据库的 RAG 系统。这个系统的核心价值在于知识库驱动将企业知识库、文档库、FAQ 等结构化或非结构化文档转换为向量存储在数据库中AI 回答问题时能够基于这些知识库内容而不是仅依赖模型的训练数据。准确性提升通过检索相关文档作为上下文AI 生成的回答更加准确减少了幻觉hallucination问题即模型生成看似合理但实际错误的信息。实时更新知识库可以随时更新新的文档和知识可以立即被 AI 使用无需重新训练模型。领域适配针对特定领域如企业内部流程、产品文档、技术规范等构建知识库AI 能够提供更专业的回答。3.2 技术实现原理3.2.1 向量生成与存储RAG 系统的第一步是将文本转换为向量embedding。向量是文本在高维空间中的数值表示语义相似的文本在向量空间中距离较近。向量生成系统使用 OpenAI 的 Embeddings API模型text-embedding-3-small将文本转换为向量。这个模型专门为生成高质量的文本向量而设计生成的向量维度为 1536能够很好地捕捉文本的语义信息。向量存储生成的向量存储在 Supabase 的向量数据库中。Supabase 基于 PostgreSQL 的 pgvector 扩展提供了高效的向量存储和检索能力。每个文档的向量与原始文本内容、元数据如文档 ID、创建时间、标签等一起存储。批量处理为了提高效率系统支持批量生成向量和批量存储可以一次性处理大量文档。// 向量生成的核心逻辑 var embeddingRequest new { input question, model text-embedding-3-small }; var response await openAiHttpClient.PostAsync(/v1/embeddings, requestContent); // 解析返回的向量数组3.2.2 向量检索当用户提问时系统首先将问题转换为向量然后在向量数据库中搜索最相似的文档。相似度计算Supabase 使用余弦相似度cosine similarity计算查询向量与文档向量的相似度。余弦相似度衡量的是两个向量的方向相似性值域在 [0, 1] 之间值越大表示越相似。阈值控制系统支持设置两个相似度阈值高阈值match_threshold_high默认 0.8相似度超过此值的文档被认为是高度相关的优先返回。低阈值match_threshold_low默认 0.6相似度在此范围内的文档被认为是可能相关的作为补充返回。数量控制分别设置高阈值和低阈值的返回数量平衡检索的准确性和覆盖面。优化查询Supabase 提供了match_documents_optimizedRPC 函数使用索引和优化算法实现高效的向量检索即使面对百万级文档也能在毫秒级完成检索。// 向量检索的核心逻辑 var searchResults await ragService.MatchDocumentsOptimizedAsync( embedding, matchThresholdHigh: 0.8f, matchThresholdLow: 0.6f, matchCountHigh: 5, matchCountLow: 3 );3.2.3 上下文构建与增强生成检索到相关文档后系统将这些文档作为上下文与大语言模型一起构建增强的提示词。上下文组织将检索到的文档按照相似度从高到低排序并标注每个文档的相似度分数帮助模型理解文档的相关性。提示词构建构建包含以下部分的提示词系统角色明确告诉 AI 它是一个 RAG 助手需要基于提供的上下文回答问题。上下文内容按顺序列出检索到的文档每个文档包含内容和相似度分数。用户问题原始的用户提问。模型调用将构建好的提示词发送给大语言模型如 GPT-4模型基于上下文生成回答。由于有了相关的上下文信息模型生成的回答更加准确和具体。结果优化对模型生成的回答进行后处理如提取关键信息、格式化输出、添加引用来源等。3.3 RAG 工作流程完整的 RAG 工作流程包括以下步骤用户提问用户输入问题文本。问题向量化使用 Embeddings API 将问题转换为向量。向量检索在 Supabase 向量数据库中搜索相似文档返回相似度最高的若干文档。上下文构建将检索到的文档内容组织成结构化的上下文与用户问题一起构建提示词。增强生成调用大语言模型基于上下文生成回答。结果返回将生成的回答返回给用户可选地包含引用来源。3.4 应用场景RAG 增强检索功能在实际应用中具有广泛的价值智能客服将产品文档、FAQ、历史对话等构建为知识库AI 能够基于这些知识库回答用户问题提供准确的客服支持。企业内部问答将企业规章制度、操作手册、技术文档等构建为知识库员工可以快速查询相关信息提高工作效率。文档检索在大量文档中快速找到相关内容比传统的关键词搜索更加智能和准确。知识管理将分散的知识整合到统一的知识库中通过 AI 问答的方式实现知识的有效利用。培训辅助将培训材料构建为知识库学员可以通过问答的方式学习获得个性化的学习支持。3.5 实际应用示例电动汽车零配件知识库问答为了更好地说明 RAG 增强检索功能我们来看一个具体的应用示例电动汽车零配件知识库智能问答系统。场景描述一家电动汽车零配件供应商需要为客服团队和销售人员提供一个智能问答系统帮助他们快速回答客户关于零配件的技术问题、规格参数、兼容性等问题。知识库构建文档收集收集所有零配件的技术文档包括电池系统锂电池规格、充电参数、安全标准等电机系统电机型号、功率参数、效率曲线等电控系统控制器规格、通信协议、故障代码等充电设备充电桩规格、接口标准、安装要求等其他配件线束、传感器、冷却系统等文档向量化将所有文档内容转换为向量并存储到 Supabase 向量数据库中。例如文档Model X 电池包采用 21700 电芯容量 75kWh支持 150kW 快充30 分钟可充至 80%向量1536 维的浮点数数组表示这段文本的语义特征元数据标注为每个文档添加元数据如配件类型、适用车型、文档版本等便于后续检索和过滤。用户提问示例用户提问Model X 的电池容量是多少支持多快的充电速度RAG 处理流程问题向量化将用户问题Model X 的电池容量是多少支持多快的充电速度转换为向量使用 OpenAI Embeddings APItext-embedding-3-small生成 1536 维向量向量检索在 Supabase 向量数据库中搜索与问题向量最相似的文档设置相似度阈值高阈值 0.8低阈值 0.6返回相似度最高的 5 个文档例如文档1相似度 0.92Model X 电池包采用 21700 电芯容量 75kWh支持 150kW 快充30 分钟可充至 80%文档2相似度 0.85Model X 电池系统技术规格额定容量 75kWh最大充电功率 150kW使用液冷系统文档3相似度 0.78Model X 充电性能支持 CCS 标准最大充电电流 400A充电时间 30-45 分钟上下文构建将检索到的文档组织成上下文构建增强提示词You are a RAG assistant. Use the following context to answer the users question. Context: [Document 1] (similarity: 0.920) Model X 电池包采用 21700 电芯容量 75kWh支持 150kW 快充30 分钟可充至 80% [Document 2] (similarity: 0.850) Model X 电池系统技术规格额定容量 75kWh最大充电功率 150kW使用液冷系统 [Document 3] (similarity: 0.780) Model X 充电性能支持 CCS 标准最大充电电流 400A充电时间 30-45 分钟 User Question: Model X 的电池容量是多少支持多快的充电速度增强生成将构建好的提示词发送给 GPT-4 模型模型基于检索到的上下文生成回答返回结果AI 生成的回答根据技术文档Model X 的电池容量为 75kWh。 在充电速度方面Model X 支持最大 150kW 的快充功率使用 CCS 标准充电接口。 在理想条件下30 分钟可以充电至 80% 的电量完整充电时间约为 30-45 分钟。 电池系统采用液冷技术确保充电过程中的安全性和稳定性。系统优势准确性高回答基于实际的技术文档避免了 AI 生成错误信息的风险可追溯性每个回答都可以追溯到具体的文档来源便于验证和审核实时更新当有新的技术文档或规格更新时只需更新知识库系统立即可以使用新信息多语言支持知识库可以包含多语言文档系统能够用相应语言回答个性化可以根据不同的用户角色如技术人员、销售人员提供不同详细程度的回答这个示例展示了 RAG 系统在专业领域知识问答中的强大能力通过结合向量检索和大语言模型实现了准确、可追溯、实时更新的智能问答系统。3.6 技术优势RAG 系统相比传统的纯生成式 AI 具有以下优势准确性高基于知识库内容生成回答减少了错误信息的产生。可追溯性回答来源于知识库中的具体文档可以追溯到原始来源便于验证和审核。实时更新知识库可以随时更新新的知识可以立即被使用无需等待模型重新训练。成本可控相比微调模型RAG 系统的实现成本更低维护更简单。领域适配可以针对不同领域构建不同的知识库实现领域专业化。四、技术架构与设计思路4.1 整体架构Slickflow.NET 的 AI 功能采用了模块化的设计架构核心模块包括配置管理模块统一管理各种 AI 服务的配置信息包括 API Key、模型参数、服务地址等。配置信息支持加密存储确保安全性。服务抽象层定义了统一的 AI 服务接口IAiLlmService不同的 AI 服务OpenAI、DeepSeek、通义千问等实现该接口便于扩展和切换。消息构建器LlmChatMessageBuilder负责根据不同场景构建合适的消息格式支持纯文本、多模态、RAG 等多种模式。工具类模块提供向量生成、文本处理、相似度计算等通用工具供各个功能模块复用。缓存模块实现智能缓存机制减少 API 调用提高响应速度降低成本。4.2 关键技术点多模型支持系统设计时考虑了不同 AI 服务提供商的 API 差异通过抽象层实现了统一接口可以灵活切换不同的模型如 DeepSeek、OpenAI、通义千问等。智能缓存基于 TF-IDF 和 LSH 的缓存机制不仅能够缓存完全相同的请求还能识别语义相似的问题大大提高了缓存命中率。向量检索优化利用 Supabase 的向量数据库能力实现了高效的相似度搜索支持百万级文档的快速检索。多模态支持从架构设计上就考虑了多模态输入的支持不仅支持文本还支持图片、未来可能扩展到音频、视频等。配置灵活性通过AiActivityConfigEntity实体类可以灵活配置每个 AI 活动的行为包括模型选择、参数设置、提示词定制等。4.3 性能优化策略缓存机制智能缓存能够显著减少 API 调用次数。对于相似的问题系统直接返回缓存答案响应时间从几秒降低到毫秒级。超时控制使用CancellationToken严格控制 API 调用的超时时间避免长时间等待影响用户体验。批量处理支持批量生成向量和批量检索提高处理大量数据时的效率。阈值控制通过相似度阈值和数量控制平衡检索的准确性和性能避免检索过多无关文档影响生成质量。异步处理所有 API 调用都采用异步方式避免阻塞主线程提高系统的并发处理能力。4.4 安全性考虑API Key 加密所有 AI 服务的 API Key 都经过加密存储确保敏感信息的安全性。访问控制通过配置管理控制哪些功能可以使用哪些模型可以调用实现细粒度的访问控制。错误处理完善的错误处理机制避免敏感信息泄露同时提供清晰的错误提示便于问题排查。数据隐私对于涉及敏感数据的场景支持本地部署的模型避免数据上传到第三方服务。