# coding=utf-8 """ 智能体记忆模型 存储智能体的长期记忆,支持对话过程中积累和检索 """ import uuid_utils.compat as uuid from django.db import models from common.mixins.app_model_mixin import AppModelMixin class ApplicationMemoryType(models.TextChoices): """记忆类型""" DIALOGUE = 'DIALOGUE', '对话记忆' KEYWORD = 'KEYWORD', '关键词记忆' SUMMARY = 'SUMMARY', '摘要记忆' CUSTOM = 'CUSTOM', '自定义记忆' class ApplicationMemory(AppModelMixin): """智能体记忆""" id = models.UUIDField(primary_key=True, max_length=128, default=uuid.uuid7, editable=False, verbose_name="主键id") application = models.ForeignKey( 'application.Application', on_delete=models.CASCADE, db_constraint=False, verbose_name="应用", db_index=True ) memory_type = models.CharField( max_length=20, choices=ApplicationMemoryType.choices, default=ApplicationMemoryType.DIALOGUE, verbose_name="记忆类型" ) content = models.TextField(verbose_name="记忆内容") metadata = models.JSONField(default=dict, verbose_name="元数据") is_enabled = models.BooleanField(default=True, verbose_name="是否启用") relevance_score = models.FloatField(default=0.0, verbose_name="相关度分数") class Meta: db_table = "application_memory" ordering = ['-relevance_score', '-create_time'] def __str__(self): return f"{self.application_id} - {self.memory_type}: {self.content[:50]}"