Dify案例-接入飞书云文档实现需求质量评估

dify接入飞书云文档实现需求质量评估

  • 1. 背景与目标
  • 2. 系统架构与流程
    • 2.1 整体架构图
    • 2.2 核心流程
    • 2.3 dify工作流概览
  • 3. 实现细节
    • 3.1 文档提取
    • 3.2 需求评估
    • 3.3 参数提取
    • 3.4 创建飞书云文档
  • 4. 难点总结
    • 4.1 提示词编写
    • 4.2 关联飞书云文档
      • 4.2.1 安装飞书云文档插件并关联到飞书自建应用
      • 4.2.2 飞书自建应用关联到飞书云文档
      • 4.2.3 在dify的飞书云文档节点输入文件夹token
  • 5. 改进方案
    • 5.1 工作流优化
      • 5.1.1 优化前后对比
      • 5.1.2 优化细节
    • 5.2 配置环境
    • 5.3 读取飞书云文档需求

1. 背景与目标

  • 背景
    需求文档是软件开发的核心输入,但人工评估需求质量存在效率低、标准不一致等问题。
    飞书云文档作为团队协作工具,可结合自动化工具实现质量评估。
    Dify 作为低代码/自动化平台,需与飞书云文档集成,提升需求管理效率。
  • 目标
    实现 Dify 读取本地需求文档内容。
    通过预定义规则,使用 AI 模型对需求文档进行质量评分(如完整性、清晰度、可测试性等)。
    将评估结果生成结构化报告反馈至飞书文档。

2. 系统架构与流程

2.1 整体架构图

+-------------------+       +----------------+       +---------------+
|    本地文档        |       | Dify 平台       |       | 评估结果输出    |
| - 需求文档存储      |<----->| - 数据接入模块   |<----->| - 可视化报告    |
|                   |       | - 质量评估引擎   |       |               |
+-------------------+       +----------------+       +---------------+

2.2 核心流程

  • 文档读取:用户上传需求文档至Dify。
  • 预处理:清洗文档格式(如 Markdown/富文本转换)、提取关键字段(需求描述、验收标准等)。
  • 质量评估:
    • 规则引擎:基于预设规则。
    • AI 模型:使用 LLM 模型分析需求描述的清晰度、歧义性。
  • 结果反馈:将评估结果回写至飞书文档或推送至指定群组。

2.3 dify工作流概览

在这里插入图片描述

3. 实现细节

3.1 文档提取

创建一个空白应用,添加开始节点,在开始节点中定义一个变量来存放上传的需求文档
在这里插入图片描述

使用文档提取器读取该需求文档内容,输出为text。
在这里插入图片描述

3.2 需求评估

添加LLM节点,编辑系统提示词和用户提示词,制定需求质量评估规则进行需求评估,输出为text。
这里需注意,system级别的提示词和user级别的提示词的区别。在上个节点中的输出只能在user级别的提示词中被处理,如果没有user提示词,而选择用system级别的提示词处理该变量,会产生报错。
在这里插入图片描述

此节点作为该应用的核心部分,承担了需求质量评估的作用,我们在这个节点定义需求质量评估规则。提示词工程的精细度决定了需求评估的准确性。

3.3 参数提取

后面的飞书云文档插件,要求输入变量作为文档标题和文档内容。而在需求评估节点,并没有这些参数内容输出,因此我们要从需求评估LLM节点的输出text中,提取出这两个参数。
添加参数提取节点,用于从需求评估节点的结果中提取关键参数作为文档标题和文档内容。
在这里插入图片描述

3.4 创建飞书云文档

创建飞书云文档,将结构化输出写入。此处需要设置文档标题为参数提取节点中的文档标题参数,文档内容设置为参数提取节点中的文档内容参数。另外还需要填写文档所在文件夹的Token。
在这里插入图片描述

4. 难点总结

4.1 提示词编写

下面提供system和user两块提示词的内容,存在优化空间。

system提示词,定义角色和能力,以及目标

