记录一次 token 使用(累加到每日总计,不实时写入文件)
(
task_type: str,
model: str,
input_tokens: int,
output_tokens: int,
user_id: Optional[str] = None,
date: Optional[str] = None,
extra: Optional[Dict] = None
)
| 102 | |
| 103 | |
| 104 | def log_token_usage( |
| 105 | task_type: str, |
| 106 | model: str, |
| 107 | input_tokens: int, |
| 108 | output_tokens: int, |
| 109 | user_id: Optional[str] = None, |
| 110 | date: Optional[str] = None, |
| 111 | extra: Optional[Dict] = None |
| 112 | ) -> None: |
| 113 | """记录一次 token 使用(累加到每日总计,不实时写入文件)""" |
| 114 | record_date = date or datetime.now().strftime("%Y-%m-%d") |
| 115 | |
| 116 | if record_date not in _daily_token_totals: |
| 117 | _daily_token_totals[record_date] = { |
| 118 | "date": record_date, |
| 119 | "embedding_input": 0, |
| 120 | "embedding_output": 0, |
| 121 | "llm_input": 0, |
| 122 | "llm_output": 0, |
| 123 | "call_count": 0, |
| 124 | } |
| 125 | |
| 126 | total = _daily_token_totals[record_date] |
| 127 | total["call_count"] += 1 |
| 128 | |
| 129 | if "embedding" in task_type.lower(): |
| 130 | total["embedding_input"] += input_tokens |
| 131 | total["embedding_output"] += output_tokens |
| 132 | else: |
| 133 | total["llm_input"] += input_tokens |
| 134 | total["llm_output"] += output_tokens |
| 135 | |
| 136 | |
| 137 | def flush_token_logs() -> None: |
no test coverage detected