--- 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 """ 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. **背景槽只放档案事实**(年龄/病史/独居这类),不放任何分析性注记。