Skip to content

models

django_spire.ai.models

AiUsage

Bases: AiUsageMixin

recorded_date = models.DateField(default=now) class-attribute instance-attribute

Meta

db_table = 'django_spire_ai_usage' class-attribute instance-attribute
verbose_name = 'AI Usage' class-attribute instance-attribute
verbose_name_plural = 'AI Usage' class-attribute instance-attribute

__str__

Source code in django_spire/ai/models.py
def __str__(self):
    return f'"{self.recorded_date}" ai usage'

AiInteraction

Bases: AiUsageMixin

ai_usage = models.ForeignKey(AiUsage, on_delete=(models.CASCADE), related_name='interactions', related_query_name='interaction') class-attribute instance-attribute

user = models.ForeignKey(User, blank=True, null=True, on_delete=(models.SET_NULL), related_name='ai_interactions', related_query_name='ai_interaction') class-attribute instance-attribute

actor = models.CharField(max_length=100) class-attribute instance-attribute

user_email = models.EmailField(blank=True, null=True) class-attribute instance-attribute

user_first_name = models.CharField(max_length=100, blank=True, null=True) class-attribute instance-attribute

user_last_name = models.CharField(max_length=100, blank=True, null=True) class-attribute instance-attribute

module_name = models.TextField() class-attribute instance-attribute

callable_name = models.TextField() class-attribute instance-attribute

exception = models.TextField(blank=True, null=True) class-attribute instance-attribute

stack_trace = models.TextField(blank=True, null=True) class-attribute instance-attribute

created_datetime = models.DateTimeField(default=now) class-attribute instance-attribute

interaction = models.JSONField(blank=True, null=True) class-attribute instance-attribute

Meta

db_table = 'django_spire_ai_interaction' class-attribute instance-attribute
verbose_name = 'AI Interaction' class-attribute instance-attribute
verbose_name_plural = 'AI Interactions' class-attribute instance-attribute

__str__

Source code in django_spire/ai/models.py
def __str__(self):
    return f'"{self.actor}" interaction on "{localize(self.created_datetime)}"'

save

Source code in django_spire/ai/models.py
def save(self, *args, **kwargs):
    if self.user:
        if self.actor is None:
            self.actor = self.user.get_full_name()
        if self.user_email is None:
            self.user_email = self.user.email
        if self.user_first_name is None:
            self.user_first_name = self.user.first_name
        if self.user_last_name is None:
            self.user_last_name = self.user.last_name

    super().save(*args, **kwargs)