Dify中使用SearXNG
**背景:**在使用dify时,很多模型都没有联网实时搜索的能力,所以查询不到实时的数据,可以利用dify的SearXNG这个插件用于帮助搜索查找网络上的最新数据
在dify的插件市场中搜索到这个工具之后,点击安装插件,安装之后需要填写一个URL授权,下面需要使用dockerSearXNG部署到本地,然后在agent中饮用它
一、下载工具
1.在本地创建一个目录用于放SearXNG文件夹
2.下载安装包
git clone https://github.com/searxng/searxng-docker.git
二、修改工具配置文件
3.修改配置文件,使用nodepad++打开下载目录的文件:D:\art\SearXNG\searxng-docker\docker-compose.yaml
找到第44行,把端口修改一下,不要和dify的冲突,这里修改为8081
修改之后保存
4.修改配置文件,使用nodepad++打开下载目录的文件:D:\art\SearXNG\searxng-docker\searxng\settings.yml
这里可以看到需要填写一个key,需要先自己生成一个key
生成key的方式:执行这个命令:openssl rand -hex 32
如果命令执行失败可能是没有安装这个openssl,这个时候需要先下载并安装这个软件之后再次执行。
软件名字:Win64OpenSSL-3_5_1.exe
安装之后找到安装目录后,点击启动,在弹出来的命令窗口中再次执行命令就可以得到一个钥匙,
然后把这个钥匙放到上面说的那个文件中
然后还是在这个文件配置搜索引擎,只用把下面这个代码中的钥匙换一下就行,其他的直接粘贴。
use_default_settings: true
server:secret_key: "4e2406ccb4a3810facf354b1bfd4c31ecbd743532d7dbda2774bcb6dba074b99"limiter: falseimage_proxy: true
ui:static_use_hash: true
redis:url: false
search:formats:- html- json
engines:- name: baiduengine: baidudisabled: false- name: 360searchengine: 360searchdisabled: false- name: sogouengine: sogoudisabled: false- name: bingengine: bingdisabled: false- name: bilibiliengine: bilibilidisabled: false- name: archlinuxwikiengine: archlinuxdisabled: true- name: duckduckgoengine: duckduckgodistabled: true- name: githubengine: githubshortcut: ghdisabled: true- name: wikipediaengine: wikipediadisabled: true- name: googleengine: googledisabled: true- name: youtubeengine: youtube_noapidisabled: true- name: duckduckgoengine: duckduckgodisabled: true- name: qwantengine: qwantdisabled: true- name: braveengine: bravedisabled: true- name: startpageengine: startpagedisabled: true
三、启动工具
好了之后保存文件,输入下面指令启动这个工具:注意要在刚才下载的那个目录执行
docker-compose up -d
四、访问SearXNG
打开浏览器,输入:http://127.0.0.1:8081/
五、配置到dify中
当Dify通过Docker部署时,需将本地地址127.0.0.1替换为Docker内部主机名host.docker.internal,这里就不要用127.0.0.1了。填写:http://host.docker.internal:8081
六、创建dify agent时使用这个工具
1.在dify中创建一个agent应用,查询当前天气
2.编写提示词,添加应用
3.选择模型,输入问题,验证结果,发布应用
附上prompt:
你是天气查询助手,当用户询问天气时可以使用searxng_search工具进行联网搜索汇总后返回给用户结果。用户询问任何问题前一定要先使用current_time获取当前时间。默认查询地点为上海浦东```