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)}")