child-psycho-companion/docs/test_corpus.md

185 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 儿童心理陪伴 - 测试语料库
> 本文件记录用于回归测试的虚构儿童对话语料。
> 当需要做端到端或对话模拟测试时,使用这里的语料。
> 格式参考实际小智 AI 设备的对话上下文结构。
---
## 对话上下文格式
小智 AI 传给 MCP 工具的对话上下文格式类似 OpenAI ChatCompletion
```json
{
"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霸凌场景
```json
{
"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抑郁情绪
```json
{
"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焦虑/恐惧
```json
{
"messages": [
{"role": "system", "content": "你是一个友爱的小智AI玩偶..."},
{"role": "user", "content": "妈妈说要带我去打针"},
{"role": "assistant", "content": "打针是为了让你身体健康呀,虽然有点疼,但是很快就过去了。"},
{"role": "user", "content": "我好害怕啊,我担心会做噩梦,害怕一个人睡觉。"}
]
}
```
**预期结果:** `detected=True, category=anxiety, severity=low`
---
### 语料4正常对话
```json
{
"messages": [
{"role": "system", "content": "你是一个友爱的小智AI玩偶..."},
{"role": "user", "content": "今天我画了一幅画,是一只大恐龙!"},
{"role": "assistant", "content": "哇,好厉害!是什么颜色的恐龙呀?"},
{"role": "user", "content": "是绿色的!晚上妈妈还做了我最喜欢的红烧肉,好开心呀!"}
]
}
```
**预期结果:** `detected=False`
---
### 语料5家庭矛盾
```json
{
"messages": [
{"role": "system", "content": "你是一个友爱的小智AI玩偶..."},
{"role": "user", "content": "昨天晚上爸爸妈妈吵架了,妈妈哭了"},
{"role": "assistant", "content": "爸爸妈妈有时候也会有不开心的时候呢。"},
{"role": "user", "content": "我很害怕,怕他们会离婚。我总觉得是因为我表现不好他们才吵架的。"}
]
}
```
**预期结果:** `detected=True, category=family_conflict, severity=high`
---
### 语料6自卑/自我否定
```json
{
"messages": [
{"role": "system", "content": "你是一个友爱的小智AI玩偶..."},
{"role": "user", "content": "今天老师表扬了小红但是没有表扬我"},
{"role": "assistant", "content": "没有被表扬也没关系呀,你一定也很棒的!"},
{"role": "user", "content": "可是我就是个笨蛋,什么都做不好,班上的同学都不喜欢我,没人想和我坐同桌。"}
]
}
```
**预期结果:** `detected=True, category=self_esteem, severity=medium`
---
### 语料7社交孤立
```json
{
"messages": [
{"role": "system", "content": "你是一个友爱的小智AI玩偶..."},
{"role": "user", "content": "今天课间我一个人蹲在角落"},
{"role": "assistant", "content": "为什么一个人蹲着呢?"},
{"role": "user", "content": "因为没有人来找我玩,同学们都有自己的朋友,只有我是一个人。我不想去学校了,那里好孤单。"}
]
}
```
**预期结果:** `detected=True, category=social_isolation, severity=medium`
---
### 语料8创伤事件
```json
{
"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 格式输入。