Spaces:
Sleeping
Sleeping
| import os | |
| import json | |
| import time | |
| from datetime import datetime | |
| from typing import List, Dict, Any | |
| from .models import ChatMessage | |
| def save_chat_history(messages: List[ChatMessage], model_name: str, response: str, filename: str = "chat.md"): | |
| """ | |
| Save chat history to a markdown file with timestamp and model information | |
| """ | |
| timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") | |
| # Prepare the markdown content | |
| history_content = f""" | |
| ## Chat Session: {timestamp} | |
| **Model Used:** {model_name} | |
| --- | |
| """ | |
| # Add all messages to the markdown file | |
| for msg in messages: | |
| role_prefix = "**User:**" if msg.role.lower() == "user" else "**Assistant:**" | |
| history_content += f"\n{role_prefix} {msg.content}\n\n" | |
| # Add the final response from the assistant | |
| history_content += f"\n**Assistant Response:** {response}\n\n---\n\n" | |
| # Append to the chat history file | |
| with open(filename, "a", encoding="utf-8") as file: | |
| file.write(history_content) | |
| def save_detailed_chat_log(request_data: Dict[str, Any], response_data: str, model_name: str, processing_time: float, filename: str = "chat.md"): | |
| """ | |
| Save detailed chat log with metadata | |
| """ | |
| timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") | |
| log_content = f""" | |
| ## Chat Request Log: {timestamp} | |
| - **Model:** {model_name} | |
| - **Processing Time:** {processing_time:.2f}s | |
| - **Max Tokens:** {request_data.get('max_tokens', 512)} | |
| - **Temperature:** {request_data.get('temperature', 0.8)} | |
| ### Input Messages: | |
| """ | |
| # Add the messages from the request | |
| messages = request_data.get('messages', []) | |
| for msg in messages: | |
| role = msg.get('role', 'unknown') | |
| content = msg.get('content', '') | |
| role_display = "**User**" if role.lower() == 'user' else "**Assistant**" | |
| log_content += f"- {role_display}: {content}\n" | |
| log_content += f"\n### Model Response:\n{response_data}\n\n---\n\n" | |
| # Append to the file | |
| with open(filename, "a", encoding="utf-8") as file: | |
| file.write(log_content) | |
| def initialize_chat_file(filename: str = "chat.md"): | |
| """ | |
| Initialize the chat history file with header if it doesn't exist | |
| """ | |
| if not os.path.exists(filename): | |
| header = f"""# Chat History | |
| Last updated: {datetime.now().strftime("%Y-%m-%d %H:%M:%S")} | |
| This file contains the history of all chat conversations processed by the multi-node API system. | |
| --- | |
| """ | |
| with open(filename, "w", encoding="utf-8") as file: | |
| file.write(header) |