企业微信以及钉钉是我司用的两款办公通讯软件,领导想要打造一个关于我司的知识库,不再需要登录网站,仅通过与这两款办公通讯软件正常对话,即可获取到想要的讯息。
我们已经在服务器上部署了dify,dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。具体请参考欢迎使用 Dify | Dify
我们所选用的工具是dify-on-wechat,可以clone 到本地
git clone https://github.com/hanfangyuan4396/dify-on-wechat
与企业微信集成
必要条件
Python: >= 3.8 && <=3.10,我使用的是3.8.5,亲测有效。可以安装miniconda,通过miniconda来创建python 3.8的环境。
Python的版本也不能太高,ntwork-whl目前只有3.10之前的依赖。
安装企业微信
dify-on-wechat该项目适配的企业微信有版本要求,需要下载4.0.8.6027版本的,下载连接:dldir1.qq.com/wework/work…
但是企业微信最新版本为4.1.33.6009。即使电脑端下载了旧版本的,然后用手机扫码登录,也会被提示版本过低需要升级pc端版本,且无法避免,ntwork-whl只兼容了固定版本企业微信客户端,最新版本没有兼容。
解决方案如下:
- 下载并安装最新版本和4.0.8.6027版本的企业微信
- wxwork_last文件夹为最新版本的企业微信
- WxWork文件夹为4.0.8.6027版本
- 先打开最新版本的企业微信,并扫码登录
打开Wxwork_last/wxwork.exe文件,运行最新版本的企业微信,扫码登录
- 登录成功后,打开设置,勾选上启动企业微信后自动登录,去掉自动更新的选项。然后关闭最新版本的企业微信程序
- 现在再打开旧版本的企业微信,就可以直接登录了
运行wxwork/wxwork.exe即可。
安装相关依赖
进入到dify-on-wechat目录,执行命令如下:
cd ${DIFY_ON_WECHAT_ROOT} ## DIFY_ON_WECHAT_ROOT 为Dify-on-wechat项目的根目录
# 安装核心依赖
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ ## 我是用的是aliyun的镜像源,也可以换成其他镜像源
# 安装可选依赖,我是全部安装了
pip install -r requirements-optional.txt -i https://mirrors.aliyun.com/pypi/simple/ ## 我是用的是aliyun的镜像源,也可以换成其他镜像源
# 安装 pilk, 官网上没有说明,但是我启动python app.py的时候报缺少pilk依赖,所以就装了一个
pip install pilk -i https://mirrors.aliyun.com/pypi/simple/
安装ntwork依赖,由于ntwork的安装源不是很稳定,可以下载对应的whl文件,使用whl文件离线安装ntwork。
git clone https://github.com/hanfangyuan4396/ntwork-bin-backup.git
再安装ntwork需要先查看python的版本信息,直接在conda env里输入python
我本地是python 3.8.5 AMD64,所以选择对应的ntwork的版本为ntwork-0.1.3-cp38-cp38-win_amd64.whl
执行命令如下:
pip install ${NTWORK_ROOT}/ntwork-whl/ntwork-0.1.3-cp38-cp38-win_amd64.whl # NTWORK_ROOT为ntwork的根目录, ntwork-0.1.3-cp38-cp38-win_amd64.whl 按需修改
指定企业微信运行版本和路径
修改${DIFY_ON_WECHAT}/channel/wework/run.py文件
# 换成你的执行路径即可
ntwork.set_wework_exe_path(wework_exe_path="D:\wecom\WXWork\WXWork.exe", wework_version='4.0.8.6027')
启动程序
修改配置文件
我们在Dify-on-WeChat项目根目录创建名为config.json的文件,下面是以Dify智能助手应用作为示例的配置文件,请正确填写你刚刚创建应用的dify_api_base、dify_api_key、dify_app_type信息,请注意channel_type填写为 wework
{
"dify_api_base": "https://api.dify.ai/v1",
"dify_api_key": "app-xxx",
"dify_app_type": "agent",
"channel_type": "wework",
"model": "dify",
"single_chat_prefix": [""],
"single_chat_reply_prefix": "",
"group_chat_prefix": ["@bot"],
"group_name_white_list": ["ALL_GROUP"]
}
执行命令
注意要先登录好旧版本的企业微信,在执行启动命令
pyhon app.py ## 需要进入到dify-on-wechat根目录
启动效果
[INFO][2024-04-30 21:16:04][wework_channel.py:185] - 等待登录······
[INFO][2024-04-30 21:16:05][wework_channel.py:190] - 登录信息:>>>user_id:xxx>>>>>>>>name:
[INFO][2024-04-30 21:16:05][wework_channel.py:191] - 静默延迟60s,等待客户端刷新数据,请勿进行任何操作······
[INFO][2024-04-30 21:17:05][wework_channel.py:224] - wework程序初始化完成········
如果有以上信息表示已经启动成功了
与钉钉集成
创建钉钉企业应用机器人
- 登录进入 开发者后台统一登录 - 钉钉统一身份认证,选择合适的组织,进入企业内部应用开发页面,创建一个企业内部应用。
- 在弹出窗口里填好 应用名称、应用描述,上传应用图标点击保存。
- 然后自动进入应用开发配置界面(后续需要修改,也可在应用列表页面点击需要修改的应用),通过 添加应用能力 添加机器人能力。
给应用添加机器人能力
- 打开机器人配置开关,在下方出现的表单中按你的实际情况填入各必要信息,在消息接收模式上选择 Stream 模式。
机器人名称,图标,简介,描述,消息预览图都是必填项,消息模式选择stream模式。
- 然后点击发布,再去到左边栏的应用发布 -> 版本管理与发布 -> 创建新版本,给应用建立一个新版本进行发布。
- 最后回到 凭证与基础信息,记录下该应用的 Client ID 和 Client Secret,此时左上角应用的状态应该是 已发布,到此完成钉钉机器人的配置。
部署步骤
修改配置文件
与dify_on_wechat一样,在Dify-on-WeChat项目根目录创建名为config.json的文件,修改文件内容。
- 添加上dingtalk_client_id和dingtalk_client_secret这两个参数,这两个参数的值为上述步骤复制出来的client_id和client_secret。
- channel_type为dingtalk。
- dify_api_base和dify_api_key
{
"dify_api_base": "http://ip:port/v1",
"dify_api_key": "app-xxx",
"dingtalk_client_id": "client_id",
"dingtalk_client_secret": "client_secret",
"dify_app_type": "chatbot",
"channel_type": "dingtalk",
"model": "dify",
"single_chat_prefix": [""],
"single_chat_reply_prefix": "",
"group_chat_prefix": ["@bot"],
"group_name_white_list": ["ALL_GROUP"]
}
启动程序
执行命令
python app.py