|
| 1 | +# 基于DIFY快速构建应用 |
| 2 | + |
| 3 | +## 0 前言 |
| 4 | + |
| 5 | +Dify的一个“应用”指基于LLM构建的实际场景应用。通过创建应用,可将智能 AI 技术应用于特定的需求。它既包含了开发 AI 应用的工程范式,也包含了具体的交付物。 |
| 6 | + |
| 7 | +一个应用为开发者交付: |
| 8 | + |
| 9 | +* 封装友好的 API,可由后端或前端应用直接调用,通过 Token 鉴权 |
| 10 | +* 开箱即用、美观且托管的 WebApp,你可以 WebApp 的模版进行二次开发 |
| 11 | +* 一套包含提示词工程、上下文管理、日志分析和标注的易用界面 |
| 12 | + |
| 13 | +可任选**其中之一**或**全部**,来支撑你的 AI 应用开发。 |
| 14 | + |
| 15 | +## 1 应用类型 |
| 16 | + |
| 17 | +Dify提供如下应用类型: |
| 18 | + |
| 19 | +* **聊天助手**:基于 LLM 构建对话式交互的助手 |
| 20 | +* **文本生成**:构建面向文本生成类任务的助手,例如撰写故事、文本分类、翻译等 |
| 21 | +* **Agent**:能够分解任务、推理思考、调用工具的对话式智能助手 |
| 22 | +* **工作流**:基于流程编排的方式定义更加灵活的 LLM 工作流 |
| 23 | +* chatflow:支持记忆的复杂多轮对话工作流 |
| 24 | + |
| 25 | + |
| 26 | + |
| 27 | +### 文本生成 V.S 聊天助手 |
| 28 | + |
| 29 | +| 特性 | 文本生成 | 聊天助手 | |
| 30 | +| ------------ | --------------------- | --------------- | |
| 31 | +| WebApp 界面 | 表单+结果式 | 聊天式 | |
| 32 | +| WebAPI 端点 | `completion-messages` | `chat-messages` | |
| 33 | +| 交互方式 | 一问一答 | 多轮对话 | |
| 34 | +| 流式结果返回 | 支持 | 支持 | |
| 35 | +| 上下文保存 | 当次 | 持续 | |
| 36 | +| 用户输入表单 | 支持 | 支持 | |
| 37 | +| 知识库与插件 | 支持 | 支持 | |
| 38 | +| AI 开场白 | 不支持 | 支持 | |
| 39 | +| 情景举例 | 翻译、判断、索引 | 聊天 | |
| 40 | + |
| 41 | +## 2 创建应用 |
| 42 | + |
| 43 | +3种方式在 Dify 的工作室内创建应用: |
| 44 | + |
| 45 | +* 基于应用模板创建(新手推荐) |
| 46 | +* 创建空白应用 |
| 47 | +* 通过 DSL 文件(本地/在线)创建应用 |
| 48 | + |
| 49 | + |
| 50 | + |
| 51 | +### 2.1 从模板创建应用 |
| 52 | + |
| 53 | +为帮助新手用户快速了解在 Dify 能构建啥应用,Dify 团队提示词工程师已创建多场景、高质量的应用模板。 |
| 54 | + |
| 55 | +任意选择某个模板,并将其添加至工作区即可。 |
| 56 | + |
| 57 | +### 2.2 创建一个新应用 |
| 58 | + |
| 59 | +如需在 Dify 创建一个空白应用,Dify可创建不同应用类型: |
| 60 | + |
| 61 | +给应用起一个名字、选择合适的图标,或者上传喜爱的图片用作图标、使用一段清晰的文字描述此应用的用途,以便后续应用在团队内使用。 |
| 62 | + |
| 63 | + |
| 64 | + |
| 65 | +### 2.3 通过 DSL 文件创建应用 |
| 66 | + |
| 67 | +Dify DSL 是由 Dify.AI 所定义的 AI 应用工程文件标准,文件格式为 YML。该标准涵盖应用在 Dify 内的基本描述、模型参数、编排配置等信息。 |
| 68 | + |
| 69 | +#### 本地导入 |
| 70 | + |
| 71 | +如从社区或其它人获得一个应用模版(DSL 文件),可从工作室选择 「 导入DSL 文件 」。DSL 文件导入后将直接加载原应用的所有配置信息。 |
| 72 | + |
| 73 | +#### URL 导入 |
| 74 | + |
| 75 | +你也可以通过 URL 导入 DSL 文件,参考的链接格式: |
| 76 | + |
| 77 | +```url |
| 78 | +https://example.com/your_dsl.yml |
| 79 | +``` |
| 80 | + |
| 81 | +> 导入 DSL 文件时将校对文件版本号。如果 DSL 版本号差异较大,有可能会出现兼容性问题。 |
| 82 | +
|
| 83 | +## 3 聊天助手 |
| 84 | + |
| 85 | +对话型应用采用一问一答模式与用户持续对话。 |
| 86 | + |
| 87 | +### 3.1 适用场景 |
| 88 | + |
| 89 | +客户服务、在线教育、医疗保健、金融服务等领域。这些应用可以帮助组织提高工作效率、减少人工成本和提供更好用户体验。 |
| 90 | + |
| 91 | +### 3.2 咋编排? |
| 92 | + |
| 93 | +对话型应用的编排支持:对话前提示词,变量,上下文,开场白和下一步问题建议。 |
| 94 | + |
| 95 | +以 **面试官** 应用为例。 |
| 96 | + |
| 97 | +#### 3.2.1 创建应用 |
| 98 | + |
| 99 | +填写应用名称,应用类型选**聊天助手**: |
| 100 | + |
| 101 | + |
| 102 | + |
| 103 | +#### 3.2.2 编排应用 |
| 104 | + |
| 105 | +创建应用后会自动跳转到应用概览页。点击左侧菜单 **编排** 来编排应用。 |
| 106 | + |
| 107 | +##### ① 填写提示词 |
| 108 | + |
| 109 | +提示词用于约束 AI 给出专业回复,让回应更精确。示例: |
| 110 | + |
| 111 | +1. 输入提示指令,要求给出一段面试场景的提示词 |
| 112 | +2. 右侧内容框将自动生成提示词 |
| 113 | +3. 你可以在提示词内插入自定义变量 |
| 114 | + |
| 115 | +可借助内置提示生成器,如下点击生成: |
| 116 | + |
| 117 | + |
| 118 | + |
| 119 | +红框内输入你的提示词,再点击生成即可,右边即是优化后的提示词: |
| 120 | + |
| 121 | + |
| 122 | + |
| 123 | +提示词内支持插入表单变量,如 `{{input}}`。提示词中的变量的值会替换成用户填写的值。 |
| 124 | + |
| 125 | + |
| 126 | + |
| 127 | +为更好用户体验,可以加上对话开场白,点击右下角【管理】: |
| 128 | + |
| 129 | + |
| 130 | + |
| 131 | +可选增强功能如下: |
| 132 | + |
| 133 | + |
| 134 | + |
| 135 | +编辑开场白即可:`你好,{{name}}。我是你的面试官,Bob。你准备好了吗?`。 |
| 136 | + |
| 137 | +> 可添加数个开场问题。 |
| 138 | +
|
| 139 | +##### ② 添加上下文 |
| 140 | + |
| 141 | +如果想要让 AI 的对话范围局限在【知识库】内,例如企业内的客服话术规范,可以在“上下文”内引用知识库。 |
| 142 | + |
| 143 | +##### ③ 添加文件上传 |
| 144 | + |
| 145 | +部分多模态 LLM 已原生支持处理文件,如 [Claude 3.5 Sonnet](https://docs.anthropic.com/en/docs/build-with-claude/pdf-support) 或 [Gemini 1.5 Pro](https://ai.google.dev/api/files)。你可以在 LLM 的官方网站了解文件上传能力的支持情况。 |
| 146 | + |
| 147 | +选择具备读取文件的 LLM,开启 “文档” 功能。无需复杂配置即可让当前 Chatbot 具备文件识别能力。 |
| 148 | + |
| 149 | + |
| 150 | + |
| 151 | +#### 3.2.3 调试 |
| 152 | + |
| 153 | +在右侧填写用户输入项,输入内容进行调试。先输入变量 jobName 值为后端开发,开始激聊: |
| 154 | + |
| 155 | + |
| 156 | + |
| 157 | +如果回答结果不理想,可以调整提示词和底层模型。你也可以使用多个模型同步进行调试,搭配出合适的配置: |
| 158 | + |
| 159 | + |
| 160 | + |
| 161 | +**多个模型进行调试:** |
| 162 | + |
| 163 | +如果使用单一模型调试时感到效率低下,你也可以使用 **“多个模型进行调试”** 功能,批量检视模型的回答效果。最多支持同时添加 4 个大模型: |
| 164 | + |
| 165 | + |
| 166 | + |
| 167 | +> ⚠️ 使用多模型调试功能时,如果仅看到部分大模型,这是因为暂未添加其它大模型的 Key。 |
| 168 | +
|
| 169 | +#### 3.2.4 发布应用 |
| 170 | + |
| 171 | +调试好应用后,点击右上角的 **“发布”** 按钮生成独立的 AI 应用。 |
| 172 | + |
| 173 | +##### ① 发布为公开 Web 站点 |
| 174 | + |
| 175 | +发布一个可供用户在互联网上公开访问的 Web 应用,该应用将根据你的 Prompt 和编排设置进行工作。 |
| 176 | + |
| 177 | +* 自部署的开源版,该应用将运行在你的服务器上 |
| 178 | +* 云服务,该应用将托管至网址 [https://udify.app/](https://udify.app/) |
| 179 | + |
| 180 | +*** |
| 181 | + |
| 182 | +###### 发布 AI 站点 |
| 183 | + |
| 184 | +在应用监测页中,你可以找到 WebApp 的管理卡片。打开访问开关后,你可以得到一个能够在互联网上公开分享的网址: |
| 185 | + |
| 186 | + |
| 187 | + |
| 188 | +可见,均预置了漂亮的 WebApp 界面。 |
| 189 | + |
| 190 | +##### ② 嵌入你的 AI 站点 |
| 191 | + |
| 192 | +Dify 支持将你的 AI 应用嵌入到业务网站中,可用该能力在几分钟内制作具有业务数据的官网 AI 客服、业务知识问答等应用。点击 WebApp 卡片上的嵌入按钮,复制嵌入代码,粘贴到你网站的目标位置: |
| 193 | + |
| 194 | + |
| 195 | + |
| 196 | +##### ③ 基于 APIs 开发 |
| 197 | + |
| 198 | +Dify 基于“**后端即服务**”理念为所有应用提供了 API,为 AI 应用开发者带来了诸多便利。通过这一理念,开发者可以直接在前端应用中获取大型语言模型的强大能力,而无需关注复杂的后端架构和部署过程。 |
| 199 | + |
| 200 | +###### 用 Dify API 的好处 |
| 201 | + |
| 202 | +* 让前端应用直接安全地调用 LLM 能力,省去后端服务的开发过程 |
| 203 | +* 在可视化的界面中设计应用,并在所有客户端中实时生效 |
| 204 | +* 对 LLM 供应商的基础能力进行了良好封装 |
| 205 | +* 随时切换 LLM 供应商,并对 LLM 的密钥进行集中管理 |
| 206 | +* 在可视化的界面中运营你的应用,例如分析日志、标注及观察用户活跃 |
| 207 | +* 持续为应用提供更多工具能力、插件能力和知识库 |
| 208 | + |
| 209 | +###### 如何使用? |
| 210 | + |
| 211 | +选择一个应用,在应用(Apps)左侧导航中可以找到**访问 API(API Access)**。在该页面中你可以查看 Dify 提供的 API 文档,并管理可访问 API 的凭据。 |
| 212 | + |
| 213 | + |
| 214 | + |
| 215 | +例如你是一个咨询公司的开发部分,你可以基于公司的私有数据库提供 AI 能力给终端用户或开发者,但开发者无法掌握你的数据和 AI 逻辑设计,从而使得服务可以安全、可持续的交付并满足商业目的。 |
| 216 | + |
| 217 | +最佳实践中,API 密钥应通过后端调用,而不是直接以明文暴露在前端代码或请求中,这样可以防止你的应用被滥用或攻击。 |
| 218 | + |
| 219 | +你可以为一个应用**创建多个访问凭据**,以实现交付给不同的用户或开发者。这意味着 API 的使用者虽然使用了应用开发者提供的 AI 能力,但背后的 Promp 工程、知识库和工具能力是经封装的。 |
| 220 | + |
| 221 | +## FAQ |
| 222 | + |
| 223 | +Q:咋在聊天助手内添加第三方工具? |
| 224 | + |
| 225 | +A:聊天助手类型应用不支持添加第三方工具,可在 [Agent 类型](https://docs.dify.ai/v/zh-hans/guides/application-orchestrate/agent)应用内添加第三方工具。 |
0 commit comments