File size: 1,324 Bytes
b4f2238 | 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 39 40 | """
LLM 调用记录模型
记录每次 LLM API 调用的详细信息,用于监控使用量和成本分析.
"""
from typing import ClassVar
from django.db import models
from django.utils.translation import gettext_lazy as _
class LLMCallRecord(models.Model):
"""
LLM 调用记录(用于成本追踪)
记录每次 LLM API 调用的详细信息,用于监控使用量和成本分析.
Requirements: 6.1, 6.2
"""
id: int
model = models.CharField(max_length=100, verbose_name=_("模型"))
prompt_tokens = models.IntegerField(verbose_name=_("输入 Token"))
completion_tokens = models.IntegerField(verbose_name=_("输出 Token"))
total_tokens = models.IntegerField(verbose_name=_("总 Token"))
duration_ms = models.FloatField(verbose_name=_("耗时(ms)"))
created_at = models.DateTimeField(auto_now_add=True, verbose_name=_("调用时间"))
class Meta:
verbose_name = _("LLM 调用记录")
verbose_name_plural = _("LLM 调用记录")
indexes: ClassVar = [
models.Index(fields=["created_at"], name="core_llmcal_created_830747_idx"),
models.Index(fields=["model"], name="core_llmcal_model_df0279_idx"),
]
def __str__(self) -> str:
return f"{self.model} - {self.total_tokens} tokens - {self.created_at}"
|