Agent项目:基于dify平台搭建智能体助手
本方案旨在利用 Dify 平台的智能体功能,为电商企业打造一个高度智能化的 AI 客服助手。通过采用先进的智能体技术,能够自主理解和处理复杂客户询问任务,提供个性化和精准的服务响应。
📌
本方案适合各种规模和复杂度的电商平台,帮助企业显著提升客服效率和响应速度,减少人工参与,降低运营成本。
通过这套方案,企业可以实现客服流程的全面智能化,提升市场竞争力和客户满意度。
一、构建智能体(Agent)AI 电商客服助手
1.搭建 AI 应用
创建一个智能体(Agent)AI 电商客服助手。
其不仅可以检索和利用知识库中的信息,还能够进行自主决策和处理复杂任务,这为用户带来了更优质的体验。
创建知识库。
使大模型能够获取专属业务知识,从而提供更精准的回答。若知识库已创建则可跳过本步骤。
#qkLWQnPtysmy text { white-space: pre; }#qkLWQnPtysmy .fb0 { stroke: var(--N900-FG, 0.15); }#qkLWQnPtysmy .fb0 {stroke: rgba(31,35,41, 0.15)}#qkLWQnPtysmy .fx0 { stroke-miterlimit: 10; }#qkLWQnPtysmy .fx0 {stroke-miterlimit: 10}#qkLWQnPtysmy .fa1 { fill: rgb(187, 191, 196); }#qkLWQnPtysmy .fa1 {fill: rgb(187, 191, 196)}#qkLWQnPtysmy .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#qkLWQnPtysmy .fx1 {font-style: normal}#qkLWQnPtysmy .fx2 { text-anchor: middle; }#qkLWQnPtysmy .fx2 {text-anchor: middle}#qkLWQnPtysmy .fx3 { dominant-baseline: central; }#qkLWQnPtysmy .fx3 {dominant-baseline: central}#qkLWQnPtysmy .fx4 { stroke: none; }#qkLWQnPtysmy .fx4 {stroke: none}#qkLWQnPtysmy .fc0 { fill: var(--text-caption); }#qkLWQnPtysmy .fc0 {fill: #646a73}#qkLWQnPtysmy .fa2 { fill: var(--text-link-disabled); }#qkLWQnPtysmy .fa2 {fill: rgb(187, 191, 196)}#qkLWQnPtysmy .fa3 { fill: rgb(229, 229, 229); }#qkLWQnPtysmy .fa3 {fill: rgb(229, 229, 229)}#qkLWQnPtysmy .fx5 { font: 700 14px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#qkLWQnPtysmy .fx5 {font-style: normal}#qkLWQnPtysmy .fx6 { text-anchor: start; }#qkLWQnPtysmy .fx6 {text-anchor: start}#qkLWQnPtysmy .fx7 { dominant-baseline: alphabetic; }#qkLWQnPtysmy .fx7 {dominant-baseline: alphabetic}#qkLWQnPtysmy .fc1 { fill: rgb(31, 35, 41); }#qkLWQnPtysmy .fc1 {fill: rgb(31, 35, 41)}#qkLWQnPtysmy .fx8 { font: 400 14px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#qkLWQnPtysmy .fx8 {font-style: normal}#qkLWQnPtysmy .fc2 { fill: rgb(88, 88, 88); }#qkLWQnPtysmy .fc2 {fill: rgb(88, 88, 88)}#qkLWQnPtysmy .fc3 { fill: rgb(0, 0, 0); }#qkLWQnPtysmy .fc3 {fill: rgb(0, 0, 0)}#qkLWQnPtysmy .fb1 { fill: var(--N900-FG, 0.15); }#qkLWQnPtysmy .fb1 {fill: rgba(31,35,41, 0.15)}#qkLWQnPtysmy .fb2 { fill: rgb(223, 223, 223); }#qkLWQnPtysmy .fb2 {fill: rgb(223, 223, 223)}#qkLWQnPtysmy .fa4 { fill: var(--bg-body); }#qkLWQnPtysmy .fa4 {fill: #fff}ABC12345项目说明示例值分段设置检索设置选择分段设置。选择索引方式。选择高质量会调用模型供应商的相关嵌入模型,可能会消耗 tokens,请按需选择。选择选择检索类型。通用高质量text-embedding-v2混合检索索引方式Embedding 模型Embedding 模型。说明
📌
单击 Dify 平台顶部知识库,接着单击下方的创建知识库,
选择数据源为导入已有文本,随后选择本地文件,最后单击下一步。
设置文本分段与清洗。按如下配置进行设置后,单击保存并处理。未提及配置使用默认值即可。
在处理并完成页面,单击下方的前往文档,在文档列表页面,待状态显示为可用后,即表示当前文档已处理完成。
创建"查询订单信息"自定义工具。
使大模型能够通过工具调用获取实时订单数据。
📌
打开浏览器,进入 Dify 平台。
单击Dify 系统页面顶部工具,接着单击下方的自定义 > 创建自定义工具。
在弹出的创建自定义工具面板中,填写如下信息,然后单击保存。未提及配置使用默认值即可。
#namshTNZLSRT text { white-space: pre; }#namshTNZLSRT .fb0 { stroke: var(--N900-FG, 0.15); }#namshTNZLSRT .fb0 {stroke: rgba(31,35,41, 0.15)}#namshTNZLSRT .fx0 { stroke-miterlimit: 10; }#namshTNZLSRT .fx0 {stroke-miterlimit: 10}#namshTNZLSRT .fa1 { fill: rgb(187, 191, 196); }#namshTNZLSRT .fa1 {fill: rgb(187, 191, 196)}#namshTNZLSRT .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#namshTNZLSRT .fx1 {font-style: normal}#namshTNZLSRT .fx2 { text-anchor: middle; }#namshTNZLSRT .fx2 {text-anchor: middle}#namshTNZLSRT .fx3 { dominant-baseline: central; }#namshTNZLSRT .fx3 {dominant-baseline: central}#namshTNZLSRT .fx4 { stroke: none; }#namshTNZLSRT .fx4 {stroke: none}#namshTNZLSRT .fc0 { fill: var(--text-caption); }#namshTNZLSRT .fc0 {fill: #646a73}#namshTNZLSRT .fa2 { fill: var(--text-link-disabled); }#namshTNZLSRT .fa2 {fill: rgb(187, 191, 196)}#namshTNZLSRT .fa3 { fill: rgb(229, 229, 229); }#namshTNZLSRT .fa3 {fill: rgb(229, 229, 229)}#namshTNZLSRT .fx5 { font: 700 14px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#namshTNZLSRT .fx5 {font-style: normal}#namshTNZLSRT .fx6 { text-anchor: start; }#namshTNZLSRT .fx6 {text-anchor: start}#namshTNZLSRT .fx7 { dominant-baseline: alphabetic; }#namshTNZLSRT .fx7 {dominant-baseline: alphabetic}#namshTNZLSRT .fc1 { fill: rgb(31, 35, 41); }#namshTNZLSRT .fc1 {fill: rgb(31, 35, 41)}#namshTNZLSRT .fx8 { font: 400 14px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#namshTNZLSRT .fx8 {font-style: normal}#namshTNZLSRT .fc2 { fill: rgb(16, 24, 40); }#namshTNZLSRT .fc2 {fill: rgb(16, 24, 40)}#namshTNZLSRT .fc3 { fill: rgb(0, 0, 0); }#namshTNZLSRT .fc3 {fill: rgb(0, 0, 0)}#namshTNZLSRT .fc4 { fill: rgb(88, 88, 88); }#namshTNZLSRT .fc4 {fill: rgb(88, 88, 88)}#namshTNZLSRT .fb1 { fill: var(--N900-FG, 0.15); }#namshTNZLSRT .fb1 {fill: rgba(31,35,41, 0.15)}#namshTNZLSRT .fb2 { fill: rgb(223, 223, 223); }#namshTNZLSRT .fb2 {fill: rgb(223, 223, 223)}#namshTNZLSRT .fa4 { fill: var(--bg-body); }#namshTNZLSRT .fa4 {fill: #fff}ABC1234项目说明示例值名称鉴权方法鉴权方法。单击API KeyBearer键:值:test123Schema设置工具名称。设置接口的 Schema。设置,在弹出框中进行相关设置。查询订单信息请将以下代码中的 <ECS 公网 IP> 替换为您在“部署 Dify 平台”方案中,部署电商系统的云服务器ECS的公网 IP。鉴权类型:鉴权头部前缀:Authorization本方案提供的电商系统,默认鉴权值为 test123。如需对接自有系统,请以实际鉴权信息为准。重要说明
代码块
YAML
openapi: "3.0.0"
info:
version: 1.0.0
title: 订单API
servers:
- url: http://<ECS 公网 IP>
paths:
/order:
get:
summary: 获取订单详情信息
operationId: 查询订单信息
parameters:
- name: orderid
in: query
required: true
schema:
type: string
description: 订单唯一标识
responses:
'200':
description: 获取成功
content:
application/json:
schema:
type: object
properties:
code:
type: integer
data:
type: object
security:
- bearerAuth: []
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
单击顶部工作室,然后单击创建空白应用。
在弹出的创建空白应用面板中,选择应用类型为 Agent,并设置应用名称,最后单击创建,进入应用编排页面。
设置对话使用的模型。在右侧模型选择下拉框中,选择模型为qwen-max。模型参数保持默认即可,您也可以按需进行调整。
设置提示词。在提示词输入框中填写以下提示词。
此处的提示词:
代码块
Python
7. 如果当前需要查询订单信息,则从当前的输入中分析出订单ID(订单ID为一串连续的12位数字,例如:202501011001),然后调用工具“查询订单信息”进行查询,其有一个输入参数为订单ID(orderid)
增加的内容是为了提示大模型在需要查询订单时,调用(Function Call)工具“查询订单信息”,以获取订单数据。
代码块
Markdown
你是一名资深电商客服专家,拥有十年以上的电商客服经验。你的任务是通过友好、专业的交流,帮助用户解决他们在购物过程中遇到的问题,提供满意的售后服务。在回答问题时,请遵循以下原则:
1. 亲切的口语化表达:使用自然、亲切的语言,让用户感受到温暖和被重视。例如:
- "您好!感谢您的咨询,很高兴为您服务。"
- "没问题,我来帮您看看具体情况。"
2. 关键数据精确:在涉及金额、时间、订单号等关键信息时,务必准确无误。例如:
- "您的订单号是123456789,总金额为588元。"
- "预计送达时间为2天后,您可以放心等待。"
添加知识库。单击知识库区域右侧的“+添加”,然后选择前面步骤创建的知识库,最后单击添加。
添加自定义工具。单击工具区域右侧的“+添加”按钮。在弹出面板中选择自定义 > 查询订单信息 > 查询订单信息。
调试应用。在右侧调试与预览下的对话框中输入问题,然后单击,即可调试对话效果。
发布应用。单击右上方的发布 > 发布更新,然后单击下方的运行。系统将打开一个新页面,该页面的地址即为应用发布后的访问地址。
测试对话效果。按照页面提示开始对话,体验与 AI 应用对话功能。
2.集成 AI 应用
2.1网页嵌入
通过在电商系统的网页中嵌入 Dify 提供的代码,可以实现快速集成,无需额外的开发工作。
📌
单击 Dify 平台页面顶部中间的工作室,单击需要集成到电商系统中的目标应用,进入应用编排页面。
单击右侧发布 > 嵌入网站。在弹出的“嵌入到网站中”的面板中选择第 2 种方式,然后复制代码。
找到在“部署 Dify 平台”方案中已部署电商系统的目标云服务器ECS,其规格为ecs.e-c1m2.large(2 vCPU 4 GiB)的 ECS。
📌
若通过手动部署 Dify 平台:在部署资源阶段所创建的 ECS,即为目标云服务器 ECS。
若通过一键部署 Dify 平台:在一键部署阶段完成后,单击资源栈详情页面的资源页签,找到资源名称为 EcsInstance 的资源 ID,使用这个资源 ID 作为 ECS 的实例 ID,可以在 ECS 控制台的实例列表中快速定位到目标云服务器 ECS。
登录目标云服务器ECS。
📌
登录ECS管理控制台,在实例页面,找到前面步骤所创建的 ECS 实例。
在右侧操作列,单击远程连接,并选择通过Workbench远程连接。根据页面提示登录,进入终端页面。具体操作请参见:使用Workbench登录ECS实例。
执行脚本。将“<上一步骤复制的代码>”替换为前面第一步骤复制的代码,然后在终端页面中执行如下脚本。
代码块
Bash
sed -i '/<\/html>/{n;:a;N;$!ba;d}' templates/index.html
打开浏览器,单击页面右下角即可开始进行对话。
2.2基于 APIs 开发
📌
Dify 基于“后端即服务”理念为所有应用提供了 API。
为 AI 应用开发者带来了诸多便利。通过这一理念,开发者可以直接在前端应用中获取大型语言模型的强大能力,而无需关注复杂的后端架构和部署过程。
2.2.1如何使用
选择一个应用,在应用(Apps)左侧导航中可以找到访问 API(API Access)。
在该页面中你可以查看 Dify 提供的 API 文档,并管理可访问 API 的凭据。
📌
例如,你是一个咨询公司的开发部分。
你可以基于公司的私有数据库提供 AI 能力给终端用户或开发者,但开发者无法掌握你的数据和 AI 逻辑设计,从而使得服务可以安全、可持续的交付并满足商业目的。
在最佳实践中,API 密钥应通过后端调用。
而不是直接以明文暴露在前端代码或请求中,这样可以防止你的应用被滥用或攻击。
📌
可以为一个应用创建多个访问凭据,以实现交付给不同的用户或开发者。
这意味着 API 的使用者虽然使用了应用开发者提供的 AI 能力,但背后的 Promp 工程、知识库和工具能力是经封装的。
2.2.2文本生成型应用
📌
可用于生成高质量文本的应用。
例如生成文章、摘要、翻译等,通过调用 completion-messages 接口,发送用户输入得到生成文本结果。
用于生成文本的模型参数和提示词模板取决于开发者在 Dify 提示词编排页的设置。
可以在应用 -> 访问 API 中找到该应用的 API 文档与范例请求。
例如,创建文本补全信息的 API 的调用示例:
代码块
SQL
curl --location --request POST 'https://api.dify.ai/v1/completion-messages' \
--header 'Authorization: Bearer ENTER-YOUR-SECRET-KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"inputs": {},
"response_mode": "streaming",
"user": "abc-123"
}'
代码块
Python
import requests
import json
url =
headers = {
'Authorization': 'Bearer ENTER-YOUR-SECRET-KEY',
'Content-Type': 'application/json',
}
data = {
"inputs": {"text": 'Hello, how are you?'},
"response_mode": "streaming",
"user": "abc-123"
}
response = requests.post(url, headers=headers, data=json.dumps(data))
2.2.3对话型应用
📌
可用于大部分场景的对话型应用,采用一问一答模式与用户持续对话。
要开始一个对话请调用 chat-messages 接口,每次对话开始都会产生出新的 conversation\_id,通过该conversation\_id 传回接口就可继续保持该会话。
重要说明: Service API 不共享 WebApp 创建的对话。通过 API 创建的对话与 WebApp 界面中创建的对话是相互隔离的。
2.2.4conversation_id 的注意事项:
📌
•
生成 conversation_id:
发送对话信息的 chat-messages API的调用:
可以在应用 -> 访问 API 中找到该应用的 API 文档与范例请求。
代码块
SQL
curl --location --request POST 'https://api.dify.ai/v1/chat-messages' \
--header 'Authorization: Bearer ENTER-YOUR-SECRET-KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"inputs": {},
"query": "eh",
"response_mode": "streaming",
"conversation_id": "1c7e55fb-1ba2-4e10-81b5-30addcea2276",
"user": "abc-123"
}'
代码块
Python
import requests
import json
二、搭建复杂业务流程管理的对话流(Chatflow)
1.搭建 AI 应用
📌
创建一个对话流(Chatflow)AI 电商客服助手。
Chatflow 专注于流程的结构化和引导性,具备强大的流程编排能力,非常适合处理复杂的业务流程和多步骤任务。
创建知识库。
使大模型能够获取专属业务知识,从而提供更精准的回答。若知识库已创建则可跳过本步骤。
📌
打开浏览器,进入 Dify 平台。
单击 Dify 平台顶部知识库,接着单击下方的创建知识库,
选择数据源为导入已有文本,随后选择本地文件,最后单击下一步。
创建"查询订单信息"自定义工具。
使大模型能够通过工具调用获取实时订单数据。若"查询订单信息"已创建则可跳过本步骤。
📌
打开浏览器,进入 Dify 平台。
单击Dify 系统页面顶部工具,接着单击下方的自定义 > 创建自定义工具。
在弹出的创建自定义工具面板中,填写如下信息,然后单击保存。未提及配置使用默认值即可。
代码块
YAML
创建"创建退款申请"的自定义工具。
使大模型能够通过工具调用来创建退款申请。
📌
单击Dify 系统页面顶部工具,接着单击下方的自定义 > 创建自定义工具。
在弹出的创建自定义工具面板中,填写如下信息,然后单击保存。未提及配置使用默认值即可。
代码块
YAML
openapi: "3.0.0"
info:
version: 1.0.0
title: 退款API
servers:
- url: http://<ECS 公网 IP>
paths:
/refund:
post:
summary: 创建退款申请
operationId: 创建退款申请
requestBody:
required: true
2.导入 DSL 创建
单击 Dify 系统页面顶部工作室。
然后单击导入 DSL 文件,在弹出框中选择 URL,并单击创建。
在编排页面,按以下步骤操作修改节点并为节点配置自定义工具。
设置完成后,页面显示如下:
调试应用。
单击右上方的预览 ,在预览面板下的对话框中输入问题,然后单击,即可调试对话效果。
发布应用。
单击右上方的发布 > 发布更新,然后单击运行。系统将打开一个新页面,该页面的地址即为应用发布后的访问地址。
测试对话效果。
按照页面提示开始对话,体验与 AI 应用对话功能。
•
以下问题在通过知识库检索到专属内容后,由大模型进行了推理并作出回复。
33%
•
以下问题在调用“查询订单信息”工具后,由大模型进行了推理并作出回复。
33%
•
以下问题在调用“查询订单信息”和“创建退款申请”工具后,由大模型进行了推理并作出回复。
33%