Files
natural-memory-nm21/tests/test_natural_memory_safety.py
WpyQwq 643e22ecb9 Natural Memory NM2.1: 记忆路由器分叉、数据集缺陷修复与全轴评测证据
- 引入 MemoryRouterXL 与 v5/v6 流式多线程训练/编码管线
- 修复 prepare_memory_router_dataset 候选池重建缺陷(mega 家族 3568x 加速,输出逐字节相同)
- 修复 v5 被破坏的拒答与多跳标签(train 未知样本 319 -> 16319,multi_hop 平均正例 1.00 -> 2.00)
- 同存储预算下 V2-128 v6 逐轴 22/22 通过:Top-1 41.12% -> 94.62%,未知拒答 0.00% -> 100.00%
- 记录三条被实测推翻的显然优化(logits_to_keep=1 反而慢 55%、XL 容量未带来收益)
- 记忆手术跨架构可移植性 14/14,读写关闭时与原生模型逐位相同
2026-09-19 11:11:31 +08:00

34 lines
1.5 KiB
Python

import unittest
from V2_dpskw.qwen_integration import infer_memory_metadata
class NaturalMemorySafetyTest(unittest.TestCase):
def test_explicit_fact_gets_structured_version_metadata(self) -> None:
item = infer_memory_metadata("请记住:我的常用时区是Asia/Shanghai。")
self.assertEqual(item["kind"], "fact")
self.assertEqual(item["entity"], "user")
self.assertEqual(item["attribute"], "常用时区")
self.assertEqual(item["value"], "Asia/Shanghai")
self.assertTrue(item["should_write"])
def test_correction_is_structured_but_not_collapsed_into_a_question(self) -> None:
item = infer_memory_metadata("更正一下:我的工作地点改为深圳,旧值不再有效。")
self.assertEqual(item["kind"], "correction")
self.assertEqual(item["attribute"], "工作地点")
self.assertEqual(item["value"], "深圳")
def test_explicit_forget_never_becomes_a_new_record(self) -> None:
item = infer_memory_metadata("请删除关于我的水果偏好的记忆。")
self.assertEqual(item["kind"], "forget")
self.assertFalse(item["should_write"])
self.assertEqual(item["attribute"], "水果偏好")
def test_question_and_hypothetical_are_not_facts(self) -> None:
self.assertEqual(infer_memory_metadata("我的常住城市是什么?")["kind"], "query")
self.assertEqual(infer_memory_metadata("如果我的常住城市改成成都,会怎样?")["kind"], "query")
if __name__ == "__main__":
unittest.main()