alpha / managers /execution /monitoring.py
yhzhang3's picture
first commit
f580ad3
"""
Monitoring utilities for tracking execution timing and token usage.
"""
from dataclasses import dataclass, field
__all__ = ["Timing", "TokenUsage"]
@dataclass
class TokenUsage:
"""
Contains the token usage information for a given step or run.
"""
input_tokens: int
output_tokens: int
total_tokens: int = field(init=False)
def __post_init__(self):
self.total_tokens = self.input_tokens + self.output_tokens
def dict(self):
return {
"input_tokens": self.input_tokens,
"output_tokens": self.output_tokens,
"total_tokens": self.total_tokens,
}
@dataclass
class Timing:
"""
Contains the timing information for a given step or run.
"""
start_time: float
end_time: float | None = None
@property
def duration(self):
return None if self.end_time is None else self.end_time - self.start_time
def dict(self):
return {
"start_time": self.start_time,
"end_time": self.end_time,
"duration": self.duration,
}
def __repr__(self) -> str:
return f"Timing(start_time={self.start_time}, end_time={self.end_time}, duration={self.duration})"