-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
这是一个?
现有功能优化
详细描述
Docker部署、LangBot v4.6.3、Ubuntu、python 3.12.7
Dify+LangBot+企业微信智能机器人场景:测试基于官方 LangBot v4.6.3 代码,docx文档的图片上传到知识库显示为  markdown格式,对企业微信机器人进行提问,电脑端企业微信机器人返回Dify知识库图片内容为:[图片](https://域名:端口/files/2dabb1f0-80ac-4b1e-8a17-536aafb97adc/file-preview?timestamp=1765421851&nonce=97a180b300ff057d0254d85e585f9903&sign=wZdJ4hiq4S0KxQwS_VKG9tpvJG5j4z9lNRf0w7CyRQ0=),手机端企业微信机器人能够成功渲染显示成图片。
观察 ./LangBot/src/langbot/libs/wecom_ai_bot_api/api.py 代码 _build_stream_payload 函数打包成企业微信JOSN格式为:
return {
'msgtype': 'stream',
'stream': {
'id': stream_id,
'finish': finish,
'content': content,
},
}
'content' 字段内容为:Dify知识库返回的markdown格式图片内容[图片](https://域名:端口/files/xxx/file-preview?timestamp=xxx&nonce=xxx&sign=xxx)与文本组合成字符串
我参考企业微信开发者中心-服务端API-智能机器人-被动回复消息-流式消息回复文档:
企业微信开发者中心-服务端API-智能机器人-被动回复消息-流式消息回复文档
企业微信开发者中心文档的智能机器人-被动回复消息-流式消息回复JOSN格式为:
{
"msgtype": "stream",
"stream": {
"id": "STREAMID",
"finish": false,
"content": "**广州**今日天气:29度,大部分多云,降雨概率:60%",
"msg_item": [
{
"msgtype": "image",
"image": {
"base64": "BASE64",
"md5": "MD5"
}
}
],
"feedback": {
"id": "FEEDBACKID"
}
}
}
其中的注意事项如下:
流式消息回复内容content字段支持常见的markdown格式
若content中包含思考过程标签,客户端会展示思考过程。
若回复内容包含图片,仅支持在最后一次回复时,即finish=true时支持包含msgtype为image的msg_item。
询问技术人员说:“若回复内容包含图片,仅支持在最后一次回复时,即finish=true时支持包含msgtype为image的msg_item”。我尝试修改markdown图片格式转换为base64和md5,组合成 msg_item 字段,成功在电脑端企业微信当文本回复完成后,将markdown图片格式渲染显示图片,相关修改代码如下所示,由于担心 LangBot 版本更新太快,不知道修改的代码会不会影响LangBot其他功能,所以提出这个需求看看能否进行优化。
LangBot 相关修改代码:
基于官方 LangBot v4.6.3 修改后的 difysvapi.py 代码
基于官方 LangBot v4.6.3 修改后的 wecombot.py 代码
基于官方 LangBot v4.6.3 修改后的 api.py 代码
我还询问了企业微信技术人员:如果不采用将markdown格式图片转换msgtype为image的msg_item形式,电脑端企业微信要怎么显示  markdown格式图片?回复:“图片链接需要有格式后缀”;但是Dify返回的markdown格式图片内容 ,目前尝试能否在Dify返回知识库的markdown图片格式时,在LangBot回复到企业微信机器人之前增加图片链接后缀? 但图片后缀有 .jpg, .png, .gif 等多种格式,目前还在尝试能否解决。