95 lines
3.1 KiB
Python
95 lines
3.1 KiB
Python
import requests
|
|
import json
|
|
|
|
from message_summary.compress_chat_data import compress_chat_data
|
|
from message_summary.markdown_to_image import convert_md_str_to_image
|
|
|
|
|
|
def message_summary_dify(content, sender: str = None):
|
|
"""
|
|
使用Dify API生成群聊消息总结
|
|
|
|
Args:
|
|
content: 需要总结的群聊消息内容
|
|
|
|
Returns:
|
|
生成的总结内容和图片路径
|
|
"""
|
|
# Dify API配置
|
|
api_key = "app-McGLzBhBjeBCSEi7n83MtuTo" # 请替换为实际的API密钥
|
|
url = "http://192.168.2.240/v1/chat-messages"
|
|
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"请根据以下{sender}群聊记录生成一份精华总结:\n\n{content_compress}",
|
|
"response_mode": "blocking", # 使用阻塞模式,直接获取完整响应
|
|
"conversation_id": "",
|
|
"user": sender if sender is not None else "message_summary_bot",
|
|
"files": [] # 不包含文件
|
|
}
|
|
|
|
# 设置请求头
|
|
headers = {
|
|
"Authorization": f"Bearer {api_key}",
|
|
"Content-Type": "application/json"
|
|
}
|
|
|
|
try:
|
|
# 发送POST请求
|
|
response = requests.post(url, headers=headers, json=data)
|
|
response.raise_for_status() # 检查请求是否成功
|
|
|
|
# 解析响应
|
|
response_data = response.json()
|
|
print(f"Dify API响应状态码: {response.status_code}")
|
|
print(f"响应数据: {json.dumps(response_data, ensure_ascii=False, indent=2)}")
|
|
|
|
# 提取回答内容
|
|
answer = response_data.get("answer", "")
|
|
spath = ""
|
|
# 提取token使用情况
|
|
metadata = response_data.get("metadata", {})
|
|
usage = metadata.get("usage", {})
|
|
|
|
if usage:
|
|
prompt_tokens = usage.get("prompt_tokens", 0)
|
|
completion_tokens = usage.get("completion_tokens", 0)
|
|
total_tokens = usage.get("total_tokens", 0)
|
|
|
|
# 添加token信息
|
|
tokens_info = f"\n\n【tokens】输入: {prompt_tokens} 生成: {completion_tokens} 总: {total_tokens}"
|
|
answer += tokens_info
|
|
try:
|
|
spath = convert_md_str_to_image(answer, "output.png")
|
|
except Exception as e:
|
|
print(f"生成image失败:{e}")
|
|
# 返回文本内容和图片路径
|
|
return answer, spath
|
|
|
|
except requests.exceptions.RequestException as e:
|
|
print(f"请求Dify API时出错: {e}")
|
|
return f"生成总结时出错: {str(e)}", None
|
|
|
|
except json.JSONDecodeError as e:
|
|
print(f"解析Dify API响应时出错: {e}")
|
|
return "解析API响应时出错", None
|
|
|
|
except Exception as e:
|
|
print(f"处理总结时出现未知错误: {e}")
|
|
return f"生成总结时出现未知错误: {str(e)}", None
|
|
|
|
|
|
if __name__ == '__main__':
|
|
content = """
|
|
2025-03-14 14:30:15,Jyunere,别这样啊。
|
|
"""
|
|
msg = compress_chat_data(content, 5)
|
|
print(f"{msg}\n {len(msg)},{len(content)}")
|