【Dify基础实战】跟网页对话
Dify跟网页对话的测试效果如下
一、配置大模型
Dify部署先看这篇 《从零开始Dify本地部署|Windows》
启动Dify后,右上角个人中心-设置-模型供应商
可以配置OpenAI
、智谱AI
、通义千问
、Kimi
等
我以硅基流动
为例,要注册的可以看这篇 《【1024送福利】硅基流动送2000万token啦!撒花✿✿ 附使用教程》
拿到硅基流动的API-Key
后,配置如下
填上API-Key
后就加载出所有的模型,需要哪个模型,就开哪个模型,我开的这几个都是免费的模型
这样就配置好了大模型
二、创建工作流应用
三、工作流整体框架
- 开始:输入 问题 和 网页网址
- 解析网页
- 代码处理网页
- LLM跟网页对话
- 结束
四、工作流详情
这部分是五个节点的详细配置
4.1 开始节点
4.2 获取单页面
- 点 开始节点后面的 “+”号
- 搜索“jina”
- 选中“获取单页面”
- 变量网址赋值
Search_URL
4.3 代码执行-页面处理
为了跟大模型对话有更好的性能,我们可以把不需要的字符先处理一下。
比如图片和多个换行符
注意: main
函数的输出得是dict
格式 ,dict
中的key
才能作为输出变量result
Dify仅支持部分python包,所以不能用re
包来处理网页中的字符,就用的其他字符处理方法。
这段代码中实现了
移除 Markdown 图片格式 优化换行符
def process_content(content):
# 1. 去除图片的 Markdown 格式
lines = content.split('\n')
filtered_lines = [line for line in lines if not line.startswith("![Image")]
content_without_images = "\n".join(filtered_lines)
# 2. 处理换行符:将大于3个连续换行符替换为两个
# 逐行处理并移除多余换行
result = []
empty_count = 0
for line in content_without_images.splitlines():
if not line.strip(): # 如果是空行
empty_count += 1
else:
empty_count = 0
# 如果连续空行少于等于2,保留
if empty_count <= 2:
result.append(line)
# 合并为最终结果
return "\n".join(result)
def main(json_data:str)-> dict:
# 将 JSON 字符串转换为字典
data = json.loads(json_data)
# 提取 content 字段
content = data.get("data", {}).get("content", "")
# 处理 content
processed_content = process_content(content)
return {
"result": processed_content,
}
4.4 LLM-跟网页对话
system
和user
的提示词设置,按需配置你是智能客服,请以高效、简洁、礼貌、有序地回答问题
基于{{上下文}},针对用户问题{{开始.Query}},提供简洁回答。
请直接回答问题,无需提及信息来源。
4.5 结束节点
五、测试效果和详情
网址链接
https://mp.weixin.qq.com/s/0Wv-0_dulHQGc1MM5YfElw
用户问题
购买一手住房的,公积金贷款期限是多少年?
详情中可以看到各个节点的运行详情
作者:华尔街的幻觉