Commit c79273c5d6c151e5a9ed516bd1f4db15d8714643
1 parent
a82abed2
【测试用例新增】AI:文多多 API 测试完善
Showing
2 changed files
with
330 additions
and
4 deletions
yudao-module-ai/yudao-spring-boot-starter-ai/src/main/java/cn/iocoder/yudao/framework/ai/core/model/wenduoduo/api/WddApi.java
| ... | ... | @@ -86,8 +86,29 @@ public class WddApi { |
| 86 | 86 | * 创建任务 |
| 87 | 87 | * |
| 88 | 88 | * @param type 类型 |
| 89 | + * 1.智能生成(主题、要求) | |
| 90 | + * 2.上传文件生成 | |
| 91 | + * 3.上传思维导图生成 | |
| 92 | + * 4.通过word精准转ppt | |
| 93 | + * 5.通过网页链接生成 | |
| 94 | + * 6.粘贴文本内容生成 | |
| 95 | + * 7.Markdown大纲生成 | |
| 89 | 96 | * @param content 内容 |
| 97 | + * type=1 用户输入主题或要求(不超过1000字符) | |
| 98 | + * type=2、4 不传 | |
| 99 | + * type=3 幕布等分享链接 | |
| 100 | + * type=5 网页链接地址(http/https) | |
| 101 | + * type=6 粘贴文本内容(不超过20000字符) | |
| 102 | + * type=7 大纲内容(markdown) | |
| 90 | 103 | * @param files 文件列表 |
| 104 | + * 文件列表(文件数不超过5个,总大小不超过50M): | |
| 105 | + * type=1 上传参考文件(非必传,支持多个) | |
| 106 | + * type=2 上传文件(支持多个) | |
| 107 | + * type=3 上传思维导图(xmind/mm/md)(仅支持一个) | |
| 108 | + * type=4 上传word文件(仅支持一个) | |
| 109 | + * type=5、6、7 不传 | |
| 110 | + * <p> | |
| 111 | + * 支持格式:doc/docx/pdf/ppt/pptx/txt/md/xls/xlsx/csv/html/epub/mobi/xmind/mm | |
| 91 | 112 | * @return 任务ID |
| 92 | 113 | */ |
| 93 | 114 | public ApiResponse createTask(String token, Integer type, String content, List<MultipartFile> files) { |
| ... | ... | @@ -127,7 +148,7 @@ public class WddApi { |
| 127 | 148 | return this.webClient.get() |
| 128 | 149 | .uri(uri) |
| 129 | 150 | .retrieve() |
| 130 | - .onStatus(STATUS_PREDICATE, EXCEPTION_FUNCTION.apply(null)) | |
| 151 | + .onStatus(STATUS_PREDICATE, EXCEPTION_FUNCTION.apply(lang)) | |
| 131 | 152 | .bodyToMono(new ParameterizedTypeReference<ApiResponse>() { |
| 132 | 153 | }) |
| 133 | 154 | .<Map<String, Object>>handle((response, sink) -> { |
| ... | ... | @@ -164,15 +185,14 @@ public class WddApi { |
| 164 | 185 | * @param question 用户修改建议 |
| 165 | 186 | * @return 大纲内容流 |
| 166 | 187 | */ |
| 167 | - public Flux<Map<String, Object>> updateOutlineContent(String token, String id, String markdown, String question) { | |
| 168 | - UpdateOutlineRequest request = new UpdateOutlineRequest(id, markdown, question); | |
| 188 | + public Flux<Map<String, Object>> updateOutlineContent(String token, UpdateOutlineRequest request) { | |
| 169 | 189 | return this.webClient.post() |
| 170 | 190 | .uri("/api/ppt/v2/updateContent") |
| 171 | 191 | .header("token", token) |
| 172 | 192 | .body(Mono.just(request), UpdateOutlineRequest.class) |
| 173 | 193 | .retrieve() |
| 174 | 194 | .onStatus(STATUS_PREDICATE, EXCEPTION_FUNCTION.apply(request)) |
| 175 | - .bodyToFlux(new ParameterizedTypeReference<Map<String, Object>>() { | |
| 195 | + .bodyToFlux(new ParameterizedTypeReference<>() { | |
| 176 | 196 | }); |
| 177 | 197 | } |
| 178 | 198 | ... | ... |
yudao-module-ai/yudao-spring-boot-starter-ai/src/test/java/cn/iocoder/yudao/framework/ai/ppt/wdd/WddApiTests.java
0 → 100644
| 1 | +package cn.iocoder.yudao.framework.ai.ppt.wdd; | |
| 2 | + | |
| 3 | +import cn.iocoder.yudao.framework.ai.core.model.wenduoduo.api.WddApi; | |
| 4 | +import cn.iocoder.yudao.framework.common.util.json.JsonUtils; | |
| 5 | +import org.junit.jupiter.api.Disabled; | |
| 6 | +import org.junit.jupiter.api.Test; | |
| 7 | +import reactor.core.publisher.Flux; | |
| 8 | + | |
| 9 | +import java.util.Map; | |
| 10 | +import java.util.Objects; | |
| 11 | + | |
| 12 | + | |
| 13 | +/** | |
| 14 | + * {@link WddApi} 集成测试 | |
| 15 | + * | |
| 16 | + * @author xiaoxin | |
| 17 | + */ | |
| 18 | +public class WddApiTests { | |
| 19 | + | |
| 20 | + private final WddApi wddApi = new WddApi("https://docmee.cn"); | |
| 21 | + | |
| 22 | + | |
| 23 | + private final String token = "sk_FJo7sKErrrEs5CIZz1"; | |
| 24 | + | |
| 25 | + | |
| 26 | + @Test //获取token | |
| 27 | + @Disabled | |
| 28 | + public void testCreateApiToken() { | |
| 29 | + // 准备参数 | |
| 30 | + String apiKey = "ak_RK1rm7TrEv3E3JSWIK"; | |
| 31 | + WddApi.CreateTokenRequest request = new WddApi.CreateTokenRequest(apiKey); | |
| 32 | + // 调用方法 | |
| 33 | + String token = wddApi.createApiToken(request); | |
| 34 | + // 打印结果 | |
| 35 | + System.out.println(token); | |
| 36 | + } | |
| 37 | + | |
| 38 | + | |
| 39 | + @Test // 创建任务 | |
| 40 | + @Disabled | |
| 41 | + public void testCreateTask() { | |
| 42 | + WddApi.ApiResponse apiResponse = wddApi.createTask(token, 1, "dify 介绍", null); | |
| 43 | + System.out.println(apiResponse); | |
| 44 | + } | |
| 45 | + | |
| 46 | + | |
| 47 | + @Test // 创建大纲 | |
| 48 | + @Disabled | |
| 49 | + public void testGenerateOutlineRequest() { | |
| 50 | + WddApi.GenerateOutlineRequest request = new WddApi.GenerateOutlineRequest("1901449466163105792", "medium", null, null, null, null); | |
| 51 | + //调用 | |
| 52 | + Flux<Map<String, Object>> flux = wddApi.generateOutlineContent(token, request); | |
| 53 | + StringBuffer contentBuffer = new StringBuffer(); | |
| 54 | + flux.doOnNext(chunk -> { | |
| 55 | + contentBuffer.append(chunk.get("text")); | |
| 56 | + if (Objects.equals(Integer.parseInt(String.valueOf(chunk.get("status"))), 4)) { | |
| 57 | + // status 为 4,最终 markdown 结构树 | |
| 58 | + System.out.println(JsonUtils.toJsonString(chunk.get("result"))); | |
| 59 | + System.out.println(" ########################################################################"); | |
| 60 | + } | |
| 61 | + }).then().block(); | |
| 62 | + // 打印结果 | |
| 63 | + System.out.println(contentBuffer); | |
| 64 | + | |
| 65 | + } | |
| 66 | + | |
| 67 | + @Test // 修改大纲 | |
| 68 | + @Disabled | |
| 69 | + public void testUpdateOutlineContentRequest() { | |
| 70 | + WddApi.UpdateOutlineRequest request = new WddApi.UpdateOutlineRequest("1901449466163105792", TEST_OUT_LINE_CONTENT, "精简一点,三个章节即可"); | |
| 71 | + //调用 | |
| 72 | + Flux<Map<String, Object>> flux = wddApi.updateOutlineContent(token, request); | |
| 73 | + StringBuffer contentBuffer = new StringBuffer(); | |
| 74 | + flux.doOnNext(chunk -> { | |
| 75 | + contentBuffer.append(chunk.get("text")); | |
| 76 | + if (Objects.equals(Integer.parseInt(String.valueOf(chunk.get("status"))), 4)) { | |
| 77 | + // status 为 4,最终 markdown 结构树 | |
| 78 | + System.out.println(JsonUtils.toJsonString(chunk.get("result"))); | |
| 79 | + System.out.println(" ########################################################################"); | |
| 80 | + } | |
| 81 | + }).then().block(); | |
| 82 | + // 打印结果 | |
| 83 | + System.out.println(contentBuffer); | |
| 84 | + | |
| 85 | + } | |
| 86 | + | |
| 87 | + @Test // 获取 PPT 模版分页 | |
| 88 | + @Disabled | |
| 89 | + public void testGetPptTemplatePage() { | |
| 90 | + // 准备参数 | |
| 91 | + WddApi.TemplateQueryRequest.Filter filter = new WddApi.TemplateQueryRequest.Filter(1, null, null, null); | |
| 92 | + WddApi.TemplateQueryRequest request = new WddApi.TemplateQueryRequest(1, 10, filter); | |
| 93 | + //调用 | |
| 94 | + WddApi.PagePptTemplateInfo pptTemplatePage = wddApi.getPptTemplatePage(token, request); | |
| 95 | + // 打印结果 | |
| 96 | + System.out.println(pptTemplatePage); | |
| 97 | + } | |
| 98 | + | |
| 99 | + | |
| 100 | + @Test // 生成 PPT | |
| 101 | + @Disabled | |
| 102 | + public void testGeneratePptx() { | |
| 103 | + // 准备参数 | |
| 104 | + WddApi.GeneratePptxRequest request = new WddApi.GeneratePptxRequest("1900913633555255296", "1804885538940116992", TEST_OUT_LINE_CONTENT); | |
| 105 | + //调用 | |
| 106 | + WddApi.PptInfo pptInfo = wddApi.generatePptx("", request); | |
| 107 | + // 打印结果 | |
| 108 | + System.out.println(pptInfo); | |
| 109 | + } | |
| 110 | + | |
| 111 | + | |
| 112 | + private final String TEST_OUT_LINE_CONTENT = """ | |
| 113 | + # Dify:新一代AI应用开发平台 | |
| 114 | + | |
| 115 | + ## 1 什么是Dify | |
| 116 | + ### 1.1 Dify定义:AI应用开发平台 | |
| 117 | + #### 1.1.1 低代码开发 | |
| 118 | + Dify是一个低代码AI应用开发平台,旨在简化AI应用的构建过程,让开发者无需编写大量代码即可快速创建各种智能应用。 | |
| 119 | + #### 1.1.2 核心功能 | |
| 120 | + Dify的核心功能包括数据集成、模型选择、流程编排和应用部署,提供一站式解决方案,加速AI应用的落地和迭代。 | |
| 121 | + #### 1.1.3 开源与商业 | |
| 122 | + Dify提供开源版本和商业版本,满足不同用户的需求,开源版本适合个人开发者和小型团队,商业版本则提供更强大的功能和技术支持。 | |
| 123 | + | |
| 124 | + ### 1.2 Dify解决的问题:AI开发痛点 | |
| 125 | + #### 1.2.1 开发周期长 | |
| 126 | + 传统AI应用开发周期长,需要大量的人力和时间投入,Dify通过可视化界面和预置组件,大幅缩短开发周期。 | |
| 127 | + #### 1.2.2 技术门槛高 | |
| 128 | + AI技术门槛高,需要专业的知识和技能,Dify降低技术门槛,让更多开发者能够参与到AI应用的开发中来。 | |
| 129 | + #### 1.2.3 部署和维护复杂 | |
| 130 | + AI应用的部署和维护复杂,需要专业的运维团队,Dify提供自动化的部署和维护工具,简化流程,降低成本。 | |
| 131 | + | |
| 132 | + ### 1.3 Dify发展历程 | |
| 133 | + #### 1.3.1 早期探索 | |
| 134 | + Dify的早期版本主要关注于自然语言处理领域的应用,通过集成各种NLP模型,提供文本分类、情感分析等功能。 | |
| 135 | + #### 1.3.2 功能扩展 | |
| 136 | + 随着用户需求的不断增长,Dify的功能逐渐扩展到图像识别、语音识别等领域,支持更多类型的AI应用。 | |
| 137 | + #### 1.3.3 生态建设 | |
| 138 | + Dify积极建设开发者生态,提供丰富的文档、教程和案例,帮助开发者更好地使用Dify平台,共同推动AI技术的发展。 | |
| 139 | + | |
| 140 | + ## 2 Dify的核心功能 | |
| 141 | + ### 2.1 数据集成:连接各种数据源 | |
| 142 | + #### 2.1.1 支持多种数据源 | |
| 143 | + Dify支持连接各种数据源,包括关系型数据库、NoSQL数据库、文件系统、云存储等,满足不同场景的数据需求。 | |
| 144 | + #### 2.1.2 数据转换和清洗 | |
| 145 | + Dify提供数据转换和清洗功能,可以将不同格式的数据转换为统一的格式,并去除无效数据,提高数据质量。 | |
| 146 | + #### 2.1.3 数据安全 | |
| 147 | + Dify注重数据安全,采用各种安全措施保护用户的数据,包括数据加密、访问控制、权限管理等。 | |
| 148 | + | |
| 149 | + ### 2.2 模型选择:丰富的AI模型库 | |
| 150 | + #### 2.2.1 预置模型 | |
| 151 | + Dify预置了丰富的AI模型,包括自然语言处理、图像识别、语音识别等领域的模型,开发者可以直接使用这些模型,无需自行训练,极大的简化了开发流程。 | |
| 152 | + #### 2.2.2 自定义模型 | |
| 153 | + Dify支持开发者上传自定义模型,满足个性化的需求。开发者可以将自己训练的模型部署到Dify平台上,与其他开发者共享。 | |
| 154 | + #### 2.2.3 模型评估 | |
| 155 | + Dify提供模型评估功能,可以对不同模型进行评估,选择最优的模型,提高应用性能。 | |
| 156 | + | |
| 157 | + ### 2.3 流程编排:可视化流程设计器 | |
| 158 | + #### 2.3.1 可视化界面 | |
| 159 | + Dify提供可视化的流程设计器,开发者可以通过拖拽组件的方式,设计AI应用的流程,无需编写代码,简单高效。 | |
| 160 | + #### 2.3.2 灵活的流程控制 | |
| 161 | + Dify支持灵活的流程控制,可以根据不同的条件执行不同的分支,实现复杂的业务逻辑。 | |
| 162 | + #### 2.3.3 实时调试 | |
| 163 | + Dify提供实时调试功能,可以在设计流程的过程中,实时查看流程的执行结果,及时发现和解决问题。 | |
| 164 | + | |
| 165 | + ### 2.4 应用部署:一键部署和管理 | |
| 166 | + #### 2.4.1 快速部署 | |
| 167 | + Dify提供一键部署功能,可以将AI应用快速部署到各种环境,包括本地环境、云环境、容器环境等。 | |
| 168 | + #### 2.4.2 自动伸缩 | |
| 169 | + Dify支持自动伸缩,可以根据应用的负载自动调整资源,保证应用的稳定性和性能。 | |
| 170 | + #### 2.4.3 监控和告警 | |
| 171 | + Dify提供监控和告警功能,可以实时监控应用的状态,并在出现问题时及时告警,方便运维人员进行处理。 | |
| 172 | + | |
| 173 | + ## 3 Dify的特点和优势 | |
| 174 | + ### 3.1 低代码:降低开发门槛 | |
| 175 | + #### 3.1.1 可视化开发 | |
| 176 | + Dify采用可视化开发模式,开发者无需编写大量代码,只需通过拖拽组件即可完成AI应用的开发,降低了开发门槛。 | |
| 177 | + #### 3.1.2 预置组件 | |
| 178 | + Dify预置了丰富的组件,包括数据源组件、模型组件、流程控制组件等,开发者可以直接使用这些组件,提高开发效率。 | |
| 179 | + #### 3.1.3 减少代码量 | |
| 180 | + Dify可以显著减少代码量,降低开发难度,让更多开发者能够参与到AI应用的开发中来。 | |
| 181 | + | |
| 182 | + ### 3.2 灵活:满足不同场景需求 | |
| 183 | + #### 3.2.1 支持多种数据源 | |
| 184 | + Dify支持多种数据源,可以连接各种数据源,满足不同场景的数据需求。 | |
| 185 | + #### 3.2.2 支持自定义模型 | |
| 186 | + Dify支持自定义模型,开发者可以将自己训练的模型部署到Dify平台上,满足个性化的需求。 | |
| 187 | + #### 3.2.3 灵活的流程控制 | |
| 188 | + Dify支持灵活的流程控制,可以根据不同的条件执行不同的分支,实现复杂的业务逻辑。 | |
| 189 | + | |
| 190 | + ### 3.3 高效:加速应用落地 | |
| 191 | + #### 3.3.1 快速开发 | |
| 192 | + Dify通过可视化界面和预置组件,大幅缩短开发周期,加速AI应用的落地。 | |
| 193 | + #### 3.3.2 快速部署 | |
| 194 | + Dify提供一键部署功能,可以将AI应用快速部署到各种环境,提高部署效率。 | |
| 195 | + #### 3.3.3 自动化运维 | |
| 196 | + Dify提供自动化的运维工具,简化运维流程,降低运维成本。 | |
| 197 | + | |
| 198 | + ### 3.4 开放:构建繁荣生态 | |
| 199 | + #### 3.4.1 开源社区 | |
| 200 | + Dify拥有活跃的开源社区,开发者可以在社区中交流经验、分享资源、共同推动Dify的发展。 | |
| 201 | + #### 3.4.2 丰富的文档 | |
| 202 | + Dify提供丰富的文档、教程和案例,帮助开发者更好地使用Dify平台。 | |
| 203 | + #### 3.4.3 API支持 | |
| 204 | + Dify提供API支持,开发者可以通过API将Dify集成到自己的系统中,扩展Dify的功能。 | |
| 205 | + | |
| 206 | + ## 4 Dify的使用场景 | |
| 207 | + ### 4.1 智能客服:提升客户服务质量 | |
| 208 | + #### 4.1.1 自动回复 | |
| 209 | + Dify可以用于构建智能客服系统,实现自动回复客户的常见问题,提高客户服务效率。 | |
| 210 | + #### 4.1.2 情感分析 | |
| 211 | + Dify可以对客户的语音或文本进行情感分析,判断客户的情绪,并根据情绪提供个性化的服务。 | |
| 212 | + #### 4.1.3 知识库问答 | |
| 213 | + Dify可以构建知识库问答系统,让客户通过提问的方式获取所需的信息,提高客户满意度。 | |
| 214 | + | |
| 215 | + ### 4.2 金融风控:提高风险识别能力 | |
| 216 | + #### 4.2.1 欺诈检测 | |
| 217 | + Dify可以用于构建金融风控系统,实现欺诈检测,识别可疑交易,降低风险。 | |
| 218 | + #### 4.2.2 信用评估 | |
| 219 | + Dify可以对用户的信用进行评估,并根据评估结果提供不同的金融服务。 | |
| 220 | + #### 4.2.3 反洗钱 | |
| 221 | + Dify可以用于反洗钱,识别可疑资金流动,防止犯罪行为。 | |
| 222 | + | |
| 223 | + ### 4.3 智慧医疗:提升医疗服务水平 | |
| 224 | + #### 4.3.1 疾病诊断 | |
| 225 | + Dify可以用于辅助疾病诊断,提高诊断准确率,缩短诊断时间。 | |
| 226 | + #### 4.3.2 药物研发 | |
| 227 | + Dify可以用于药物研发,加速新药的发现和开发。 | |
| 228 | + #### 4.3.3 智能健康管理 | |
| 229 | + Dify可以构建智能健康管理系统,为用户提供个性化的健康建议和服务。 | |
| 230 | + | |
| 231 | + ### 4.4 智慧城市:提升城市管理效率 | |
| 232 | + #### 4.4.1 交通优化 | |
| 233 | + Dify可以用于交通优化,提高交通效率,缓解交通拥堵。 | |
| 234 | + #### 4.4.2 环境监测 | |
| 235 | + Dify可以用于环境监测,实时监测空气质量、水质等环境指标,及时发现和解决环境问题。 | |
| 236 | + #### 4.4.3 智能安防 | |
| 237 | + Dify可以用于智能安防,提高城市安全水平,预防犯罪行为。 | |
| 238 | + | |
| 239 | + ## 5 Dify的成功案例 | |
| 240 | + ### 5.1 Case 1:某电商平台的智能客服 | |
| 241 | + #### 5.1.1 项目背景 | |
| 242 | + 该电商平台客户服务压力大,人工客服成本高,需要一种智能化的解决方案。 | |
| 243 | + #### 5.1.2 解决方案 | |
| 244 | + 使用Dify构建智能客服系统,实现自动回复客户的常见问题,并根据客户的情绪提供个性化的服务。 | |
| 245 | + #### 5.1.3 效果 | |
| 246 | + 客户服务效率提高50%,客户满意度提高20%,人工客服成本降低30%。 | |
| 247 | + | |
| 248 | + ### 5.2 Case 2:某银行的金融风控系统 | |
| 249 | + #### 5.2.1 项目背景 | |
| 250 | + 该银行面临日益增长的金融风险,需要一种更有效的风险识别和控制手段。 | |
| 251 | + #### 5.2.2 解决方案 | |
| 252 | + 使用Dify构建金融风控系统,实现欺诈检测、信用评估和反洗钱等功能,提高风险识别能力。 | |
| 253 | + #### 5.2.3 效果 | |
| 254 | + 欺诈交易识别率提高40%,信用评估准确率提高30%,洗钱风险降低25%。 | |
| 255 | + | |
| 256 | + ### 5.3 Case 3:某医院的辅助疾病诊断系统 | |
| 257 | + #### 5.3.1 项目背景 | |
| 258 | + 该医院医生工作压力大,疾病诊断准确率有待提高,需要一种辅助诊断工具。 | |
| 259 | + #### 5.3.2 解决方案 | |
| 260 | + 使用Dify构建辅助疾病诊断系统,根据患者的病历和症状,提供诊断建议,提高诊断准确率。 | |
| 261 | + #### 5.3.3 效果 | |
| 262 | + 疾病诊断准确率提高20%,诊断时间缩短15%,医生工作效率提高10%。 | |
| 263 | + | |
| 264 | + ## 6 Dify的未来展望 | |
| 265 | + ### 6.1 技术升级 | |
| 266 | + #### 6.1.1 模型优化 | |
| 267 | + Dify将不断优化预置模型,提高模型性能,并支持更多类型的AI模型。 | |
| 268 | + #### 6.1.2 流程引擎升级 | |
| 269 | + Dify将升级流程引擎,提高流程的灵活性和可扩展性,支持更复杂的业务逻辑。 | |
| 270 | + #### 6.1.3 平台性能优化 | |
| 271 | + Dify将不断优化平台性能,提高平台的稳定性和可靠性,满足大规模应用的需求。 | |
| 272 | + | |
| 273 | + ### 6.2 生态建设 | |
| 274 | + #### 6.2.1 社区建设 | |
| 275 | + Dify将继续加强开源社区建设,吸引更多开发者参与,共同推动Dify的发展。 | |
| 276 | + #### 6.2.2 合作伙伴拓展 | |
| 277 | + Dify将拓展合作伙伴,与更多的企业和机构合作,共同推动AI技术的应用。 | |
| 278 | + #### 6.2.3 应用商店 | |
| 279 | + Dify将构建应用商店,让开发者可以分享自己的应用,用户可以购买和使用这些应用,构建繁荣的生态系统。 | |
| 280 | + | |
| 281 | + ### 6.3 应用领域拓展 | |
| 282 | + #### 6.3.1 智能制造 | |
| 283 | + Dify将拓展到智能制造领域,为企业提供智能化的生产管理和质量控制解决方案。 | |
| 284 | + #### 6.3.2 智慧农业 | |
| 285 | + Dify将拓展到智慧农业领域,为农民提供智能化的种植和养殖管理解决方案。 | |
| 286 | + #### 6.3.3 更多领域 | |
| 287 | + Dify将拓展到更多领域,为各行各业提供智能化的解决方案,推动社会发展。 | |
| 288 | + | |
| 289 | + ## 7 总结 | |
| 290 | + ### 7.1 Dify的价值 | |
| 291 | + #### 7.1.1 降低AI开发门槛 | |
| 292 | + Dify通过低代码的方式,让更多开发者能够参与到AI应用的开发中来。 | |
| 293 | + #### 7.1.2 加速AI应用落地 | |
| 294 | + Dify提供一站式解决方案,加速AI应用的落地和迭代。 | |
| 295 | + #### 7.1.3 构建繁荣的AI生态 | |
| 296 | + Dify通过开源社区和应用商店,构建繁荣的AI生态系统。 | |
| 297 | + | |
| 298 | + ### 7.2 共同发展 | |
| 299 | + #### 7.2.1 欢迎加入Dify社区 | |
| 300 | + 欢迎更多开发者加入Dify社区,共同推动Dify的发展。 | |
| 301 | + #### 7.2.2 合作共赢 | |
| 302 | + 期待与更多的企业和机构合作,共同推动AI技术的应用。 | |
| 303 | + #### 7.2.3 共创未来 | |
| 304 | + 让我们一起用AI技术改变世界,共创美好未来。"""; | |
| 305 | + | |
| 306 | +} | ... | ... |