# 专家角色设定:QA需求质量评估专家## 身份定义:
你是一名资深软件需求质量评估专家,精通IEEE 830、ISO/IEC 25030等标准,擅长从技术可行性、业务价值、风险管理多角度评估需求质量,并给出评分依据和改进建议。## 核心技能:
-需求分析方法(用例分析、用户故事拆分)
-非功能需求(性能、安全、可维护性)识别
-矛盾点与模糊术语检测
-风险评估与优先级划分(MoSCoW法)
-需求可测试性(定义验收标准)# 需求质量评估维度
请按以下维度分析需求文档,针对每个问题提供改进建议:
评估维度权重评分标准(1-5分)得分
-评估维度:命名规范性
权重:10%
评估标准:
1分:含技术术语(如"开发/接口")
3分:描述功能但无价值
5分:"动词+业务价值"(如"提升XX转化率")
附加项:需求名称是否从开发者角度来描述,是则在此维度得分基础上减0.5分
-评估维度:用户价值明确
权重:25%
1分:无用户故事
3分:有用户但无痛点
5分:清晰用户故事+数据支撑(如"减少30%客诉")
-评估维度:验收标准量化
权重:20%
1分:仅描述"功能可用"
3分:部分量化指标
5分:明确成功指标(如"响应时间≤2s/错误率<0.1%")
-评估维度:场景覆盖度
权重:15%
1分:仅主流程
3分:主流程+部分异常
5分:覆盖网络/并发/兼容性等全场景
附加项:
是否存在歧义词(例如‘支持多种格式’未明确具体格式)?是则在此维度得分基础上减0.2分
高层需求是否已逐级拆解到子功能?否则在此维度得分基础上减0.2分
是否存在未定义的业务场景或用户角色?是则在此维度得分基础上减0.1分
是否遗漏系统边界外的依赖项(如第三方接口)?是则在此维度得分基础上减0.1分
-评估维度:技术合理性
权重:10%
1分:捆绑具体技术方案(如"必须用Redis")
3分:有技术风险未评估
5分:方案中立+风险评估完备
附加项:
是否符合GDPR/CCPA等数据法规?否则在此维度得分基础上减0.2分
是否包含无障碍访问设计(WCAG标准)?否则在此维度得分基础上减0.2分
-评估维度:优先级合理
权重:10%
1分:与OKR无关
3分:关联次要目标
5分:直接支撑KR且ROI清晰
-评估维度:可测试性
权重:10%
1分:无测试方案
3分:需自研工具
5分:现有工具全覆盖+数据可获取# 权重计算
总得分 = Σ(各维度得分 × 权重)
优秀:≥4.5分(总分)
合格:3.0-4.4分
需重构:<3.0分# 生成结构化报告
创建飞书文档并根据以下模版生成报告
# 需求质量评估报告_需求ID
需求名称:
## 1. 质量评估
以表格形式展现,展示评估维度、权重、分数、评分依据四列,最后一行展示总质量分。
## 2. 关键问题  
- [优先级:高] 问题描述 + 违反的质量属性  
- [优先级:中] ...  
## 3. 改进建议  
- 对模糊需求"XXX"的澄清方案:建议增加边界条件定义(示例:用户并发数≥1000时...)  
## 4. 风险评估  
- 技术风险:需引入未经验证的AI框架,建议增加POC阶段 

user提示词,用户需要做的应用做的事情

# 阅读以下需求文档内容{{#1743404017066.text#}}# 进行需求质量评估# 输出结果

4.2 关联飞书云文档

在创建飞书云文档节点中,我们需要调用飞书云文档插件下的工具。
这一步的前提条件是dify需要在插件市场安装飞书云文档插件。

4.2.1 安装飞书云文档插件并关联到飞书自建应用

标签下拉选择社交类型,搜索feishu,安装飞书云文档插件。
在这里插入图片描述

安装完成之后,需要对飞书云文档进行授权,输入app ID和app Secret。这两项值应该从飞书开发者后台获取。
进入飞书开放平台的开发者后台(可以切换成飞书个人用户账号登录),创建企业自建应用。
在这里插入图片描述
进入凭证与基础信息页面,复制app ID和app Secret,输入到dify的飞书云文档插件中去进行授权,授权成功,dify通过飞书云文档插件能关联到该飞书自建应用。

4.2.2 飞书自建应用关联到飞书云文档

我们通过为飞书自建应用创建机器人能力,再操作该机器人加入群组,给目标飞书云文档文件夹添加该群组操作权限来使飞书自建应用能操作飞书云文档下的文件夹(因为我们目标是要在该文件夹下创建编辑云文档)。
下面是具体实施步骤。
进入应用详情页面,添加应用能力为机器人。
在这里插入图片描述
进入权限管理,添加云文档的应用身份权限的所有权限,使该应用具备操作云文档的权限。
在这里插入图片描述
进入版本管理与发布,创建版本并发布。
在这里插入图片描述
飞书创建群组,并在群组设置中添加该应用机器人。
在这里插入图片描述
添加完成之后,进入云盘的目标文件夹,为该文件夹添加协作者为该群组,并且给可管理权限即可。

4.2.3 在dify的飞书云文档节点输入文件夹token

