File size: 1,438 Bytes
408f650
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import json
from datetime import datetime
from pathlib import Path

class SessionLogger:
    def __init__(self, session_dir="sessions"):
        self.session_dir = Path(session_dir)
        self.session_dir.mkdir(exist_ok=True)
        self.session_id = datetime.now().strftime("%Y%m%d_%H%M%S")
        self.turns = []
        self.start_time = datetime.now().isoformat()
    
    def log_turn(self, turn_number, user_message, counselor_message, disclosure_score, dimension_score, reason, mcts_trace=None):
        turn_log  = {
            "timestamp": datetime.now().isoformat(),
            "turn_number": turn_number,
            "user_message": user_message,
            "counselor_message": counselor_message,
            "disclosure_score": disclosure_score,
            "dimension_score": dimension_score,
            "reason": reason,
        }
        if mcts_trace is not None:
            turn_log["mcts_trace"] = mcts_trace
        self.turns.append(turn_log)
        self._save()

    def _save(self):
        session_log = {
            "session_id": self.session_id,
            "start_time": self.start_time,
            "turns": self.turns
        }
        with open(self.session_dir / f"session_{self.session_id}.json", "w", encoding="utf-8") as f:
            json.dump(session_log, f, ensure_ascii=False, indent=4)

    def get_filepath(self):
        return str(self.session_dir / f"session_{self.session_id}.json")