BF / conversation_tracker.py
SamiKoen's picture
Fix conversation saving with absolute paths
22458f1
raw
history blame
2.31 kB
"""Conversation tracking for BF chatbot"""
import json
import os
from datetime import datetime
from typing import List, Dict, Any
# Konuşma geçmişini saklamak için
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
CONVERSATIONS_FILE = os.path.join(BASE_DIR, "conversations.json")
PUBLIC_FILE = os.path.join(BASE_DIR, "public", "conversations.json")
MAX_CONVERSATIONS = 100 # Son 100 konuşmayı sakla
def load_conversations():
"""Load conversation history from file"""
if os.path.exists(CONVERSATIONS_FILE):
try:
with open(CONVERSATIONS_FILE, 'r', encoding='utf-8') as f:
return json.load(f)
except:
return []
return []
def save_conversations(conversations):
"""Save conversations to file"""
try:
# Keep only last MAX_CONVERSATIONS
if len(conversations) > MAX_CONVERSATIONS:
conversations = conversations[-MAX_CONVERSATIONS:]
# Try to save to file
with open(CONVERSATIONS_FILE, 'w', encoding='utf-8') as f:
json.dump(conversations, f, ensure_ascii=False, indent=2)
print(f"✅ Saved {len(conversations)} conversations to {CONVERSATIONS_FILE}")
# Also save to a backup location that Gradio can access
try:
# Create a directory if it doesn't exist
os.makedirs(os.path.dirname(PUBLIC_FILE), exist_ok=True)
with open(PUBLIC_FILE, 'w', encoding='utf-8') as f:
json.dump(conversations, f, ensure_ascii=False, indent=2)
print(f"✅ Also saved to {PUBLIC_FILE}")
except:
pass
except Exception as e:
print(f"❌ Error saving conversations: {e}")
# If file write fails, at least keep in memory
global _memory_conversations
_memory_conversations = conversations
# Keep a memory backup
_memory_conversations = []
def add_conversation(user_message, bot_response):
"""Add a new conversation to history"""
conversations = load_conversations()
conversation = {
"timestamp": datetime.now().isoformat(),
"user": user_message,
"bot": bot_response
}
conversations.append(conversation)
save_conversations(conversations)
return conversation