File size: 1,028 Bytes
be0f59e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from typing import Any

class UsageTracker:
    """
    Sổ cái ghi nhận cấu trúc Pipeline RAG.
    Được sử dụng để chuyển số liệu token usage và độ trễ của từng model lên Langfuse.
    """
    def __init__(self):
        self._steps: list[dict[str, Any]] = []
        
    def record(self, step_name: str, model: str, input_tokens: int, output_tokens: int, 
               total_tokens: int, start_time: str, end_time: str, metadata: dict | None = None):
        self._steps.append({
            "step_name": step_name,
            "model": model,
            "input_tokens": input_tokens,
            "output_tokens": output_tokens,
            "total_tokens": total_tokens,
            "start_time": start_time,
            "end_time": end_time,
            "metadata": metadata or {}
        })
        
    def get_steps(self) -> list[dict[str, Any]]:
        return self._steps
        
    def total_tokens(self) -> int:
        return sum(step["total_tokens"] for step in self._steps)