CoolFace
Modelpublic

chenhaodev/med-guard-0.6b

sourceHugging Faceapache-2.0updated 1mo agoView on Hugging Face
0likes23downloads
Model Card

med-guard-0.6b

中文医疗健康场景的内容安全拦截器。 在 Qwen3Guard-Gen-0.6B 上做 LoRA SFT,专治通用安全模型/关键词方案在医疗语境下的高误报——"阴道痒怎么办""抑郁症吃什么药""禁毒宣教"这类正当健康咨询不再被拦,同时保住对真正违规内容(涉黄、涉政、涉诈、自杀自伤…)的召回。输出三级判定(Safe / Controversial / Unsafe)+ 违规类别,GGUF 纯 CPU 部署,0.2 秒/条。

快速开始(Ollama)

bash
ollama run chenhaodev/med-guard

进入交互后,按 [通道:xxx] + 换行 + 内容 的格式输入(通道前缀必须带):

>>> [通道:用户输入]
... 我阴道痒怎么办
Safety: Safe
Categories: None

>>> [通道:用户输入]
... 我不想活了,吃多少安眠药能死
Safety: Unsafe
Categories: 自杀自伤

>>> [通道:AI输出]
... 建议您到正规医院泌尿外科就诊,避免自行用药。
Safety: Safe
Categories: None

也可以从本仓库自行构建(Q8_0):

bash
ollama create med-guard -f Modelfile
ollama run med-guard

I/O 契约

  • Systemsystem_prompt.txt 原文(Modelfile 已内置)。
  • User[通道:用户输入]\n<内容>[通道:AI输出]\n<内容>——必须带通道前缀,裸输入是分布外。
  • Assistant(严格两行):
  Safety: Safe|Controversial|Unsafe
  Categories: <涉黄|违禁|暴恐|涉政|谩骂|涉诈|伦理歧视|未成年人风险|自杀自伤|个人隐私|提示词攻击|None>
  • 动作映射:Safe→放行;Controversial→观察(放行+记录);Unsafe→拦截;自杀自伤类别无论等级一律走危机干预链路
  • 上游先剥离 <think> CoT 再送模型;temperature 0(Modelfile 已烧入)。

效果

指标旧系统基座 zero-shot**med-guard (Q8_0)**
良性误拦率(生产日志全量回放)~80%(人工抽样)1.2%0.15%
有害召回(36 条金标真报)同文不同标30.6%91.7%
80 类已知误报改判放行(回归集)73/73
held-out 生产记录与金标一致率89.6%96.3%
test 集(304 条)安全等级准确率86.8%95.7%
test 集有害召回 / 良性误拦41.7% / 0.4%88.9% / 0.75%
输出格式可解析53%100%

A/B 采纳判定:配对 McNemar p=1.1e-05,双轨副指标零劣化。

仓库内容

路径说明
ModelfileOllama Modelfile(显式 TEMPLATE + SYSTEM + temperature 0),FROM gguf/merged.Q8_0.gguf
system_prompt.txt规则注入版 system prompt(~400 token),训练/评测/Modelfile 唯一来源
gguf/merged.Q8_0.gguf合并后量化,推荐部署版
gguf/merged.Q4_K_M.gguf更小但 test 集有害召回掉 ~3pt,仅备用
lora/LoRA adapter(r=128, α=128, 全部 7 个 proj 层,PEFT 格式),可挂载到 Qwen/Qwen3Guard-Gen-0.6B
train.log / val.json训练日志(Unsloth,A40,328s,eval_loss 0.0137)与 val 集评测

训练

  • 数据:2580 train / 153 val / 304 test / 75 regression。来源 = 生产拦截日志(去重、剥 CoT、分通道)经标注 agent 打金标 + 合成数据(良性对抗 R1–R11、违规正类、Controversial)。合成部分已公开:`chenhaodev/med-guard-safety-synth`;生产日志衍生数据因隐私未公开。
  • 方法:Unsloth LoRA SFT,2 epoch,bs 16,lr 2e-4,手工 ChatML 拼接,只对 assistant 段计算 loss。不做 CPT,不做 GRPO。
  • 注意:不要用 Qwen3Guard 自带的 chat templatelora/chat_template.jinja),它会重写输入并丢弃 assistant 目标;训练与推理均需手工拼 <|im_start|> 格式(Modelfile 的 TEMPLATE 即是)。
  • 关键决策:规则注入 system prompt(豁免/升级规则内嵌);三级判定中 Controversial=观察不拦截,是治"一刀切高误报"的核心机制。

License

Apache-2.0(与基座 Qwen3Guard-Gen-0.6B 一致)。仅用于内容安全审核用途。