diff --git a/api/app/core/memory/storage_services/reflection_engine/example/example.json b/api/app/core/memory/storage_services/reflection_engine/example/example.json index 18a2b185..09429829 100644 --- a/api/app/core/memory/storage_services/reflection_engine/example/example.json +++ b/api/app/core/memory/storage_services/reflection_engine/example/example.json @@ -2,52 +2,39 @@ "memory_verify": { "source_data": [ { - "statement_name": "用户是2023年春天去北京工作的。", - "statement_id": "62beac695b1346f4871740a45db88782" + "statement_name": "我是 2023 年春天去北京工作的,后来基本一直都在北京上班,也没怎么换过城市。不过后来公司调整,2024 年上半年我被调到上海待了差不多半年,那段时间每天都是在上海办公室打卡。当时入职资料用的还是我之前的身份信息,身份证号是 11010119950308123X,银行卡是 6222023847595898,这些一直没变。对了,其实我 从 2023 年开始就一直在北京生活,从来没有长期离开过北京,上海那段更多算是远程配合。" }, { - "statement_name": "用户后来基本一直都在北京上班。", - "statement_id": "4cba5ac08b674d7fb1e2ae634d2b8f0b" + "statement_name": "用户后来基本一直都在北京上班。" }, { - "statement_name": "用户从2023年开始就一直在北京生活。", - "statement_id": "e612a44da4db483993c350df7c97a1a1" + "statement_name": "用户从2023年开始就一直在北京生活。" }, { - "statement_name": "用户从来没有长期离开过北京。", - "statement_id": "b3c787a2e33c49f7981accabbbb4538a" + "statement_name": "用户从来没有长期离开过北京。" }, { - "statement_name": "由于公司调整,用户在2024年上半年被调到上海待了差不多半年。", - "statement_id": "64cde4230cb24a4da726e7db9e7aa616" + "statement_name": "由于公司调整,用户在2024年上半年被调到上海待了差不多半年。" }, { - "statement_name": "用户在被调到上海期间每天都是在上海办公室打卡。", - "statement_id": "8b1b12e23b844b8088dfeb67da6ad669" + "statement_name": "用户在被调到上海期间每天都是在上海办公室打卡。" }, { - "statement_name": "用户在入职时使用的身份信息是之前的,身份证号为11010119950308123X。", - "statement_id": "030afd362e9b4110b139e68e5d3e7143" + "statement_name": "用户在入职时使用的身份信息是之前的,身份证号为11010119950308123X。" }, { - "statement_name": "用户的银行卡号是6222023847595898。", - "statement_id": "6c7567cd1f3c478bb42d1b65383e6f2f" + "statement_name": "用户的银行卡号是6222023847595898。" }, { - "statement_name": "用户的身份信息和银行卡信息一直没变。", - "statement_id": "b3ca618e1e204b83bebd70e75cf2073f" + "statement_name": "用户的身份信息和银行卡信息一直没变。" }, { - "statement_name": "用户认为在上海的那段时间更多算是远程配合。", - "statement_id": "150af89d2c154e6eb41ff1a91e37f962" + "statement_name": "用户认为在上海的那段时间更多算是远程配合。" } ], "databasets": [ { "entity1_name": "Person", - "description": "表示人类个体的通用类型", - "statement_id": "62beac695b1346f4871740a45db88782", - "entity2_name": "用户", "entity2": { "description": "叙述者,讲述个人工作与生活经历的个体", "name": "用户" @@ -55,9 +42,6 @@ }, { "entity1_name": "用户", - "description": "叙述者,讲述个人工作与生活经历的个体", - "statement_id": "62beac695b1346f4871740a45db88782", - "entity2_name": "身份信息", "entity2": { "description": "用于个人身份识别的数据", "name": "身份信息" @@ -65,9 +49,6 @@ }, { "entity1_name": "用户", - "description": "叙述者,讲述个人工作与生活经历的个体", - "statement_id": "62beac695b1346f4871740a45db88782", - "entity2_name": "6222023847595898", "entity2": { "description": "用户的银行卡号码", "name": "6222023847595898" @@ -76,33 +57,24 @@ { "entity1_name": "用户", "description": "叙述者,讲述个人工作与生活经历的个体", - "statement_id": "62beac695b1346f4871740a45db88782", - "entity2_name": "上海办公室", "entity2": { "entity_idx": 1, "aliases": ["上海办"], - "description": "位于上海的工作办公场所", "name": "上海办公室" } }, { "entity1_name": "用户", "description": "叙述者,讲述个人工作与生活经历的个体", - "statement_id": "62beac695b1346f4871740a45db88782", - "entity2_name": "北京", "entity2": { "aliases": ["京", "京城", "北平"], - "description": "中国的首都城市,用户主要工作和生活所在地", "name": "北京" } }, { "entity1_name": "11010119950308123X", "description": "具体的身份证号码值", - "statement_id": "030afd362e9b4110b139e68e5d3e7143", - "entity2_name": "身份证号", "entity2": { - "description": "中华人民共和国公民的身份号码", "name": "身份证号" } } diff --git a/api/app/core/memory/storage_services/reflection_engine/self_reflexion.py b/api/app/core/memory/storage_services/reflection_engine/self_reflexion.py index 97f51fb9..e9fb8855 100644 --- a/api/app/core/memory/storage_services/reflection_engine/self_reflexion.py +++ b/api/app/core/memory/storage_services/reflection_engine/self_reflexion.py @@ -387,7 +387,7 @@ class ReflectionEngine: result_data['memory_verifies'] = memory_verifies result_data['quality_assessments'] = quality_assessments conflicts_found='' - + REMOVE_KEYS = {"created_at", "expired_at","relationship","predicate","statement_id","id","statement_id","relationship_statement_id"} # Clearn conflict_data,And memory_verify和quality_assessment cleaned_conflict_data = [] for item in conflict_data: @@ -396,7 +396,23 @@ class ReflectionEngine: 'conflict': item['conflict'] } cleaned_conflict_data.append(cleaned_item) - + cleaned_conflict_data_=[] + for item in conflict_data: + cleaned_data = [] + for row in item.get("data", []): + # 删除 created_at / expired_at + cleaned_row = { + k: v + for k, v in row.items() + if k not in REMOVE_KEYS + } + cleaned_data.append(cleaned_row) + cleaned_item = { + "data": cleaned_data, + "conflict": item.get("conflict"), + } + cleaned_conflict_data_.append(cleaned_item) + print(cleaned_conflict_data_) # 3. 解决冲突 solved_data = await self._resolve_conflicts(cleaned_conflict_data, source_data) if not solved_data: diff --git a/api/app/core/memory/utils/prompt/prompts/reflexion.jinja2 b/api/app/core/memory/utils/prompt/prompts/reflexion.jinja2 index 99476c82..91b067ee 100644 --- a/api/app/core/memory/utils/prompt/prompts/reflexion.jinja2 +++ b/api/app/core/memory/utils/prompt/prompts/reflexion.jinja2 @@ -111,7 +111,8 @@ - 隐私保护优先: 所有输出记录必须完成隐私脱敏 - 脱敏变更记录: 隐私脱敏变更也必须在change字段中记录{% endif %} - 不可修改数据: 数据被判定为正确时不可修改,无数据可输出时为空 -- 输出的结果reflexion字段中的reason字段和solution不允许含有(expired_at设为2024-01-01T00:00:00Z、memory_verify=true)等原数据字段以及涉及需要修改的字段以及内容 +- 输出的结果reflexion字段中的reason字段和solution不允许含有(expired_at设为2024-01-01T00:00:00Z、memory_verify=true、memory_verify=false)等原数据字段以及涉及需要修改的字段以及内容, + ,如果是FACT,只记录事实冲突相关的数据;如果是TIME,只记录时间冲突相关的数据;如果是HYBRID,则记录所有冲突相关的数据 **变更记录格式**: ```json @@ -158,7 +159,8 @@ "conflict": true }, "reflexion": { - "reason": "该冲突类型的原因分析", + "reason": "该冲突类型的原因分析,如果是FACT就是存在事实冲突,分析该冲突原因,如果是TIME就是存在时间冲突,分析该冲突原因,如果是HYBRID,可以输出存在时间与事实的混合冲突再添加上原因分析, + 不可以随意分配冲突类型以及原因", "solution": "该冲突类型的解决方案" }, "resolved": {