Skip to content

Commit

Permalink
docs:更新 dify 专栏内容
Browse files Browse the repository at this point in the history
  • Loading branch information
Java-Edge committed Feb 4, 2025
1 parent f5ed55c commit e13a372
Show file tree
Hide file tree
Showing 3 changed files with 366 additions and 0 deletions.
2 changes: 2 additions & 0 deletions docs/.vuepress/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -1134,6 +1134,7 @@ module.exports = {
"04-RPC框架在网络通信的网络IO模型选型",
"熔断限流",
"11-RPC的负载均衡",
"RPC-Traffic-Replay",
]
}],

Expand Down Expand Up @@ -2162,6 +2163,7 @@ module.exports = {
sidebarDepth: 0,
children: [
"what-is-llmops",
"Build-App-with-Dify",
"integrate-dify-and-aws-services-to-enable-more-flexible-translation-workflows",
]
},
Expand Down
225 changes: 225 additions & 0 deletions docs/md/AI/llm/Build-App-with-Dify.md
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:支持记忆的复杂多轮对话工作流

![](https://my-img.javaedge.com.cn/javaedge-blog/2025/02/ae7b2cfd247d3612986fbf637a02858a.png)

### 文本生成 V.S 聊天助手

| 特性 | 文本生成 | 聊天助手 |
| ------------ | --------------------- | --------------- |
| WebApp 界面 | 表单+结果式 | 聊天式 |
| WebAPI 端点 | `completion-messages` | `chat-messages` |
| 交互方式 | 一问一答 | 多轮对话 |
| 流式结果返回 | 支持 | 支持 |
| 上下文保存 | 当次 | 持续 |
| 用户输入表单 | 支持 | 支持 |
| 知识库与插件 | 支持 | 支持 |
| AI 开场白 | 不支持 | 支持 |
| 情景举例 | 翻译、判断、索引 | 聊天 |

## 2 创建应用

3种方式在 Dify 的工作室内创建应用:

* 基于应用模板创建(新手推荐)
* 创建空白应用
* 通过 DSL 文件(本地/在线)创建应用

![](https://my-img.javaedge.com.cn/javaedge-blog/2025/02/d40a5470860eca6aa1cfb7419270249a.png)

### 2.1 从模板创建应用

为帮助新手用户快速了解在 Dify 能构建啥应用,Dify 团队提示词工程师已创建多场景、高质量的应用模板。

任意选择某个模板,并将其添加至工作区即可。

### 2.2 创建一个新应用

如需在 Dify 创建一个空白应用,Dify可创建不同应用类型:

给应用起一个名字、选择合适的图标,或者上传喜爱的图片用作图标、使用一段清晰的文字描述此应用的用途,以便后续应用在团队内使用。

![](https://assets-docs.dify.ai/2024/12/1429eb56e0082c281f7aaeb48e72cb0f.png)

### 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 创建应用

填写应用名称,应用类型选**聊天助手**

![](https://my-img.javaedge.com.cn/javaedge-blog/2025/02/3c087c52d42ab4c5bf8332a0c69d66b5.png)

#### 3.2.2 编排应用

创建应用后会自动跳转到应用概览页。点击左侧菜单 **编排** 来编排应用。

##### ① 填写提示词

提示词用于约束 AI 给出专业回复,让回应更精确。示例:

1. 输入提示指令,要求给出一段面试场景的提示词
2. 右侧内容框将自动生成提示词
3. 你可以在提示词内插入自定义变量

可借助内置提示生成器,如下点击生成:

![](/Users/javaedge/Downloads/IDEAProjects/java-edge-master/assets/image-20250204213510811.png)

红框内输入你的提示词,再点击生成即可,右边即是优化后的提示词:

![](https://my-img.javaedge.com.cn/javaedge-blog/2025/02/076d30028c80ba2c4d2c18cd639f8d01.png)

提示词内支持插入表单变量,如 `{{input}}`。提示词中的变量的值会替换成用户填写的值。

![](https://my-img.javaedge.com.cn/javaedge-blog/2025/02/623d4d1158b31cd532453299d2b12ffc.png)

为更好用户体验,可以加上对话开场白,点击右下角【管理】:

![](https://my-img.javaedge.com.cn/javaedge-blog/2025/02/015f2828146f7522e26cf2e79efb72f9.png)

可选增强功能如下:

![](https://my-img.javaedge.com.cn/javaedge-blog/2025/02/bd66ecd8db59f8f15aaaf677d6668e56.png)

编辑开场白即可:`你好,{{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 具备文件识别能力。

![](https://assets-docs.dify.ai/2024/11/823399d85e8ced5068dc9da4f693170e.png)

#### 3.2.3 调试

在右侧填写用户输入项,输入内容进行调试。先输入变量 jobName 值为后端开发,开始激聊:

![](https://my-img.javaedge.com.cn/javaedge-blog/2025/02/89df43f43bd3880db673e425d4c893fa.png)

如果回答结果不理想,可以调整提示词和底层模型。你也可以使用多个模型同步进行调试,搭配出合适的配置:

![](https://my-img.javaedge.com.cn/javaedge-blog/2025/02/c659c34c52b218d8c0a3fa3239daa80b.png)

**多个模型进行调试:**

如果使用单一模型调试时感到效率低下,你也可以使用 **“多个模型进行调试”** 功能,批量检视模型的回答效果。最多支持同时添加 4 个大模型:

![](https://my-img.javaedge.com.cn/javaedge-blog/2025/02/d4304880c23db83baae3e8c7def92008.png)

> ⚠️ 使用多模型调试功能时,如果仅看到部分大模型,这是因为暂未添加其它大模型的 Key。
#### 3.2.4 发布应用

调试好应用后,点击右上角的 **“发布”** 按钮生成独立的 AI 应用。

##### ① 发布为公开 Web 站点

发布一个可供用户在互联网上公开访问的 Web 应用,该应用将根据你的 Prompt 和编排设置进行工作。

* 自部署的开源版,该应用将运行在你的服务器上
* 云服务,该应用将托管至网址 [https://udify.app/](https://udify.app/)

***

###### 发布 AI 站点

在应用监测页中,你可以找到 WebApp 的管理卡片。打开访问开关后,你可以得到一个能够在互联网上公开分享的网址:

![](https://my-img.javaedge.com.cn/javaedge-blog/2025/02/1fd67011c778b803cd4de520c1ccbb96.png)

可见,均预置了漂亮的 WebApp 界面。

##### ② 嵌入你的 AI 站点

Dify 支持将你的 AI 应用嵌入到业务网站中,可用该能力在几分钟内制作具有业务数据的官网 AI 客服、业务知识问答等应用。点击 WebApp 卡片上的嵌入按钮,复制嵌入代码,粘贴到你网站的目标位置:

![](https://my-img.javaedge.com.cn/javaedge-blog/2025/02/13e031c88e43bd6396d39a4b877e3cf3.png)

##### ③ 基于 APIs 开发

Dify 基于“**后端即服务**”理念为所有应用提供了 API,为 AI 应用开发者带来了诸多便利。通过这一理念,开发者可以直接在前端应用中获取大型语言模型的强大能力,而无需关注复杂的后端架构和部署过程。

###### 用 Dify API 的好处

* 让前端应用直接安全地调用 LLM 能力,省去后端服务的开发过程
* 在可视化的界面中设计应用,并在所有客户端中实时生效
* 对 LLM 供应商的基础能力进行了良好封装
* 随时切换 LLM 供应商,并对 LLM 的密钥进行集中管理
* 在可视化的界面中运营你的应用,例如分析日志、标注及观察用户活跃
* 持续为应用提供更多工具能力、插件能力和知识库

###### 如何使用?

选择一个应用,在应用(Apps)左侧导航中可以找到**访问 API(API Access)**。在该页面中你可以查看 Dify 提供的 API 文档,并管理可访问 API 的凭据。

![](https://my-img.javaedge.com.cn/javaedge-blog/2025/02/a858e4f584fdd457b34947d2eb7da90c.png)

例如你是一个咨询公司的开发部分,你可以基于公司的私有数据库提供 AI 能力给终端用户或开发者,但开发者无法掌握你的数据和 AI 逻辑设计,从而使得服务可以安全、可持续的交付并满足商业目的。

最佳实践中,API 密钥应通过后端调用,而不是直接以明文暴露在前端代码或请求中,这样可以防止你的应用被滥用或攻击。

你可以为一个应用**创建多个访问凭据**,以实现交付给不同的用户或开发者。这意味着 API 的使用者虽然使用了应用开发者提供的 AI 能力,但背后的 Promp 工程、知识库和工具能力是经封装的。

## FAQ

Q:咋在聊天助手内添加第三方工具?

A:聊天助手类型应用不支持添加第三方工具,可在 [Agent 类型](https://docs.dify.ai/v/zh-hans/guides/application-orchestrate/agent)应用内添加第三方工具。
Loading

0 comments on commit e13a372

Please sign in to comment.