-
Notifications
You must be signed in to change notification settings - Fork 479
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
366 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,225 @@ | ||
# 基于DIFY快速构建应用 | ||
|
||
## 0 前言 | ||
|
||
Dify的一个“应用”指基于LLM构建的实际场景应用。通过创建应用,可将智能 AI 技术应用于特定的需求。它既包含了开发 AI 应用的工程范式,也包含了具体的交付物。 | ||
|
||
一个应用为开发者交付: | ||
|
||
* 封装友好的 API,可由后端或前端应用直接调用,通过 Token 鉴权 | ||
* 开箱即用、美观且托管的 WebApp,你可以 WebApp 的模版进行二次开发 | ||
* 一套包含提示词工程、上下文管理、日志分析和标注的易用界面 | ||
|
||
可任选**其中之一**或**全部**,来支撑你的 AI 应用开发。 | ||
|
||
## 1 应用类型 | ||
|
||
Dify提供如下应用类型: | ||
|
||
* **聊天助手**:基于 LLM 构建对话式交互的助手 | ||
* **文本生成**:构建面向文本生成类任务的助手,例如撰写故事、文本分类、翻译等 | ||
* **Agent**:能够分解任务、推理思考、调用工具的对话式智能助手 | ||
* **工作流**:基于流程编排的方式定义更加灵活的 LLM 工作流 | ||
* chatflow:支持记忆的复杂多轮对话工作流 | ||
|
||
 | ||
|
||
### 文本生成 V.S 聊天助手 | ||
|
||
| 特性 | 文本生成 | 聊天助手 | | ||
| ------------ | --------------------- | --------------- | | ||
| WebApp 界面 | 表单+结果式 | 聊天式 | | ||
| WebAPI 端点 | `completion-messages` | `chat-messages` | | ||
| 交互方式 | 一问一答 | 多轮对话 | | ||
| 流式结果返回 | 支持 | 支持 | | ||
| 上下文保存 | 当次 | 持续 | | ||
| 用户输入表单 | 支持 | 支持 | | ||
| 知识库与插件 | 支持 | 支持 | | ||
| AI 开场白 | 不支持 | 支持 | | ||
| 情景举例 | 翻译、判断、索引 | 聊天 | | ||
|
||
## 2 创建应用 | ||
|
||
3种方式在 Dify 的工作室内创建应用: | ||
|
||
* 基于应用模板创建(新手推荐) | ||
* 创建空白应用 | ||
* 通过 DSL 文件(本地/在线)创建应用 | ||
|
||
 | ||
|
||
### 2.1 从模板创建应用 | ||
|
||
为帮助新手用户快速了解在 Dify 能构建啥应用,Dify 团队提示词工程师已创建多场景、高质量的应用模板。 | ||
|
||
任意选择某个模板,并将其添加至工作区即可。 | ||
|
||
### 2.2 创建一个新应用 | ||
|
||
如需在 Dify 创建一个空白应用,Dify可创建不同应用类型: | ||
|
||
给应用起一个名字、选择合适的图标,或者上传喜爱的图片用作图标、使用一段清晰的文字描述此应用的用途,以便后续应用在团队内使用。 | ||
|
||
 | ||
|
||
### 2.3 通过 DSL 文件创建应用 | ||
|
||
Dify DSL 是由 Dify.AI 所定义的 AI 应用工程文件标准,文件格式为 YML。该标准涵盖应用在 Dify 内的基本描述、模型参数、编排配置等信息。 | ||
|
||
#### 本地导入 | ||
|
||
如从社区或其它人获得一个应用模版(DSL 文件),可从工作室选择 「 导入DSL 文件 」。DSL 文件导入后将直接加载原应用的所有配置信息。 | ||
|
||
#### URL 导入 | ||
|
||
你也可以通过 URL 导入 DSL 文件,参考的链接格式: | ||
|
||
```url | ||
https://example.com/your_dsl.yml | ||
``` | ||
|
||
> 导入 DSL 文件时将校对文件版本号。如果 DSL 版本号差异较大,有可能会出现兼容性问题。 | ||
## 3 聊天助手 | ||
|
||
对话型应用采用一问一答模式与用户持续对话。 | ||
|
||
### 3.1 适用场景 | ||
|
||
客户服务、在线教育、医疗保健、金融服务等领域。这些应用可以帮助组织提高工作效率、减少人工成本和提供更好用户体验。 | ||
|
||
### 3.2 咋编排? | ||
|
||
对话型应用的编排支持:对话前提示词,变量,上下文,开场白和下一步问题建议。 | ||
|
||
以 **面试官** 应用为例。 | ||
|
||
#### 3.2.1 创建应用 | ||
|
||
填写应用名称,应用类型选**聊天助手**: | ||
|
||
 | ||
|
||
#### 3.2.2 编排应用 | ||
|
||
创建应用后会自动跳转到应用概览页。点击左侧菜单 **编排** 来编排应用。 | ||
|
||
##### ① 填写提示词 | ||
|
||
提示词用于约束 AI 给出专业回复,让回应更精确。示例: | ||
|
||
1. 输入提示指令,要求给出一段面试场景的提示词 | ||
2. 右侧内容框将自动生成提示词 | ||
3. 你可以在提示词内插入自定义变量 | ||
|
||
可借助内置提示生成器,如下点击生成: | ||
|
||
 | ||
