本项目是一个基于飞书开放平台的机器人应用,集成了大语言模型(LLM)和多种功能模块。它主要通过飞书API与用户进行交互,并利用LLM实现智能对话。
- 获取单聊和群聊消息,按照不同的聊天群组存储聊天记录,等待使用。
- 能够解析@机器人、引用、图片消息、链接消息等内容。
- 文本聊天 - 基于语义理解的自然对话,支持多模态理解(含图片)
- 图片生成 - 支持文生图和图生图能力
- 文生图:根据描述生成图片
- 图生图:基于参考图片进行风格转换、内容修改等
- 图片规格:单次生成1张,尺寸根据参考图比例自适应,单边不超过1024px
- 传输方式:采用飞书官方推荐的上传图片获取
image_key后发送,确保消息体不超限
- 文本输出 - 平铺直叙,不使用Markdown等富文本格式
- 智能总结 - 周报/月报生成,分析用户历史发言形成简约报告
- 欢迎语 - 新成员加入时自动生成个性化欢迎语
- 一切针对聊天内容的响应皆基于语意理解,而非关键词命令。
- 聊天中@机器人,则立刻回答指定问题。
- 在@后的一段时间里分析用户语意,如果在相同的上下文内则持续回答用户问题,无需每次都@机器人。
- 在群中旁听其它消息,分析上下文环境,在出现意见分歧、不确定性较高等可能需要机器人主动参与话题时,主动回复。
- 当用户发送一张图片并且@机器人进行聊天时,需要调用多模态能力解析图片内容,并回答聊天意图。
- 当用户发送一张图片并且@机器人,并且附带的语意是需要机器人生成新图时,需要将这张图片作为参考图进行生图。
- 当用户发送网址时,调用模型自身的联网能力对网页内容进行解析。
- 在项目中以单独的文件统一管理所有的系统提示词。
- 项目定义机器人基础性格(系统提示词):
你叫托兰,是群聊助手,同时也是群里的一员,说话要有人味。不要自夸/推销/寒暄,说话言简意赅不要啰嗦,不要装腔作势。平铺直叙的输出,而不是markdown格式。可以适当的、克制的使用Emoji来丰富个性。
- 根据不同的群聊,接受群内成员发出的性格更改指令,比如“俏皮一些”、“严谨一些”,“每次多说点”、“每次少说点”。
- 根据不同的群聊,接受群内成员发出的主动性更改指令,比如“多发表些观点”、“少说话”。
- 以上实时调整仅为举例而非关键词,需要提取用户语意。
除了语意发起的参数调整,也支持命令调整:
/help # 查看所有命令信息
/summary weekly|monthly # 生成周报或月报
/settings threshold 0.5 # 设置主动发言阈值(0-1),默认0.65
/settings mode quiet|normal|active # 调整发言模式
/optout # 选择不纳入公开个人总结
/reset # 重置 Bot 状态(清空会话、重置设置)
- 终端一般是Linux主机,1Panel面板管理,以Docker化运行所有程序。
- 针对不同的部署,以环境文件的方式存储部署相关变量。
- 聊天和绘图可以调用不同的模型。
项目由 12 个核心模块组成,各模块职责明确:
飞书用户
↓
Webhook → connector.py(验证)
↓
event_handler.py(事件分发)
↓
message_handler.py(核心逻辑)
├─ semantic_intent.py(意图识别)
├─ llm.py(LLM 调用)
├─ image_gen.py(图片生成)
├─ web_search.py(网络搜索)
├─ database.py(存储)
└─ feishu_api.py(API 调用)
↓
飞书群聊(消息/图片)
- 访问 飞书开放平台
- 创建企业自建应用
- 获取以下信息:
- App ID
- App Secret
- Verification Token
- 配置应用权限:
im:message- 获取与发送单聊、群组消息im:message:readonly- 读取消息im:chat- 获取群组信息
- 配置事件订阅:
- 订阅
im.message.receive_v1事件 - 设置请求地址:
https://your-domain.com/feishu/events
- 订阅
本项目采用 MIT 许可证 - 详见LICENSE文件
本项目仅供学习和研究使用。使用本项目时,请遵守相关法律法规和飞书开放平台的使用条款。对于使用本项目造成的任何直接或间接损失,开发者不承担任何责任。

