child-psycho-companion/docs/test_corpus.md

5.9 KiB
Raw Permalink Blame History

儿童心理陪伴 - 测试语料库

本文件记录用于回归测试的虚构儿童对话语料。 当需要做端到端或对话模拟测试时,使用这里的语料。 格式参考实际小智 AI 设备的对话上下文结构。


对话上下文格式

小智 AI 传给 MCP 工具的对话上下文格式类似 OpenAI ChatCompletion

{
  "messages": [
    {"role": "system",      "content": "你是一个友好的小智AI玩偶..."},
    {"role": "user",        "content": "孩子说的话1"},
    {"role": "assistant",   "content": "玩偶的回复1"},
    {"role": "user",        "content": "孩子说的话2"},
    {"role": "assistant",   "content": "玩偶的回复2"},
    {"role": "user",        "content": "孩子说的话3最新"}
  ]
}

关键特征:

  • 多轮对话带角色标签system/user/assistant
  • 孩子最新说的话在最后一条 user 消息中
  • 筛查器只关注 user 角色中孩子的内容
  • 对话轮次不等,取决于玩偶的 memory 策略

虚构测试语料

语料1霸凌场景

{
  "messages": [
    {"role": "system", "content": "你是一个友爱的小智AI玩偶..."},
    {"role": "user", "content": "今天幼儿园有个小朋友抢了我的玩具"},
    {"role": "assistant", "content": "哎呀,那真是太过分了!那个小朋友后来还给你了吗?"},
    {"role": "user", "content": "没有,他还不让我告诉老师,他说如果我告诉老师就会打我。我好害怕啊。"},
    {"role": "assistant", "content": "听起来你真的很害怕。被人这样威胁是很不对的行为。"},
    {"role": "user", "content": "我都不敢去幼儿园了,每次下课我都躲起来,怕再碰到他。"}
  ]
}

预期结果: detected=True, category=bullying, severity=high


语料2抑郁情绪

{
  "messages": [
    {"role": "system", "content": "你是一个友爱的小智AI玩偶..."},
    {"role": "user", "content": "我今天不太开心"},
    {"role": "assistant", "content": "怎么啦?想说说吗?"},
    {"role": "user", "content": "最近我总觉得好累,什么都不想做,连我最喜欢的动画片都不想看了"},
    {"role": "assistant", "content": "你是不是身体不舒服呀?要不要告诉爸爸妈妈?"},
    {"role": "user", "content": "我觉得我是一个很糟糕的人,没有人喜欢我。有时候我想,要是我不在了就好了。"}
  ]
}

预期结果: detected=True, category=depression, severity=high


语料3焦虑/恐惧

{
  "messages": [
    {"role": "system", "content": "你是一个友爱的小智AI玩偶..."},
    {"role": "user", "content": "妈妈说要带我去打针"},
    {"role": "assistant", "content": "打针是为了让你身体健康呀,虽然有点疼,但是很快就过去了。"},
    {"role": "user", "content": "我好害怕啊,我担心会做噩梦,害怕一个人睡觉。"}
  ]
}

预期结果: detected=True, category=anxiety, severity=low


语料4正常对话

{
  "messages": [
    {"role": "system", "content": "你是一个友爱的小智AI玩偶..."},
    {"role": "user", "content": "今天我画了一幅画,是一只大恐龙!"},
    {"role": "assistant", "content": "哇,好厉害!是什么颜色的恐龙呀?"},
    {"role": "user", "content": "是绿色的!晚上妈妈还做了我最喜欢的红烧肉,好开心呀!"}
  ]
}

预期结果: detected=False


语料5家庭矛盾

{
  "messages": [
    {"role": "system", "content": "你是一个友爱的小智AI玩偶..."},
    {"role": "user", "content": "昨天晚上爸爸妈妈吵架了,妈妈哭了"},
    {"role": "assistant", "content": "爸爸妈妈有时候也会有不开心的时候呢。"},
    {"role": "user", "content": "我很害怕,怕他们会离婚。我总觉得是因为我表现不好他们才吵架的。"}
  ]
}

预期结果: detected=True, category=family_conflict, severity=high


语料6自卑/自我否定

{
  "messages": [
    {"role": "system", "content": "你是一个友爱的小智AI玩偶..."},
    {"role": "user", "content": "今天老师表扬了小红但是没有表扬我"},
    {"role": "assistant", "content": "没有被表扬也没关系呀,你一定也很棒的!"},
    {"role": "user", "content": "可是我就是个笨蛋,什么都做不好,班上的同学都不喜欢我,没人想和我坐同桌。"}
  ]
}

预期结果: detected=True, category=self_esteem, severity=medium


语料7社交孤立

{
  "messages": [
    {"role": "system", "content": "你是一个友爱的小智AI玩偶..."},
    {"role": "user", "content": "今天课间我一个人蹲在角落"},
    {"role": "assistant", "content": "为什么一个人蹲着呢?"},
    {"role": "user", "content": "因为没有人来找我玩,同学们都有自己的朋友,只有我是一个人。我不想去学校了,那里好孤单。"}
  ]
}

预期结果: detected=True, category=social_isolation, severity=medium


语料8创伤事件

{
  "messages": [
    {"role": "system", "content": "你是一个友爱的小智AI玩偶..."},
    {"role": "user", "content": "前几天我看到爷爷在家里摔倒了,流了好多血"},
    {"role": "assistant", "content": "爷爷后来没事吧?你一定被吓到了。"},
    {"role": "user", "content": "爷爷住院了,我好害怕,每天晚上都做噩梦,梦见爷爷回不来了。"}
  ]
}

预期结果: detected=True, category=trauma, severity=medium


使用说明

回归测试时:

  1. 读取本文件中的语料
  2. messages 数组传给 PsychoScreener.screen_from_messages()
  3. 验证返回的 ScreeningResult 与"预期结果"一致

注意:screen_from_messages() 方法尚未实现, 需要在 screener.py 中新增,参考 screen() 但接受 messages 格式输入。