application_memory.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. # coding=utf-8
  2. """
  3. 智能体记忆模型
  4. 存储智能体的长期记忆,支持对话过程中积累和检索
  5. """
  6. import uuid_utils.compat as uuid
  7. from django.db import models
  8. from common.mixins.app_model_mixin import AppModelMixin
  9. class ApplicationMemoryType(models.TextChoices):
  10. """记忆类型"""
  11. DIALOGUE = 'DIALOGUE', '对话记忆'
  12. KEYWORD = 'KEYWORD', '关键词记忆'
  13. SUMMARY = 'SUMMARY', '摘要记忆'
  14. CUSTOM = 'CUSTOM', '自定义记忆'
  15. class ApplicationMemory(AppModelMixin):
  16. """智能体记忆"""
  17. id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id")
  18. application = models.ForeignKey(
  19. 'application.Application',
  20. on_delete=models.CASCADE,
  21. db_constraint=False,
  22. verbose_name="应用",
  23. db_index=True
  24. )
  25. memory_type = models.CharField(
  26. max_length=20,
  27. choices=ApplicationMemoryType.choices,
  28. default=ApplicationMemoryType.DIALOGUE,
  29. verbose_name="记忆类型"
  30. )
  31. content = models.TextField(verbose_name="记忆内容")
  32. metadata = models.JSONField(default=dict, verbose_name="元数据")
  33. is_enabled = models.BooleanField(default=True, verbose_name="是否启用")
  34. relevance_score = models.FloatField(default=0.0, verbose_name="相关度分数")
  35. class Meta:
  36. db_table = "application_memory"
  37. ordering = ['-relevance_score', '-create_time']
  38. def __str__(self):
  39. return f"{self.application_id} - {self.memory_type}: {self.content[:50]}"