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}"