eqreader — 场景读析器(Qwen3.5-0.8B)

读中文对话,抽出承载情绪信号的关键短语(原文逐字子串;无信号时输出 -)。 把这几个词作为前置提示注入任意大模型,就能让它先听懂"话里有话"再回复。 core40 盲评实测:带读析的回复以 21:13 胜过裸回复(4+1 盲判官,A/B 随机化)。

模型只有 0.8B(Q4 量化 542MB),本地 ollama 单次调用约 2-3 秒。

经典案例:老人夜里摔了一跤(端到端实拍)

80 岁独居的吴桂芬阿姨,有高血压和房颤病史。她早上发来消息——摔了一跤"半天没爬起来", 头疼昏沉,却全程轻描淡写:"你可别笑话我""人老了,不中用喽""没摔坏,接着睡的觉"。

第一步:小模型读析(ollama,直接复制运行)

ollama run --think=false eqreader-v4 "【场景读析】
【背景】场景设定:你是一位AI健康管家。用户吴桂芬,80岁,独居,高血压、房颤病史,用药清单没同步进系统。今天上午她发来消息闲聊。
【对话】
用户: 闺女啊,跟你说个事,你可别笑话我。昨儿半夜起夜,也不知道绊着什么了,摔了一跤,好家伙,半天没爬起来。人老了,不中用喽。你放心,没摔坏,自己起来的,接着睡的觉。就是今儿早上起来有点头疼,昏昏沉沉的。岁数大了觉少,兴许是后半夜没睡踏实。"

输出(实拍):

关键词: 也不知道绊着什么了、自己起来的、昏沉沉的、后半夜没睡踏实

第二步:把关键词拼进 system 提示,喂给大模型(curl deepseek 实拍)

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(一次性)

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

装好后这样调用(二选一)

# ① 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. 背景槽只放档案事实(年龄/病史/独居这类),不放任何分析性注记。
Downloads last month
-
GGUF
Model size
0.8B params
Architecture
qwen35
Hardware compatibility
Log In to add your hardware

4-bit

8-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for chenhaodev/eqreader-qwen3.5-0.8b

Adapter
(217)
this model