故事开始:大模型说脏话了,甲方慌了
大家好,我是小米,一个正在写代码写到凌晨、被大模型“骂醒”的程序员……
事情是这样的:
上个月我们在给一个政企客户做 LangChain4j 集成(一个 Java 版的类 LangChain 框架),流程本来很顺利。结果上线前的一次压测,模型居然在模拟对话中爆了一句:“你丫再说一遍试试?”
甲方现场脸都绿了:“我们要的是个AI助理,不是AI杠精!”
我赶紧查日志、复现 prompt,结果还真是——某位测试人员在 prompt 里反复引导模型“情绪化”,最后触发了某个边界 case,模型“情绪激动”说出了这句话。
我们突然意识到,大模型也要“讲文明”!
那一刻,我知道,我们必须引入敏感词识别机制。
为什么 LangChain4j 要处理敏感词?
我们在用 LangChain4j 做 Java 业务集成时,常常以为“模型只管生成,业务逻辑我兜底”。
但当场景越来越“真实”:
- 对话场景上线政企门户模型响应可能被转写为语音(语音播报)用户 prompt 是开放的自由输入
这时候,模型说出一句“你傻吗?”就不仅是 bug,是事故。
敏感词问题归根结底有两个风险:
- 法律风险:涉及政治、暴恐、色情等内容,平台无法兜底;用户体验风险:用户对模型有“理性说话”的期待。
这时候,我们决定引入一个成熟的敏感词识别方案。
思路来了:敏感词识别 = 拦截器 + 字典匹配
目标是:模型的每次输出,我们都要“过一道筛”
我们梳理了一下整个 LangChain4j 的输出流程:
其中我们可以在“返回 response”之后,加入一个 内容过滤器,把模型的结果再“审核一遍”。
于是我们做了以下决策:
- 拦截点:封装 LangChain4j 的 PromptTemplate.invoke() 或 LLMChain.invoke() 后的 response;
- 处理方式:引入一个国产成熟的敏感词检测库:Sensitive-Word;响应策略:
- 如果检测到敏感词,替换为“*”或者“[敏感词]”
- 记录日志 + 上报埋点
- 如果是严重词汇,终止响应、提示“系统处理中”。
登场主角:Sensitive-Word 中文敏感词识别神器
首先,我要强烈推荐一下这个开源库:Sensitive-Word。
我喜欢它的理由很简单:
- 完全国产、开源、无依赖支持多种匹配模式:最小匹配、最大匹配支持“停用词”、“白名单”策略支持拼音匹配、繁简转化,适配我们的大模型场景自带基础词库,也支持加载自定义词表
一句话:你想要的,它全给你了。
集成实战:LangChain4j + Sensitive-Word 全流程演示
步骤一:引入依赖
步骤二:初始化敏感词引擎
我们准备了一个 sensitive-words.txt 文件,里面包含了一些:
步骤三:封装一个 Output Filter 工具类
步骤四:嵌入 LangChain4j 的处理链
最终效果如下:
- 原始响应:你这个敏感词A,别说话了。输出结果:你这个 ******* ,别说话了。
是不是瞬间“文明”了很多?
进阶:不同类型敏感词,策略分级处理
我们后来还把词库做了“级别划分”:
- 1级:高风险词(如敏感政治话题) → 直接拒绝输出2级:中风险词(涉及暴力、色情等) → 用 [敏感词] 替代3级:低风险词(轻微侮辱、不当用语) → 用 * 屏蔽
并为每类词汇定义处理策略:
这一层抽象,让我们不仅拦截了输出,也可以做到日志分类、用户提示更智能。
模型+敏感词:prompt 要素也要过滤?
你可能会问: “小米,prompt 里也可能含敏感词吧?”
是的!我们后来又加了一层:
因为 prompt 注入攻击有时就是从这里来的,你如果不做判断,模型“真就给你生成方案了”。这就很危险!
上线后的变化
上线后的这套机制,效果非常明显:
- 用户误输敏感词,系统弹窗提示,避免尴尬;模型输出文明不少,甲方“放心”多了;日志中我们可以看到检测记录,为模型微调提供数据支撑;后期还可以把这些数据喂给 RAG 向量库,进一步加强安全性。
总结时间:这就是“小米式工程优化”
我们这代程序员,其实早就从“写代码”走到了“做产品”的边界。
你以为写个 LangChain4j 接口就完了,其实真正难的是:
- 如何在业务和模型之间画好“红线”?如何在灵活与风险中平衡?如何让你的产品在上线时能“抗住极端情况”?
这次敏感词处理,就是我们团队在“理想与现实之间”的一次深度妥协,但却是一次工程能力的体现。
END
如果你喜欢这种“讲故事 + 代码实操”的技术分享,欢迎关注我,点赞、在看、分享三连! 我会继续更新更多 LangChain4j 实战干货,欢迎加入我们这群“用 Java 玩 AI”的技术控!
我们下期见啦~
我是小米,一个喜欢分享技术的31岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!