llm-api-test / shared /chat_history.py
Bc-AI's picture
Upload 2 files
9a56823 verified
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)