我在小厂用GPT-4o做NLP,从踩坑到上线的复盘
公司要上智能客服,我一个后端硬着头皮接下了。干了两个月发现,关键是把问题拆对、把工具用对。
从规则到模型,先搞清楚自己要什么
第一版用关键词正则硬怼,用户换个说法就抓瞎。后来开窍了:把NLP问题拆成“意图识别+实体抽取+生成回复”三段,前两段用轻量模型,生成部分调GPT-4o API。小厂没算力没数据,别想着自己训大模型。
意图识别怎么选型
| 方案 | 准确率 | 延迟 | 部署成本 |
|---|---|---|---|
| 关键词正则 | 62% | <5ms | 零 |
| FastText | 81% | <10ms | 低 |
| BERT-base微调 | 89% | 40ms | 中 |
| GPT-4o few-shot | 93% | 800ms | 按量付费 |
GPT-4o最准但延迟太高。最终用FastText做第一层过滤,BERT做精细分类的两级架构,P95延迟控制在120ms以内,准确率88%。FastText两万条数据CPU三分钟出模型,但坑在文本预处理:少于4个字符的短句要单独走规则兜底,否则准确率被噪声拖垮。
实体抽取的隐藏坑
用BERT+CRF抽订单号、商品名、日期。血泪教训:标注数据质量比模型结构重要得多。三个人对“收货地址”边界理解不同,测试集F1有92%,上线就崩。后来统一用BIO标注法,让标注人员先看bad case再动手。F1掉到89%,线上效果反而好了。线上真实分布才是最终裁判。
生成回复:GPT-4o的正确打开方式
直接拼对话历史调API有两个问题:token消耗飞快,模型会“幻觉”编造政策。改成RAG思路:把FAQ和政策文档切chunk存向量库,检索最相关几条塞进prompt再生成,既控token又减少幻觉。
system_prompt = """
你是XX电商的智能客服助手。请严格依据以下政策内容回答用户问题。
不要编造政策中不存在的信息。如果政策中没有明确说明,请引导用户转人工。
政策内容:
{retrieved_docs}
"""
user_prompt = f"用户问题:{user_query}\n对话历史:{history}"
细节:检索chunk不能只取top1,取top3并每条截断到300字,效果稳定很多。
上线后的真实数据
跑了三周,自动解决率从31%涨到67%,人工客服每天少接四百多通会话。翻车案例:用户问“你们是不是要倒闭了”,模型一本正经回复“暂无相关信息”,被截图发微博。后来加了情绪识别模块,负面情绪直接转人工。
几点实在的建议
别一上来就训练大模型。先用GPT-4o API跑通流程验证需求,再考虑哪些环节值得自己训小模型。整个方案真正自己训练的只有FastText和BERT,成本不到一顿火锅钱。
把精力花在数据上。标注规范、bad case分析、线上反馈闭环,比换模型架构提升大得多。每周拉一批线上bad case逐条分析,更新规则或补训练数据。
延迟和成本是硬约束。每条消息模型调用成本控制在0.003元以内,延迟P95在200ms以下,这是能上生产的前提。
NLP入门到进阶,难的不是算法,而是把模糊的业务需求翻译成明确的工程问题。想清楚要解决什么,工具多的是。

评论 0