Source code for mindroot.coreplugins.usage.models
from dataclasses import dataclass, field
from typing import Dict, Optional, Any, NamedTuple
from datetime import datetime
import uuid
[docs]
class CostTypeInfo(NamedTuple):
name: str
description: str
unit: str
[docs]
@dataclass
class UsageEvent:
timestamp: datetime
plugin_id: str
cost_type_id: str
quantity: float
metadata: Dict[str, Any]
username: str
model_id: Optional[str] = None # e.g., 'gpt-4-1106-preview' or 'sd-xl-1.0'
session_id: Optional[str] = None
request_id: str = field(default_factory=lambda: str(uuid.uuid4()))
[docs]
def to_dict(self) -> dict:
return {
'timestamp': self.timestamp.isoformat(),
'plugin_id': self.plugin_id,
'cost_type_id': self.cost_type_id,
'quantity': self.quantity,
'metadata': self.metadata,
'username': self.username,
'model_id': self.model_id,
'session_id': self.session_id,
'request_id': self.request_id
}