【测试用例新增】AI:文多多 API 测试完善

This commit is contained in:
xiaoxin 2025-03-17 09:46:47 +08:00
parent a82abed2b5
commit c79273c5d6
2 changed files with 330 additions and 4 deletions

View File

@ -86,8 +86,29 @@ public class WddApi {
* 创建任务
*
* @param type 类型
* 1.智能生成主题要求
* 2.上传文件生成
* 3.上传思维导图生成
* 4.通过word精准转ppt
* 5.通过网页链接生成
* 6.粘贴文本内容生成
* 7.Markdown大纲生成
* @param content 内容
* type=1 用户输入主题或要求不超过1000字符
* type=24 不传
* type=3 幕布等分享链接
* type=5 网页链接地址http/https
* type=6 粘贴文本内容不超过20000字符
* type=7 大纲内容markdown
* @param files 文件列表
* 文件列表文件数不超过5个总大小不超过50M
* type=1 上传参考文件非必传支持多个
* type=2 上传文件支持多个
* type=3 上传思维导图xmind/mm/md仅支持一个
* type=4 上传word文件仅支持一个
* type=567 不传
* <p>
* 支持格式doc/docx/pdf/ppt/pptx/txt/md/xls/xlsx/csv/html/epub/mobi/xmind/mm
* @return 任务ID
*/
public ApiResponse createTask(String token, Integer type, String content, List<MultipartFile> files) {
@ -127,7 +148,7 @@ public class WddApi {
return this.webClient.get()
.uri(uri)
.retrieve()
.onStatus(STATUS_PREDICATE, EXCEPTION_FUNCTION.apply(null))
.onStatus(STATUS_PREDICATE, EXCEPTION_FUNCTION.apply(lang))
.bodyToMono(new ParameterizedTypeReference<ApiResponse>() {
})
.<Map<String, Object>>handle((response, sink) -> {
@ -164,15 +185,14 @@ public class WddApi {
* @param question 用户修改建议
* @return 大纲内容流
*/
public Flux<Map<String, Object>> updateOutlineContent(String token, String id, String markdown, String question) {
UpdateOutlineRequest request = new UpdateOutlineRequest(id, markdown, question);
public Flux<Map<String, Object>> updateOutlineContent(String token, UpdateOutlineRequest request) {
return this.webClient.post()
.uri("/api/ppt/v2/updateContent")
.header("token", token)
.body(Mono.just(request), UpdateOutlineRequest.class)
.retrieve()
.onStatus(STATUS_PREDICATE, EXCEPTION_FUNCTION.apply(request))
.bodyToFlux(new ParameterizedTypeReference<Map<String, Object>>() {
.bodyToFlux(new ParameterizedTypeReference<>() {
});
}

View File

@ -0,0 +1,306 @@
package cn.iocoder.yudao.framework.ai.ppt.wdd;
import cn.iocoder.yudao.framework.ai.core.model.wenduoduo.api.WddApi;
import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import reactor.core.publisher.Flux;
import java.util.Map;
import java.util.Objects;
/**
* {@link WddApi} 集成测试
*
* @author xiaoxin
*/
public class WddApiTests {
private final WddApi wddApi = new WddApi("https://docmee.cn");
private final String token = "sk_FJo7sKErrrEs5CIZz1";
@Test //获取token
@Disabled
public void testCreateApiToken() {
// 准备参数
String apiKey = "ak_RK1rm7TrEv3E3JSWIK";
WddApi.CreateTokenRequest request = new WddApi.CreateTokenRequest(apiKey);
// 调用方法
String token = wddApi.createApiToken(request);
// 打印结果
System.out.println(token);
}
@Test // 创建任务
@Disabled
public void testCreateTask() {
WddApi.ApiResponse apiResponse = wddApi.createTask(token, 1, "dify 介绍", null);
System.out.println(apiResponse);
}
@Test // 创建大纲
@Disabled
public void testGenerateOutlineRequest() {
WddApi.GenerateOutlineRequest request = new WddApi.GenerateOutlineRequest("1901449466163105792", "medium", null, null, null, null);
//调用
Flux<Map<String, Object>> flux = wddApi.generateOutlineContent(token, request);
StringBuffer contentBuffer = new StringBuffer();
flux.doOnNext(chunk -> {
contentBuffer.append(chunk.get("text"));
if (Objects.equals(Integer.parseInt(String.valueOf(chunk.get("status"))), 4)) {
// status 4最终 markdown 结构树
System.out.println(JsonUtils.toJsonString(chunk.get("result")));
System.out.println(" ########################################################################");
}
}).then().block();
// 打印结果
System.out.println(contentBuffer);
}
@Test // 修改大纲
@Disabled
public void testUpdateOutlineContentRequest() {
WddApi.UpdateOutlineRequest request = new WddApi.UpdateOutlineRequest("1901449466163105792", TEST_OUT_LINE_CONTENT, "精简一点,三个章节即可");
//调用
Flux<Map<String, Object>> flux = wddApi.updateOutlineContent(token, request);
StringBuffer contentBuffer = new StringBuffer();
flux.doOnNext(chunk -> {
contentBuffer.append(chunk.get("text"));
if (Objects.equals(Integer.parseInt(String.valueOf(chunk.get("status"))), 4)) {
// status 4最终 markdown 结构树
System.out.println(JsonUtils.toJsonString(chunk.get("result")));
System.out.println(" ########################################################################");
}
}).then().block();
// 打印结果
System.out.println(contentBuffer);
}
@Test // 获取 PPT 模版分页
@Disabled
public void testGetPptTemplatePage() {
// 准备参数
WddApi.TemplateQueryRequest.Filter filter = new WddApi.TemplateQueryRequest.Filter(1, null, null, null);
WddApi.TemplateQueryRequest request = new WddApi.TemplateQueryRequest(1, 10, filter);
//调用
WddApi.PagePptTemplateInfo pptTemplatePage = wddApi.getPptTemplatePage(token, request);
// 打印结果
System.out.println(pptTemplatePage);
}
@Test // 生成 PPT
@Disabled
public void testGeneratePptx() {
// 准备参数
WddApi.GeneratePptxRequest request = new WddApi.GeneratePptxRequest("1900913633555255296", "1804885538940116992", TEST_OUT_LINE_CONTENT);
//调用
WddApi.PptInfo pptInfo = wddApi.generatePptx("", request);
// 打印结果
System.out.println(pptInfo);
}
private final String TEST_OUT_LINE_CONTENT = """
# Dify新一代AI应用开发平台
## 1 什么是Dify
### 1.1 Dify定义AI应用开发平台
#### 1.1.1 低代码开发
Dify是一个低代码AI应用开发平台旨在简化AI应用的构建过程让开发者无需编写大量代码即可快速创建各种智能应用
#### 1.1.2 核心功能
Dify的核心功能包括数据集成模型选择流程编排和应用部署提供一站式解决方案加速AI应用的落地和迭代
#### 1.1.3 开源与商业
Dify提供开源版本和商业版本满足不同用户的需求开源版本适合个人开发者和小型团队商业版本则提供更强大的功能和技术支持
### 1.2 Dify解决的问题AI开发痛点
#### 1.2.1 开发周期长
传统AI应用开发周期长需要大量的人力和时间投入Dify通过可视化界面和预置组件大幅缩短开发周期
#### 1.2.2 技术门槛高
AI技术门槛高需要专业的知识和技能Dify降低技术门槛让更多开发者能够参与到AI应用的开发中来
#### 1.2.3 部署和维护复杂
AI应用的部署和维护复杂需要专业的运维团队Dify提供自动化的部署和维护工具简化流程降低成本
### 1.3 Dify发展历程
#### 1.3.1 早期探索
Dify的早期版本主要关注于自然语言处理领域的应用通过集成各种NLP模型提供文本分类情感分析等功能
#### 1.3.2 功能扩展
随着用户需求的不断增长Dify的功能逐渐扩展到图像识别语音识别等领域支持更多类型的AI应用
#### 1.3.3 生态建设
Dify积极建设开发者生态提供丰富的文档教程和案例帮助开发者更好地使用Dify平台共同推动AI技术的发展
## 2 Dify的核心功能
### 2.1 数据集成连接各种数据源
#### 2.1.1 支持多种数据源
Dify支持连接各种数据源包括关系型数据库NoSQL数据库文件系统云存储等满足不同场景的数据需求
#### 2.1.2 数据转换和清洗
Dify提供数据转换和清洗功能可以将不同格式的数据转换为统一的格式并去除无效数据提高数据质量
#### 2.1.3 数据安全
Dify注重数据安全采用各种安全措施保护用户的数据包括数据加密访问控制权限管理等
### 2.2 模型选择丰富的AI模型库
#### 2.2.1 预置模型
Dify预置了丰富的AI模型包括自然语言处理图像识别语音识别等领域的模型开发者可以直接使用这些模型无需自行训练极大的简化了开发流程
#### 2.2.2 自定义模型
Dify支持开发者上传自定义模型满足个性化的需求开发者可以将自己训练的模型部署到Dify平台上与其他开发者共享
#### 2.2.3 模型评估
Dify提供模型评估功能可以对不同模型进行评估选择最优的模型提高应用性能
### 2.3 流程编排可视化流程设计器
#### 2.3.1 可视化界面
Dify提供可视化的流程设计器开发者可以通过拖拽组件的方式设计AI应用的流程无需编写代码简单高效
#### 2.3.2 灵活的流程控制
Dify支持灵活的流程控制可以根据不同的条件执行不同的分支实现复杂的业务逻辑
#### 2.3.3 实时调试
Dify提供实时调试功能可以在设计流程的过程中实时查看流程的执行结果及时发现和解决问题
### 2.4 应用部署一键部署和管理
#### 2.4.1 快速部署
Dify提供一键部署功能可以将AI应用快速部署到各种环境包括本地环境云环境容器环境等
#### 2.4.2 自动伸缩
Dify支持自动伸缩可以根据应用的负载自动调整资源保证应用的稳定性和性能
#### 2.4.3 监控和告警
Dify提供监控和告警功能可以实时监控应用的状态并在出现问题时及时告警方便运维人员进行处理
## 3 Dify的特点和优势
### 3.1 低代码降低开发门槛
#### 3.1.1 可视化开发
Dify采用可视化开发模式开发者无需编写大量代码只需通过拖拽组件即可完成AI应用的开发降低了开发门槛
#### 3.1.2 预置组件
Dify预置了丰富的组件包括数据源组件模型组件流程控制组件等开发者可以直接使用这些组件提高开发效率
#### 3.1.3 减少代码量
Dify可以显著减少代码量降低开发难度让更多开发者能够参与到AI应用的开发中来
### 3.2 灵活满足不同场景需求
#### 3.2.1 支持多种数据源
Dify支持多种数据源可以连接各种数据源满足不同场景的数据需求
#### 3.2.2 支持自定义模型
Dify支持自定义模型开发者可以将自己训练的模型部署到Dify平台上满足个性化的需求
#### 3.2.3 灵活的流程控制
Dify支持灵活的流程控制可以根据不同的条件执行不同的分支实现复杂的业务逻辑
### 3.3 高效加速应用落地
#### 3.3.1 快速开发
Dify通过可视化界面和预置组件大幅缩短开发周期加速AI应用的落地
#### 3.3.2 快速部署
Dify提供一键部署功能可以将AI应用快速部署到各种环境提高部署效率
#### 3.3.3 自动化运维
Dify提供自动化的运维工具简化运维流程降低运维成本
### 3.4 开放构建繁荣生态
#### 3.4.1 开源社区
Dify拥有活跃的开源社区开发者可以在社区中交流经验分享资源共同推动Dify的发展
#### 3.4.2 丰富的文档
Dify提供丰富的文档教程和案例帮助开发者更好地使用Dify平台
#### 3.4.3 API支持
Dify提供API支持开发者可以通过API将Dify集成到自己的系统中扩展Dify的功能
## 4 Dify的使用场景
### 4.1 智能客服提升客户服务质量
#### 4.1.1 自动回复
Dify可以用于构建智能客服系统实现自动回复客户的常见问题提高客户服务效率
#### 4.1.2 情感分析
Dify可以对客户的语音或文本进行情感分析判断客户的情绪并根据情绪提供个性化的服务
#### 4.1.3 知识库问答
Dify可以构建知识库问答系统让客户通过提问的方式获取所需的信息提高客户满意度
### 4.2 金融风控提高风险识别能力
#### 4.2.1 欺诈检测
Dify可以用于构建金融风控系统实现欺诈检测识别可疑交易降低风险
#### 4.2.2 信用评估
Dify可以对用户的信用进行评估并根据评估结果提供不同的金融服务
#### 4.2.3 反洗钱
Dify可以用于反洗钱识别可疑资金流动防止犯罪行为
### 4.3 智慧医疗提升医疗服务水平
#### 4.3.1 疾病诊断
Dify可以用于辅助疾病诊断提高诊断准确率缩短诊断时间
#### 4.3.2 药物研发
Dify可以用于药物研发加速新药的发现和开发
#### 4.3.3 智能健康管理
Dify可以构建智能健康管理系统为用户提供个性化的健康建议和服务
### 4.4 智慧城市提升城市管理效率
#### 4.4.1 交通优化
Dify可以用于交通优化提高交通效率缓解交通拥堵
#### 4.4.2 环境监测
Dify可以用于环境监测实时监测空气质量水质等环境指标及时发现和解决环境问题
#### 4.4.3 智能安防
Dify可以用于智能安防提高城市安全水平预防犯罪行为
## 5 Dify的成功案例
### 5.1 Case 1某电商平台的智能客服
#### 5.1.1 项目背景
该电商平台客户服务压力大人工客服成本高需要一种智能化的解决方案
#### 5.1.2 解决方案
使用Dify构建智能客服系统实现自动回复客户的常见问题并根据客户的情绪提供个性化的服务
#### 5.1.3 效果
客户服务效率提高50%客户满意度提高20%人工客服成本降低30%
### 5.2 Case 2某银行的金融风控系统
#### 5.2.1 项目背景
该银行面临日益增长的金融风险需要一种更有效的风险识别和控制手段
#### 5.2.2 解决方案
使用Dify构建金融风控系统实现欺诈检测信用评估和反洗钱等功能提高风险识别能力
#### 5.2.3 效果
欺诈交易识别率提高40%信用评估准确率提高30%洗钱风险降低25%
### 5.3 Case 3某医院的辅助疾病诊断系统
#### 5.3.1 项目背景
该医院医生工作压力大疾病诊断准确率有待提高需要一种辅助诊断工具
#### 5.3.2 解决方案
使用Dify构建辅助疾病诊断系统根据患者的病历和症状提供诊断建议提高诊断准确率
#### 5.3.3 效果
疾病诊断准确率提高20%诊断时间缩短15%医生工作效率提高10%
## 6 Dify的未来展望
### 6.1 技术升级
#### 6.1.1 模型优化
Dify将不断优化预置模型提高模型性能并支持更多类型的AI模型
#### 6.1.2 流程引擎升级
Dify将升级流程引擎提高流程的灵活性和可扩展性支持更复杂的业务逻辑
#### 6.1.3 平台性能优化
Dify将不断优化平台性能提高平台的稳定性和可靠性满足大规模应用的需求
### 6.2 生态建设
#### 6.2.1 社区建设
Dify将继续加强开源社区建设吸引更多开发者参与共同推动Dify的发展
#### 6.2.2 合作伙伴拓展
Dify将拓展合作伙伴与更多的企业和机构合作共同推动AI技术的应用
#### 6.2.3 应用商店
Dify将构建应用商店让开发者可以分享自己的应用用户可以购买和使用这些应用构建繁荣的生态系统
### 6.3 应用领域拓展
#### 6.3.1 智能制造
Dify将拓展到智能制造领域为企业提供智能化的生产管理和质量控制解决方案
#### 6.3.2 智慧农业
Dify将拓展到智慧农业领域为农民提供智能化的种植和养殖管理解决方案
#### 6.3.3 更多领域
Dify将拓展到更多领域为各行各业提供智能化的解决方案推动社会发展
## 7 总结
### 7.1 Dify的价值
#### 7.1.1 降低AI开发门槛
Dify通过低代码的方式让更多开发者能够参与到AI应用的开发中来
#### 7.1.2 加速AI应用落地
Dify提供一站式解决方案加速AI应用的落地和迭代
#### 7.1.3 构建繁荣的AI生态
Dify通过开源社区和应用商店构建繁荣的AI生态系统
### 7.2 共同发展
#### 7.2.1 欢迎加入Dify社区
欢迎更多开发者加入Dify社区共同推动Dify的发展
#### 7.2.2 合作共赢
期待与更多的企业和机构合作共同推动AI技术的应用
#### 7.2.3 共创未来
让我们一起用AI技术改变世界共创美好未来""";
}