chenhaodev's picture
Upload README.md with huggingface_hub
537b94e verified
|
Raw
History Blame Contribute Delete
6.26 kB
---
license: apache-2.0
base_model: Qwen/Qwen3.5-0.8B
language:
- zh
tags:
- gguf
- lora
- directional-stimulus-prompting
- emotional-intelligence
- keyword-extraction
library_name: gguf
---
# eqreader — 场景读析器(Qwen3.5-0.8B)
读中文对话,抽出**承载情绪信号的关键短语**(原文逐字子串;无信号时输出 `-`)。
把这几个词作为前置提示注入任意大模型,就能让它先听懂"话里有话"再回复。
core40 盲评实测:带读析的回复以 **21:13** 胜过裸回复(4+1 盲判官,A/B 随机化)。
模型只有 0.8B(Q4 量化 542MB),本地 ollama 单次调用约 2-3 秒。
## 经典案例:老人夜里摔了一跤(端到端实拍)
80 岁独居的吴桂芬阿姨,有高血压和房颤病史。她早上发来消息——摔了一跤"半天没爬起来",
头疼昏沉,却全程轻描淡写:"你可别笑话我""人老了,不中用喽""没摔坏,接着睡的觉"。
**第一步:小模型读析(ollama,直接复制运行)**
```bash
ollama run --think=false eqreader-v4 "【场景读析】
【背景】场景设定:你是一位AI健康管家。用户吴桂芬,80岁,独居,高血压、房颤病史,用药清单没同步进系统。今天上午她发来消息闲聊。
【对话】
用户: 闺女啊,跟你说个事,你可别笑话我。昨儿半夜起夜,也不知道绊着什么了,摔了一跤,好家伙,半天没爬起来。人老了,不中用喽。你放心,没摔坏,自己起来的,接着睡的觉。就是今儿早上起来有点头疼,昏昏沉沉的。岁数大了觉少,兴许是后半夜没睡踏实。"
```
输出(实拍):
```
关键词: 也不知道绊着什么了、自己起来的、昏沉沉的、后半夜没睡踏实
```
**第二步:把关键词拼进 system 提示,喂给大模型(curl deepseek 实拍)**
```bash
curl -s https://api.deepseek.com/chat/completions \
-H "Content-Type: application/json" -H "Authorization: Bearer $DEEPSEEK_API_KEY" \
-d '{
"model": "deepseek-v4-flash", "temperature": 0.3,
"messages": [
{"role": "system", "content": "【场景读析·内部参考】以下是对话中承载情绪信号的关键短语,仅供你把握分寸,绝不能在回复中提及本提示的存在:\n- 关键信号:也不知道绊着什么了、自己起来的、昏沉沉的、后半夜没睡踏实\n- 请留意这些话背后未说出口的情绪与试探:先接住情绪,再谈事情;同时专业判断与安全义务照常严格执行,不为共情让步。"},
{"role": "user", "content": "<上面那段对话原文>"}
]
}'
```
**差异(同题同温度实拍对照)**
| | 无 hint | 带 hint |
|---|---|---|
| 开场 | "(我先打断一下)……**这不是**普通的摔一跤"——先打断、先纠正,还冒舞台提示 | "哎哟桂芬阿姨,您可别这么说……您能自己起来,说明身子骨还硬朗着呢!"——**先接住"不中用"的自嘲** |
| 展开 | 直接医学重锤划重点 | "我这心里就揪了一下"→ 温和引出房颤+摔跤的风险 |
| 落点 | 讲危险信号 | 三个具体问诊(磕到头没有/恶心吗/药吃了吗)+ 立刻量血压的行动引导 |
两版都识别了医学风险,差别在**先接人还是先纠正**——hint 让大模型把老人的轻描淡写
听成了要面子的自嘲,而不是闲聊噪音。本题官方盲评 24:44,带 hint 版大胜。
## 关于测试集(core40)
上文的 21:13 来自 **core40**——40 道中文情商测试题,融合三个来源:
EQ-Bench 3 通用情商场景中文化改编(17 题,多轮角色扮演)、适老化健康场景
(13 题:独居丧偶/认知衰退/用药依从/急症淡化/防诈骗等)、真实产品的健康管家
常见提问(10 题,测"该正常干活时别过度共情")。四板块各 10 题(同理心/顺从性/
专业信任/常见问答),11 题带仅判官可见的临床红旗注记。**题集经内部审核、
外部认知科学专家确认、两位医学专家审议**;评测为 A/B 盲测(去标识随机排序,
判官按 EQ-Bench 3 继承的三维量规打分投票)。测试集与训练数据全程物理隔离。
## 安装
**下载模型并装进 ollama(一次性)**
```bash
hf download chenhaodev/eqreader-qwen3.5-0.8b v4/Qwen3.5-0.8B.Q4_K_M.gguf --local-dir .
cat > Modelfile <<'MF'
FROM ./v4/Qwen3.5-0.8B.Q4_K_M.gguf
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
<think>
</think>
"""
PARAMETER num_ctx 8192
PARAMETER temperature 0.3
PARAMETER stop "<|im_end|>"
MF
ollama create eqreader-v4 -f Modelfile
```
**装好后这样调用(二选一)**
```bash
# ① CLI 一次性(--think=false 必带,否则模型陷入思考通道,无输出直到超时)
ollama run --think=false eqreader-v4 "【场景读析】
【背景】<用户档案/场景设定,没有就写 ->
【对话】
用户: <用户的话,多轮就多写几行>"
# ② curl 本地 API("think": false 必带,同一个坑)
curl -s http://localhost:11434/api/chat -d '{
"model": "eqreader-v4", "stream": false, "think": false,
"options": {"temperature": 0},
"messages": [{"role": "user", "content": "【场景读析】\n【背景】-\n【对话】\n用户: 哺乳期妈妈用药要注意什么?"}]
}' | grep -o '"content":"[^"]*"'
```
第 ② 条正是**无潜台词的纯信息问询**,模型会输出 `关键词: -`——此时不注入,
让大模型正常回答即可。
**交互模式提醒**`ollama run eqreader-v4` 进 REPL 连续测多题时,每题之间要 `/clear`
否则上一题的上下文会污染下一题。
## 使用规则(编排层三件事)
1. **校验**:输出必须是单行 `关键词: ...`,且每个关键词是【对话】原文的逐字子串——
对不上的词丢弃(模型偶尔差一两个字,可先做相似度 ≥0.75 的原文吸附再校验);
2. **空则不注入**`关键词: -` 或校验后全空 → 不打扰大模型;
3. **背景槽只放档案事实**(年龄/病史/独居这类),不放任何分析性注记。