通过以上操作,我们已经让dify的飞书云文档节点具备了操作飞书云文档文件夹的能力,但我们还需要告诉该节点,我需要将文件创建到哪个飞书云文档文件夹下。
配置完成后,需要回到dify的飞书云文档节点输入文件夹token。如何获取文件夹token?最简单的方法,可以在网页端打开该飞书文件夹,通过url链接获取到文件夹token,将该token输入到节点中。
在这里插入图片描述
其他获取方式请见飞书开发者手册。
将以上token输入到dify的飞书云文档节点即可。

5. 改进方案

工作流图

5.1 工作流优化

经测试,上文工作流为串行运行,存在耗时长的弊端。经测试,分析1个需求文档的各节点耗时如下:

5.1.1 优化前后对比

在这里插入图片描述
在这里插入图片描述
因此优化工作流节点,将参数提取器与需求评估LLM节点并行运行。经测试,分析1个需求文档的各节点耗时如下:
在这里插入图片描述

5.1.2 优化细节

  • 参数提取器获取飞书云文档的内容,从中提取需求ID,作为文档标题的重要元素。
  • 需求评估获取飞书云文档的内容,输出text(String)作为文档内容。
    在这里插入图片描述

5.2 配置环境

在创建和读取飞书云文档时,需要输入token,此内容可以保存在环境变量中。
在这里插入图片描述

5.3 读取飞书云文档需求

将本地文件上传和提取文档内容节点更换为获取飞书云文档节点,输入为文档的url,文档返回格式为text。
文档的url为开始节点的变量传入。该变量需定义为文本类型。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/75696.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器视觉工程师的专业精度决定职业高度,而专注密度决定成长速度。低质量的合群,不如高质量独处

在机器视觉行业&#xff0c;真正的技术突破往往诞生于深度思考与有效碰撞的辩证统一。建议采用「70%高质量独处30%精准社交」的钻石结构&#xff0c;构建可验证的技术能力护城河。记住&#xff1a;你的专业精度决定职业高度&#xff0c;而专注密度决定成长速度。 作为机器视觉工…

字符串移位包含问题

字符串移位包含问题 #include <iostream> #include <algorithm> using namespace std; int main(){string a,b;cin>>a>>b;//谁长遍历谁if(a.size()<b.size()) swap(a,b);//1-对整个字符串进行移位for(int i0; i<a.size(); i){//每次循环都将第一…

SQL 查询执行顺序

SQL 查询的逻辑处理顺序&#xff08;即 SQL 引擎解析和执行查询的顺序&#xff09;与书写顺序不同。以下是 SQL 查询的完整执行顺序&#xff1a; 1. 逻辑执行顺序 FROM 和 JOIN - 确定数据来源表并执行连接操作 WHERE - 对行进行筛选 GROUP BY - 将数据分组 HAVING - 对分组…

核心知识——Spark核心数据结构:RDD

引入 通过前面的学习&#xff0c;我们对于Spark已经有一个基本的认识&#xff0c;并且搭建了一个本地的练习环境&#xff0c;因为本专栏的主要对象是数仓和数分&#xff0c;所以就不花大篇幅去写环境搭建等内容&#xff0c;当然&#xff0c;如果感兴趣的小伙伴可以留言&#x…

Spring Boot 嵌入式容器性能对决:Tomcat vs Undertow!

文章目录 引言理论基础嵌入式容器TomcatUndertow 实战性能测试配置 Tomcat 和 Undertow创建测试控制器使用Jmeter压测 总结 引言 在现代应用开发中&#xff0c;选择合适的嵌入式容器对于提升应用的性能和响应性至关重要。Spring Boot 提供了多种嵌入式容器选项&#xff0c;其中…

计算机系统---GPU

硬件架构 核心处理器&#xff1a; 流处理器&#xff08;SP&#xff09;&#xff1a;是GPU进行计算的核心单元&#xff0c;数量众多。例如&#xff0c;NVIDIA的高端GPU可能拥有数千个流处理器。它们可以并行执行大量的计算任务&#xff0c;如在图形渲染中对每个顶点或像素进行独…

【GPT写代码】动作视频切截图研究器

目录 背景源代码 end 背景 用python写一个windows环境运行的动作视频切截图研究器&#xff0c;用路径浏览的方式指定待处理的视频文件&#xff0c;然后点击分析按钮&#xff0c;再预览区域显示视频预览画面&#xff0c;然后拖动时间轴&#xff0c;可以在预览区域刷新显示相应的…

在 .NET 8 中使用自定义令牌身份验证掌握 SignalR Hub 安全性

