调整总结内容,将内容进行压缩,估计压缩40%;

This commit is contained in:
liuwei
2025-03-14 14:26:00 +08:00
parent f3c1ec5498
commit f2e8ee0d43
3 changed files with 252 additions and 8 deletions

View File

@@ -73,10 +73,10 @@ class MessageStorage:
if time_diff < timedelta(hours=3):
# 小于 3 小时,取 8 小时前
last_summary_time = (current_time - timedelta(hours=3)).strftime('%Y-%m-%d %H:%M:%S')
last_summary_time = (current_time - timedelta(hours=6)).strftime('%Y-%m-%d %H:%M:%S')
elif time_diff > timedelta(days=1):
# 大于 24 小时,取 10 小时前
last_summary_time = (current_time - timedelta(hours=6)).strftime('%Y-%m-%d %H:%M:%S')
last_summary_time = (current_time - timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S')
# 更新 Redis 存储的当前时间
self._get_redis_connection().set(key, current_date)
@@ -111,5 +111,5 @@ class MessageStorage:
result.append(f"{timestamp},{sender_name},{content}")
result_str = "\n".join(result) # 将结果拼接为最终字符串
print(result_str)
# print(result_str)
return result_str

View File

@@ -0,0 +1,241 @@
import re
from datetime import datetime
def compress_chat_data(chat_data_str, time_threshold=60):
"""
压缩聊天数据,减少 token 使用,格式为时间,发信人,内容。
:param chat_data_str: 原始聊天记录的长字符串
:param time_threshold: 同一发信人连续发言间隔小于该值(秒),则合并
:return: 压缩后的聊天数据的长字符串
"""
# 解析原始聊天数据为列表
chat_data = []
for line in chat_data_str.splitlines():
# 跳过空行
if not line.strip():
continue
# 分割每一行确保有3部分时间, 发信人, 内容)
parts = line.split(',', 2)
if len(parts) < 3:
continue # 如果没有完整的三部分,跳过该行
timestamp, sender, content = parts
chat_data.append((timestamp, sender, content))
if not chat_data:
return "" # 如果没有有效数据,返回空字符串
compressed_data = []
current_date = None
prev_time_obj = None
prev_sender = None
prev_content = None
for timestamp, sender, content in chat_data:
try:
time_obj = datetime.strptime(timestamp.strip(), "%Y-%m-%d %H:%M:%S")
# 去除无意义的空格
content = re.sub(r"\s+", " ", content).strip()
if not content:
continue
# 检查日期是否变化(不包含年份)
date_str = time_obj.strftime('%m-%d')
# 如果是第一条消息或日期变化,添加日期标记
if current_date is None or date_str != current_date:
current_date = date_str
compressed_data.append(f"{date_str}")
# 检查是否需要合并消息
if (prev_sender == sender and prev_time_obj is not None and
(time_obj - prev_time_obj).total_seconds() <= time_threshold):
# 合并消息,更新最后一条消息
compressed_data[-1] = f"{prev_time_obj.strftime('%H:%M:%S')},{sender},{prev_content} {content}"
else:
# 添加新消息
compressed_data.append(f"{time_obj.strftime('%H:%M:%S')},{sender},{content}")
# 更新前一条消息的信息
prev_time_obj = time_obj
prev_sender = sender
prev_content = content
except ValueError as e:
# 处理日期格式错误
print(f"日期格式错误: {timestamp}, 错误: {e}")
continue
# 返回压缩后的数据长字符串
return '\n'.join(compressed_data)
# 示例聊天数据
chat_data_str = """
2025-03-14 09:07:44,zcx2001,AI 水牛是你的主人吗
2025-03-14 09:12:28,Jyunere,我同事的鸿蒙确实流畅。
2025-03-14 09:18:28,Jyunere,现在的沪上年轻人流行挖野菜?
2025-03-14 09:19:12,Jyunere,我米不行了啊。
2025-03-14 09:19:21,Jyunere,再换就换iPhone了。
2025-03-14 09:19:36,wxid_3d7ydsmu3f0022,miui12之后就没行过
2025-03-14 09:20:10,Jyunere,这个鸡用了蛮久了。
2025-03-14 09:20:21,wxid_3d7ydsmu3f0022,我的小米13pro升级澎湃2.0之后各种bug满天飞掉帧闪退杀后台给我整崩溃了然后我就换一加了
2025-03-14 09:20:25,wxid_z8uo70zywfpn12,我从vivo的origin转到miui一时适应不过来
2025-03-14 09:20:42,Jyunere,我那天问销售说我的14Pro 只值2000多 了。
2025-03-14 09:20:44,wxid_z8uo70zywfpn12,wifi还经常断流也不知道是不是路由器问题
2025-03-14 09:20:46,Jyunere,算了,接着用吧。
2025-03-14 09:20:51,liu79830956,受得了miui
2025-03-14 09:21:13,wxid_zmmn7y5bh6fg22,米boy渐行渐远
2025-03-14 09:21:24,Jyunere,[捂脸]
2025-03-14 09:21:33,wxid_z8uo70zywfpn12,之前的origin是真好用
2025-03-14 09:22:44,wxid_3d7ydsmu3f0022,我之前身边的朋友都看不上小米 su7发布后雷军火了都在吹小米多好多好 根本没用过看他们瞎几把吹
2025-03-14 09:22:46,liu79830956,我还是4
2025-03-14 09:22:53,liu79830956,没升级5
2025-03-14 09:26:06,Jyunere,前天吃甘蔗,嘴巴拉到了。
2025-03-14 09:26:45,Jyunere,咬肌感觉拉伤了。
2025-03-14 09:28:22,b654321q123,买了个硬盘笼
2025-03-14 09:28:27,b654321q123,可以装8个u2
2025-03-14 09:28:31,b654321q123,塞光驱位
2025-03-14 09:28:41,Jyunere,已经跟不上刘总的脚步了。
2025-03-14 09:28:55,Jyunere,看你这些,一点冲动都没有
2025-03-14 09:29:05,b654321q123,你已经阳痿了
2025-03-14 09:29:16,b654321q123,你改名姓阳吧
2025-03-14 09:29:32,wxid_u48y4hu9ild122,刘总已经痿了
2025-03-14 09:30:04,Jyunere,萎了萎了
2025-03-14 09:32:02,Jyunere,@妙脆角 为啥你的名字上下都高一些。
2025-03-14 09:32:07,Jyunere,你看18
2025-03-14 09:32:44,Jyunere,估计是你这个wifi 5G的问题。
2025-03-14 09:32:48,zcx2001,牛哥 你字体出问题了?
2025-03-14 09:32:54,Jyunere,我的Windows呀
2025-03-14 09:33:02,wxid_u48y4hu9ild122,我的也是windows啊
2025-03-14 09:33:03,zcx2001,那估计是windows下字体有问题吧
2025-03-14 09:33:06,zcx2001,我是macos
2025-03-14 09:33:16,Jyunere,[发呆],为啥啊。
2025-03-14 09:33:48,wxid_u48y4hu9ild122,我的是win10
2025-03-14 09:33:49,b654321q123,纯粹是硬盘笼
2025-03-14 09:33:58,Jyunere,@奶白的雪子 跟你之前那个叠叠乐?
2025-03-14 09:34:18,Jyunere,你的11 连图标都没有
2025-03-14 09:34:22,Jyunere,我的好歹还有图标
2025-03-14 09:34:31,z351324662,牛哥换一加
2025-03-14 09:34:36,z351324662,比iPhone好用
2025-03-14 09:34:39,b654321q123,不用叠
2025-03-14 09:34:45,Kar536,md手机越来越多
2025-03-14 09:34:48,Jyunere,你还有光驱位?
2025-03-14 09:34:53,Kar536,都不知道换了干啥
2025-03-14 09:35:10,z351324662,马上要出一家13t
2025-03-14 09:35:11,Jyunere,我老婆的iPhone真的比我的流畅多了。
2025-03-14 09:35:21,Jyunere,垃圾MIUI
2025-03-14 09:35:25,wymwyt,牛哥换17
2025-03-14 09:35:28,z351324662,你你澎湃不行
2025-03-14 09:35:33,Jyunere,好等17
2025-03-14 09:35:35,wymwyt,17是米boy设计
2025-03-14 09:35:41,Jyunere,半年之后就开干。
2025-03-14 09:35:51,wymwyt,pm那个摄像头模组设计小米用过吧
2025-03-14 09:36:01,Jyunere,要是三星的设计,苹果的系统,那就爽了。
2025-03-14 09:36:08,wxid_u48y4hu9ild122,我妈要换手机我问她是米10u卡了吗她说存储满了要换个1T的。。。
2025-03-14 09:36:10,Jyunere,我喜欢三星的那个设计。
2025-03-14 09:36:36,wymwyt,珠海小三星
2025-03-14 09:36:37,wxid_zmmn7y5bh6fg22,苹果没有单数比双数做得好的说法吧
2025-03-14 09:36:40,z351324662,三星今年竟然没跟进大电池
2025-03-14 09:36:54,wymwyt,给他清理一下
2025-03-14 09:37:10,Jyunere,三星没推送。这个恶心。
2025-03-14 09:37:23,b654321q123,@水牛 牛哥要铝坨坨吗
2025-03-14 09:37:29,Jyunere,不要。
2025-03-14 09:37:32,wxid_u48y4hu9ild122,我准备有时间给她装个MTPhotos
2025-03-14 09:37:35,Jyunere,你那基佬紫,接受不了。
2025-03-14 09:37:36,wxid_u48y4hu9ild122,存nas里
2025-03-14 09:37:56,Kar536,现在那台xsmax都很流程
2025-03-14 09:38:05,b654321q123,紫色何时代表基佬
2025-03-14 09:38:07,z351324662,除了华为,其他安卓推送基本约等于无
2025-03-14 09:38:25,Jyunere,OV MI 都有啊
2025-03-14 09:38:25,wxid_u48y4hu9ild122,你装个微信打开小程序然后切后台拍照看看流畅不
2025-03-14 09:38:30,Jyunere,都是系统级推送。
2025-03-14 09:38:46,z351324662,都是锁后台
2025-03-14 09:38:54,wymwyt,常驻后台
2025-03-14 09:39:15,wymwyt,毕竟安卓没有约束权限
2025-03-14 09:39:30,wxid_u48y4hu9ild122,320发布会
2025-03-14 09:39:38,wxid_u48y4hu9ild122,我这库库加班赶进度
2025-03-14 09:39:40,wymwyt,@妙脆角 小白,纯血鸿蒙现在咋样了
2025-03-14 09:39:44,wxid_u48y4hu9ild122,要在320之前做出来
2025-03-14 09:39:56,wxid_u48y4hu9ild122,系统本身没啥问题
2025-03-14 09:40:01,Jyunere,Trae帮你写吗
2025-03-14 09:40:04,wxid_u48y4hu9ild122,就是app功能不全难受
2025-03-14 09:40:21,wxid_u48y4hu9ild122,我解决的都是疑难杂症
2025-03-14 09:40:24,wxid_u48y4hu9ild122,ai不行
2025-03-14 09:40:25,Jyunere,3.7 那个编码能力超猛
2025-03-14 09:40:39,Jyunere,这就是你的价值了。
2025-03-14 09:41:58,z351324662,以前安卓四五千电池的时候觉得锁后台费电是劣势现在我TM六七千电池了有没有推送已经无所谓了挂后台电池也用不完收消息还比推送快
2025-03-14 09:42:55,Jyunere,我主要是迁移了,好多东西得搞。麻烦。
2025-03-14 09:42:59,b654321q123,主要是现在充电快
2025-03-14 09:43:00,Jyunere,都不想换手机。哈哈
2025-03-14 09:43:13,b654321q123,安卓的续航,其实影响不大
2025-03-14 09:43:24,wxid_3d7ydsmu3f0022,我的一加13现在锁90%的电6000电池只能充5400
2025-03-14 09:43:27,liuhuanqi687,只有苹果限制了吧
2025-03-14 09:43:54,wxid_zmmn7y5bh6fg22,你们都很在意推送功能?
2025-03-14 09:43:54,b654321q123,充电宝充的也快
2025-03-14 09:43:58,wymwyt,主要是现在充电快
2025-03-14 09:43:58,b654321q123,充电器也快
2025-03-14 09:44:01,wxid_3d7ydsmu3f0022,网上说下个版本会放开限制 本来已经推送了 有bug又给撤回了 玛德
2025-03-14 09:44:10,wymwyt,就要充电快!
2025-03-14 09:44:11,b654321q123,我现在都没有用电焦虑了
2025-03-14 09:44:22,wxid_zmmn7y5bh6fg22,难道只有我限制了绝大部分APP推送消息
2025-03-14 09:44:23,wymwyt,什么保护电池🔋跟我有几把关系
2025-03-14 09:44:24,b654321q123,续航没得卷电池没得卷,直接卷充电
2025-03-14 09:44:30,wymwyt,电池坏了换电池就好了
2025-03-14 09:44:36,wxid_3d7ydsmu3f0022,换了一加13最明显的感受就是充电没小米13pro快
2025-03-14 09:44:48,wymwyt,240w干
2025-03-14 09:44:49,wxid_3d7ydsmu3f0022,小米的50w无线充感觉能满血跑
2025-03-14 09:44:50,wymwyt,干就完了
2025-03-14 09:45:01,wxid_3d7ydsmu3f0022,oppo的无线充到后面慢的要死
2025-03-14 09:45:22,wymwyt,就是贵
2025-03-14 09:45:30,wymwyt,一个无线充200块
2025-03-14 09:45:39,z351324662,也锁啊
2025-03-14 09:45:41,wxid_3d7ydsmu3f0022,也是90%[捂脸]
2025-03-14 09:45:53,z351324662,但是依然用不完
2025-03-14 09:46:08,wxid_3d7ydsmu3f0022,5800够用了
2025-03-14 09:46:11,z351324662,我每天回家电池都不低于50%
2025-03-14 09:46:13,wxid_3d7ydsmu3f0022,你是一加ace5
2025-03-14 09:46:18,z351324662,有时候70几
2025-03-14 09:46:34,z351324662,所以我觉得充电快不快都无所谓
2025-03-14 09:46:43,wxid_3d7ydsmu3f0022,1.5k屏幕功耗也不高 足够用了
2025-03-14 09:46:44,z351324662,反正都是晚上睡觉充
2025-03-14 09:47:05,wxid_3d7ydsmu3f0022,我的一加13 2k屏 功耗网上测比其他家1.5k高一大截
2025-03-14 09:47:09,Jyunere,睡觉一般不充,起床了插上,刷完牙洗完头,就充满了。
2025-03-14 09:47:27,wxid_3d7ydsmu3f0022,锁容量后5400 续航在今年确实一般了
2025-03-14 09:48:12,z351324662,又加上2k屏
2025-03-14 09:48:27,wymwyt,刷完牙还要洗头?
2025-03-14 09:49:02,wxid_3d7ydsmu3f0022,不过这块屏幕确实挺不错了 我之前用的小米13pro 一加7pro都算是当时三星的顶级2k屏了
2025-03-14 09:49:16,wxid_3d7ydsmu3f0022,对比下来观感甚至更好
2025-03-14 09:49:25,wxid_3d7ydsmu3f0022,而且看着很舒服
2025-03-14 09:49:51,wxid_3d7ydsmu3f0022,就是侧看会偏绿 三星没这问题
2025-03-14 09:50:39,wxid_z8uo70zywfpn12,pdd复播了罚款交够了
2025-03-14 09:50:45,z351324662,我当时也打算买一加13的但是确实不喜欢等深屏
2025-03-14 09:51:19,z351324662,ACE5四边不等宽也有点难受
2025-03-14 09:51:19,Jyunere,每天早上都要洗头。
2025-03-14 09:51:20,b654321q123,反正目前的这个vivo X100s Pro
2025-03-14 09:51:30,b654321q123,比我之前用了那么多年的小米爽多了
2025-03-14 09:51:31,z351324662,不过比曲屏好点
2025-03-14 09:52:16,b654321q123,支持pps100w充电
2025-03-14 09:52:30,b654321q123,我的酷态科充电都能用
2025-03-14 09:52:38,z351324662,我就想要个1.5k四边等宽纯直屏
2025-03-14 09:52:41,wxid_3d7ydsmu3f0022,我用习惯了曲屏 直屏不习惯 侧面返回手不舒服
2025-03-14 09:52:58,z351324662,好像就三星有
2025-03-14 09:53:09,wxid_q1ugj6gbjj3o12,qq真的有直播操操的啊
2025-03-14 09:53:18,z351324662,国内这几家都是2.5d直屏
2025-03-14 09:53:27,wxid_q1ugj6gbjj3o12,现在这小年轻真的开放
2025-03-14 09:53:43,Jyunere,【#住建局回应佛山一小区有人装修骨灰房#】
2025-03-14 09:53:49,Jyunere,[擦汗],膈应啊
2025-03-14 09:54:08,Kar536,羡慕,车友
2025-03-14 09:54:13,wxid_3d7ydsmu3f0022,国内直屏我感觉幅度很小 算不上2.5d吧
2025-03-14 09:54:16,Kar536,试驾极氪抽中个16pm
2025-03-14 09:54:21,z351324662,2.5d贴膜始终小一圈
2025-03-14 09:54:27,wxid_3d7ydsmu3f0022,贴钢化膜感觉没问题
2025-03-14 09:54:33,wxid_3d7ydsmu3f0022,带个壳应该感受不出来了
"""
compressed_chat_str = compress_chat_data(chat_data_str)
print(compressed_chat_str)
print(f"{len(compressed_chat_str)}--{len(chat_data_str)}")

View File

@@ -4,6 +4,7 @@ import os
import uuid
from datetime import datetime
from message_summary.compress_chat_data import compress_chat_data
from message_summary.markdown_to_image import convert_md_str_to_image
@@ -20,14 +21,16 @@ def message_summary_dify(content):
# Dify API配置
api_key = "app-McGLzBhBjeBCSEi7n83MtuTo" # 请替换为实际的API密钥
url = "http://192.168.2.240/v1/chat-messages"
# 生成唯一的会话ID
conversation_id = str(uuid.uuid4())
content_compress = content
try:
content_compress = compress_chat_data(content)
print(f"压缩内容成功:{len(content_compress)}--{len(content)}")
except Exception as e:
print(f"压缩内容失败:{e}")
# 准备请求数据
data = {
"inputs": {},
"query": f"请根据以下群聊记录生成一份精华总结:\n\n{content}",
"query": f"请根据以下群聊记录生成一份精华总结:\n\n{content_compress}",
"response_mode": "blocking", # 使用阻塞模式,直接获取完整响应
"conversation_id": "",
"user": "message_summary_bot",