一、引言
1.1 项目背景与目标
随着业务的发展和技术的进步,客户和内部员工对于获取信息的需求日益增长。传统的信息查询方式往往耗时且效率低下,尤其是在面对大量文档和资料的情况下。因此,我们需要一个能够快速响应查询请求、准确提供所需信息的解决方案。
为此,我们决定构建一个知识库机器人。通过这个机器人,我们可以实现以下目标:
-
提高效率:减少人工查询的时间成本,使员工能够更专注于核心业务。
-
提升客户满意度:为客户提供即时且准确的信息,增强用户体验。
-
降低运营成本:自动化处理常见问题,减轻客服人员的工作负担。
1.2 技术选型介绍
-
Dify平台:Dify是一个开源的人工智能平台,专门用于构建和部署对话式AI应用。它提供了丰富的工具和服务,可以帮助我们快速构建高质量的知识库机器人。
-
百炼平台:阿里云的百炼是一站式的大模型开发及应用构建平台,是一个大模型的服务平台。无论是开发者还是业务人员,都能深入参与大模型应用的设计和构建。
-
通义千问:通义千问是阿里云推出的一个大型语言模型,具备强大的自然语言理解和生成能力。通过与Dify平台和百炼平台的结合,通义千问可以为我们提供高效、准确的问答服务。
二、环境准备
需要准备的资源:
-
一台ECS(阿里云服务器)
-
百炼平台的API Key
三、操作流程
3.1 部署Docker环境
- 点击ECS实例的实例ID,进入实例的详情界面
- 依次选择“定时与自动化任务”、“安装/卸载扩展程序”,点击“安装扩展程序”
- 新建任务,填写任务名称,选择安装的扩展程序版本为“Docker社区版”,然后点击下一步
- 点击“确定”
- 等待安装完成
- SSH连接到ECS服务器,检查是否安装成功,如下结果表示安装成功
docker -v
docker compose version
3.2 安装Dify
- 克隆 Dify 源代码至本地,成功后能够在本地目录查看到“dify”的文件夹
git clone https://github.com/langgenius/dify.git
- 进入Dify的源代码的docker目录,复制环境变量文件
cd dify/docker
cp .env.example .env
-
配置加速地址,本次采用自建的Docker代理仓库
-
注:自建Docker代理仓库,参考:https://thechen.work/subject/article/slug_docker_hub/
sudo sh -c 'cat << EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://hub.thechen.top"
]
}
EOF'
- 重载配置,并且重启Docker生效
sudo systemctl daemon-reload
sudo systemctl restart docker
-
拉取镜像,启动项目,注意执行docker compose命令的路径需要在dify项目的docker目录下
-
启动成功后,直接转到“3.3 构建应用”章节继续
docker compose up -d
- 在拉取镜像过程中,如果出现镜像拉取失败的报错,如下:
-
原因是网络波动导致的,解决方法:
-
多尝试几次
docker compose up -d
,直到成功 -
下载提前保存的tar镜像文件,手动上传到服务器上,然后逐个加载镜像文件(共8个),自动生成镜像,全部加载完毕后,确保有8个镜像,然后执行
docker compose up -d
启动项目
docker load -i 镜像文件.tar
3.3 构建应用
- 项目启动成功后,在浏览器地址栏输入服务器的IP,会自动跳转到Dify项目的初始界面。在这个界面注册账户信息,点击“设置”
- 设置完成后,会自动跳转登录界面,登录刚才注册的信息
- 登陆后进入主页
- 有点右上角头像,点击“设置”
- 选择“模型供应商”,选择“通义千问”,填入百炼平台上申请的API KE,点击“保存”
- 设置系统默认模型
- 创建知识库
- 上传文档,点击“下一步”。本次演练以“百炼系列手机产品介绍.docx”为例,内容如下:
百炼手机产品介绍
欢迎来到未来科技的前沿,探索我们精心打造的智能手机系列,每一款都是为了满足您对科技生活的无限遐想而生。
百炼X1 —— 畅享极致视界:搭载6.7英寸1440 x 3200像素超清屏幕,搭配120Hz刷新率,流畅视觉体验跃然眼前。256GB海量存储空间与12GB RAM强强联合,无论是大型游戏还是多任务处理,都能轻松应对。5000mAh电池长续航,加上超感光四摄系统,记录生活每一刻精彩。参考售价:4599 - 4999
通义Vivid 7 —— 智能摄影新体验:拥有6.5英寸1080 x 2400像素全面屏,AI智能摄影功能让每一张照片都能展现专业级色彩与细节。8GB RAM与128GB存储空间确保流畅操作,4500mAh电池满足日常所需。侧面指纹解锁,便捷又安全。参考售价:2999 - 3299
星尘S9 Pro —— 创新视觉盛宴:突破性6.9英寸1440 x 3088像素屏下摄像头设计,带来无界视觉享受。512GB存储与16GB RAM的顶级配置,配合6000mAh电池与100W快充技术,让性能与续航并驾齐驱,引领科技潮流。参考售价:5999 - 6499。
百炼Ace Ultra —— 游戏玩家之选:配备6.67英寸1080 x 2400像素屏幕,内置10GB RAM与256GB存储,确保游戏运行丝滑无阻。5500mAh电池搭配液冷散热系统,长时间游戏也能保持冷静。高动态双扬声器,沉浸式音效升级游戏体验。参考售价:3999 - 4299。
百炼Zephyr Z9 —— 轻薄便携的艺术:轻巧的6.4英寸1080 x 2340像素设计,搭配128GB存储与6GB RAM,日常使用游刃有余。4000mAh电池确保一天无忧,30倍数字变焦镜头捕捉远处细节,轻薄而不失强大。参考售价:2499 - 2799。
百炼Flex Fold+ —— 折叠屏新纪元:集创新与奢华于一身,主屏7.6英寸1800 x 2400像素与外屏4.7英寸1080 x 2400像素,多角度自由悬停设计,满足不同场景需求。512GB存储、12GB RAM,加之4700mAh电池与UTG超薄柔性玻璃,开启折叠屏时代新篇章。此外,这款手机还支持双卡双待、卫星通话,帮助您在世界各地都能畅联通话。参考零售价:9999 - 10999。
每一款手机都是匠心独运,只为成就您手中的科技艺术品。选择属于您的智能伙伴,开启未来科技生活的新篇章。
-
分段设置选择“自定义”,分段标识符以实际文档中的内容为准,比如此次“百炼系列手机产品介绍.docx”的内容是以换行符为标准的分段,点击“确认并预览”,可在右侧查看分段的效果。
-
分段:大语言模型存在有限的上下文窗口,通常需要将整段文本进行分段处理后,将与用户问题关联度最高的几个段落召回,即分段 TopK 召回模式。此外,在用户问题与文本分段进行语义匹配时,合适的分段大小将有助于匹配关联性最高的文本内容,减少信息噪音。
-
索引方式设置为“高质量”,检索设置为“混合检索”,且选择“权重设置”类型。
-
TopK:用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整片段数量。系统默认值为 3 。数值越高,预期被召回的文本分段数量越多。
-
Score 阈值:用于设置文本片段筛选的相似度阈值,即:只召回超过设置分数的文本片段。系统默认关闭该设置,即不会对召回的文本片段相似值过滤。打开后默认值为 0.5。数值越高,预期被召回的文本数量越少。
- 等待嵌入完成,点击“前往文档”,能够看到文档内容已经根据换行符,切割成了9段
- 在“工作室”点击“创建空白应用”,选择“聊天助手”、“基础编排”,设置应用名称,然后“创建”
- 进入应用后,给应用设置提示词,有助于提升回答的质量,并在上下文中添加知识库。完成后可在右侧进行测试,通过测试可以看到AI回答的内容与文档的内容没有误差
3.4 部署上线
- 确保上线前,点击“发布”、“更新”
3.4.1 上线方式一:公开访问的网页
-
在应用的“监测”页面,查看到公开访问的URL,可通过该URL直接跳转到网页端的对话界面
-
应用场景:在线客服系统、FAQ 自助服务、产品咨询等等
3.4.2 上线方式二:嵌入式的网站AI助手
-
在应用的“监测”页面,点击“嵌入”,选择第二种小窗口的方式,复制前端script 代码到前端的
或 标签中 -
应用场景:在线论坛和社区、智能客服助手、产品文档查询助手等等
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dify聊天机器人测试页面</title>
<style>
body {
font-family: "微软雅黑", sans-serif;
margin: 0;
padding: 0;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background-color: #f4f4f9;
}
.container {
text-align: center;
max-width: 800px;
padding: 20px;
background-color: #ffffff;
border-radius: 10px;
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
}
h1 {
color: #333333;
}
p {
font-size: 1.1em;
line-height: 1.6;
color: #666666;
}
</style>
</head>
<body>
<div class="container">
<h1>欢迎来到Dify聊天机器人测试页面</h1>
<p>这是一个用于测试Dify聊天机器人集成的页面。</p>
</div>
#填入你的script代码
</body>
</html>
3.4.3 上线方式三:API调用
- 在应用的“监测”页面,“后端服务API”提供了API的接口地址,点击“API密钥”创建API KEY,通过调用API接口的方式实现个性化应用开发
- 应用场景:小程序、自研系统、APP等等
import requests
url = 'http://IP/v1/chat-messages'
api_key = '{api_key}'
headers = {
'Authorization': f'Bearer {api_key}',
'Content-Type': 'application/json',
}
data = {
"inputs": {},
"query": "星尘S9 Pro的价格是多少",
"response_mode": "blocking",
"conversation_id": "",
"user": "1",
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
# 解析JSON响应
response_json = response.json()
# 从响应中提取answer字段
answer = response_json.get('answer')
if answer:
print(answer)
else:
print("Response does not contain an 'answer' field.")
else:
print(f"Request failed with status code: {response.status_code}")
3.4.4 上线方式四:钉钉机器人接入
- 进入钉钉开发者后台(https://open-dev.dingtalk.com/?spm=ding_open_doc.document.0.0.74f445e50lIX5t#/) 创建钉钉应用
- 开通全部的卡片权限(5个)
- 添加机器人应用能力,并配置机器人,注意消息接收模式选择为“Stream模式”,然后发布
- 应用发布
- 保存Client ID和Client Secret
- 进入钉钉卡片平台(https://open-dev.dingtalk.com/fe/card) 新建模板,注意卡片类型为“消息卡片”,卡片场景模板“AI卡片”。
- 点击保存,发布,并保存卡片ID
- git拉取项目
git clone https://github.com/zfanswer/dify-on-dingtalk.git
- 复制环境变量文件
cd dify-on-dingtalk/docker/
cp ../.env.example .env
cp ../.bots.yaml.example .bots.yaml
- 分别修改.env和.bots.yaml文件,配置好所需参数
- .env配置参数说明
- .bots.ymal配置参数说明
- 启动项目
- 启动成功后可以在钉钉群里添加机器人
- 验证
版权声明:如无特殊说明,文章均为本站原创,转载请注明出处
本文链接:https://thechen.work/subject/article/slug_dify/
许可协议:署名-非商业性使用 4.0 国际许可协议