最近在练习做一个 Web 开发项目&#xff0c;需要使用 WebSockets 传输数据&#xff0c;实现实时通信。这是一个 React.js 项目&#xff0c;后端是 .NET。 虽然 MSDN 提供了出色的顶级文档&#xff0c;但它通常缺少高级用例所需的低级细节。 一种这样的场景是使用自定义令牌对…

[2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——

前言 类型 太赫兹 + 超表面 太赫兹 + 超表面 太赫兹+超表面 期刊 O p e n A c c e s s Open Access Open

家里网络访问Github有时候打不开,解决办法

1、修改Hosts文件修改法 通过DNS查询工具&#xff08;如&#xff09;获取最新GitHub域名解析IP修改系统hosts文件&#xff08;路径&#xff1a;C:\Windows\System32\drivers\etc\hosts&#xff09;&#xff0c;添加&#xff1a;20.205.243.166 github.com 20.27.177.113 github…

MyBatis操作数据库(1)

1. MyBatis 简介 MyBatis 是一款持久层框架&#xff0c;简化了 JDBC 的复杂操作&#xff0c;通过配置和映射文件将 Java 对象与数据库表关联。核心优势&#xff1a; 自动管理资源&#xff1a;无需手动关闭连接、释放资源。 动态 SQL&#xff1a;支持参数绑定、条件查询等。 …

ModuleNotFoundError: No module named ‘matplotlib_inline‘

ModuleNotFoundError: No module named matplotlib_inline 1. ModuleNotFoundError: No module named matplotlib_inline2. matplotlib-inlineReferences 如果你在普通的 Python 脚本或命令行中运行代码&#xff0c;那么不需要 matplotlib_inline&#xff0c;因为普通的 Python…

SSL证书自动化管理(ACME协议)工作流程介绍

SSL证书自动化管理&#xff08;ACME协议&#xff09;是一种用于自动化管理SSL/TLS证书的协议&#xff0c;以下是其详细介绍&#xff1a; 一、ACME协议概述 ACME协议由互联网安全研究小组&#xff08;ISRG&#xff09;设计开发&#xff0c;旨在实现SSL证书获取流程的自动化。通…

基于FPGA的特定序列检测器verilog实现,包含testbench和开发板硬件测试

目录 1.课题概述 2.系统测试效果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 本课题采用基于伪码匹配相关峰检测的方式实现基于FPGA的特定序列检测器verilog实现,包含testbench和开发板硬件测试。 2.系统测试效果 仿真测试 当检测到序列的时候&#xf…

#管理Node.js的多个版本

在 Windows 11 上管理 Node.js 的多个版本&#xff0c;最方便的方法是使用 nvm-windows&#xff08;Node Version Manager for Windows&#xff09;。它允许你轻松安装、切换和管理多个 Node.js 版本。 &#x1f4cc; 方法 1&#xff1a;使用 nvm-windows&#xff08;推荐 ✅&a…

【已解决】Webstorm 每次使用 git pull/push 都要输入令牌/密码登录

解决办法&#xff1a;勾上【使用凭据帮助程序】&#xff08;英文&#xff1a;Use credential helper&#xff09;

大模型架构记录13【hr agent】

一 Function calling 函数调用 from dotenv import load_dotenv, find_dotenvload_dotenv(find_dotenv())from openai import OpenAI import jsonclient OpenAI()# Example dummy function hard coded to return the same weather # In production, this could be your back…

Spring Boot向Vue发送消息通过WebSocket实现通信

注意&#xff1a;如果后端有contextPath&#xff0c;如/app&#xff0c;那么前端访问的url就是ip:port/app/ws 后端实现步骤 添加Spring Boot WebSocket依赖配置WebSocket端点和消息代理创建控制器&#xff0c;使用SimpMessagingTemplate发送消息 前端实现步骤 安装sockjs-…

【嵌入式学习5】PyQt5模块介绍、创建第一个窗口

目录 1、PyQt介绍 ①特点 ②主要组件 2、创建第一个窗口 exce_() 1、PyQt介绍 PyQt 是一个用于创建图形用户界面&#xff08;GUI&#xff09;应用程序的 Python 库&#xff0c;它是 Qt 框架的 Python 绑定。 ①特点 跨平台&#xff1a;支持多种操作系统&#xff0c;包括…

封装自己的api签名sdk

api平台接口调用&#xff0c;需要通过签名去核对是不是有效的用户&#xff0c;&#xff0c;一般会给两个key&#xff0c;acceeKey 和 secretKey,第一个相当于用户名&#xff0c;第二个相当于密钥&#xff0c;&#xff0c;&#xff0c;前端通过一定的算法&#xff0c;&#xff0…