|
||
红框内输入你的提示词,再点击生成即可,右边即是优化后的提示词: | ||
|
||
 | ||
|
||
提示词内支持插入表单变量,如 `{{input}}`。提示词中的变量的值会替换成用户填写的值。 | ||
|
||
 | ||
|
||
为更好用户体验,可以加上对话开场白,点击右下角【管理】: | ||
|
||
 | ||
|
||
可选增强功能如下: | ||
|
||
 | ||
|
||
编辑开场白即可:`你好,{{name}}。我是你的面试官,Bob。你准备好了吗?`。 | ||
|
||
> 可添加数个开场问题。 | ||
##### ② 添加上下文 | ||
|
||
如果想要让 AI 的对话范围局限在【知识库】内,例如企业内的客服话术规范,可以在“上下文”内引用知识库。 | ||
|
||
##### ③ 添加文件上传 | ||
|
||
部分多模态 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 的官方网站了解文件上传能力的支持情况。 | ||
|
||
选择具备读取文件的 LLM,开启 “文档” 功能。无需复杂配置即可让当前 Chatbot 具备文件识别能力。 | ||
|
||
 | ||
|
||
#### 3.2.3 调试 | ||
|
||
在右侧填写用户输入项,输入内容进行调试。先输入变量 jobName 值为后端开发,开始激聊: | ||
|
||
 | ||
|
||
如果回答结果不理想,可以调整提示词和底层模型。你也可以使用多个模型同步进行调试,搭配出合适的配置: | ||
|
||
 | ||
|
||
**多个模型进行调试:** | ||
|
||
如果使用单一模型调试时感到效率低下,你也可以使用 **“多个模型进行调试”** 功能,批量检视模型的回答效果。最多支持同时添加 4 个大模型: | ||
|
||
 | ||
|
||
> ⚠️ 使用多模型调试功能时,如果仅看到部分大模型,这是因为暂未添加其它大模型的 Key。 | ||
#### 3.2.4 发布应用 | ||
|
||
调试好应用后,点击右上角的 **“发布”** 按钮生成独立的 AI 应用。 | ||
|
||
##### ① 发布为公开 Web 站点 | ||
|
||
发布一个可供用户在互联网上公开访问的 Web 应用,该应用将根据你的 Prompt 和编排设置进行工作。 | ||
|
||
* 自部署的开源版,该应用将运行在你的服务器上 | ||
* 云服务,该应用将托管至网址 [https://udify.app/](https://udify.app/) | ||
|
||
*** | ||
|
||
###### 发布 AI 站点 | ||
|
||
在应用监测页中,你可以找到 WebApp 的管理卡片。打开访问开关后,你可以得到一个能够在互联网上公开分享的网址: | ||
|
||
 | ||
|
||
可见,均预置了漂亮的 WebApp 界面。 | ||
|
||
##### ② 嵌入你的 AI 站点 | ||
|
||
Dify 支持将你的 AI 应用嵌入到业务网站中,可用该能力在几分钟内制作具有业务数据的官网 AI 客服、业务知识问答等应用。点击 WebApp 卡片上的嵌入按钮,复制嵌入代码,粘贴到你网站的目标位置: | ||
|
||
 | ||
|
||
##### ③ 基于 APIs 开发 | ||
|
||
Dify 基于“**后端即服务**”理念为所有应用提供了 API,为 AI 应用开发者带来了诸多便利。通过这一理念,开发者可以直接在前端应用中获取大型语言模型的强大能力,而无需关注复杂的后端架构和部署过程。 | ||
|
||
###### 用 Dify API 的好处 | ||
|
||
* 让前端应用直接安全地调用 LLM 能力,省去后端服务的开发过程 | ||
* 在可视化的界面中设计应用,并在所有客户端中实时生效 | ||
* 对 LLM 供应商的基础能力进行了良好封装 | ||
* 随时切换 LLM 供应商,并对 LLM 的密钥进行集中管理 | ||
* 在可视化的界面中运营你的应用,例如分析日志、标注及观察用户活跃 | ||
* 持续为应用提供更多工具能力、插件能力和知识库 | ||
|
||
###### 如何使用? | ||
|
||
选择一个应用,在应用(Apps)左侧导航中可以找到**访问 API(API Access)**。在该页面中你可以查看 Dify 提供的 API 文档,并管理可访问 API 的凭据。 | ||
|
||
 | ||
|
||
例如你是一个咨询公司的开发部分,你可以基于公司的私有数据库提供 AI 能力给终端用户或开发者,但开发者无法掌握你的数据和 AI 逻辑设计,从而使得服务可以安全、可持续的交付并满足商业目的。 | ||
|
||
最佳实践中,API 密钥应通过后端调用,而不是直接以明文暴露在前端代码或请求中,这样可以防止你的应用被滥用或攻击。 | ||
|
||
你可以为一个应用**创建多个访问凭据**,以实现交付给不同的用户或开发者。这意味着 API 的使用者虽然使用了应用开发者提供的 AI 能力,但背后的 Promp 工程、知识库和工具能力是经封装的。 | ||
|
||
## FAQ | ||
|
||
Q:咋在聊天助手内添加第三方工具? | ||
|
||
A:聊天助手类型应用不支持添加第三方工具,可在 [Agent 类型](https://docs.dify.ai/v/zh-hans/guides/application-orchestrate/agent)应用内添加第三方工具。 |
Oops, something went wrong.