乐于分享
好东西不私藏

我用Dify搭了一个AI客服,省了3个客服工资,但踩了8个坑

我用Dify搭了一个AI客服,省了3个客服工资,但踩了8个坑

真实踩坑记录,不是广告,不是教程,就是一个被老板逼疯的程序员吐槽。


一、老板一句话,我熬了三个月

2025年10月,那是一个让我至今想起来都肝疼的月份。

公司客服部门3个人,月薪加起来2万4。每天的工作就是回答"怎么退款""怎么改地址""你们发什么快递"这种重复到让人麻木的问题。老板把我叫到办公室,手指敲着桌子说:"现在AI这么火,你搞技术的,能不能用AI把客服替代了?"

我当时心里一万只草泥马奔腾而过。但脸上还得堆笑:"我研究研究。"

研究个屁。我当时真的想摔键盘。

但没办法,拿人工资替人消灾。而且说实话,我心里也隐隐有点兴奋——要是真搞成了,这不就是简历上浓墨重彩的一笔吗?搞不成……反正老板让搞的,锅也不是我一个人的。

抱着这种"死马当活马医"的心态,我开始了漫长的选型之路。


二、选型:试了3个平台,差点被Coze气死

我先试了ChatGPT官网。功能确实强,但问题是——没法接入我们自己的业务系统,也没法上传产品手册。而且让公司数据走OpenAI的服务器,老板第一个不同意,而且纯英文,好难受,来个中文版,好点了,又要梯子,又难受。

然后试了Coze(字节跳动的那个)。可视化编排确实挺香,但免费版限制太多,商业化版本的价格又让我望而却步。最关键的是,它不开源。万一哪天字节不玩了,我们岂不是要推倒重来?

最后我发现了Dify。

Dify(GitHub: langgenius/dify),一个开源的LLM应用开发平台。截至2026年6月19日,已经拿到了145,784个Star,主要用TypeScript写的,社区活跃得吓人。

我选它的原因很简单:

  • 开源:代码全在GitHub上,不用担心被厂商绑架
  • 可私有化部署:数据存在自己服务器上,老板放心
  • Workflow可视化:拖拽式编排,不用写一堆胶水代码
  • 支持多种模型:OpenAI、DeepSeek、Claude、通义千问……想换就换

就它了。开干。


三、搭建过程:看起来15分钟,实际上……

3.1 Docker Compose一键部署

Dify的官方文档确实良心,一条命令搞定:

git clone https://github.com/langgenius/dify.gitcd dify/dockerdocker compose up -d

15分钟,服务跑起来了。界面还挺漂亮,知识库、Workflow、模型配置一应俱全。我当时还挺得意,拍了张截图发给老板。老板回了个"👍"。

现在想想,那个👍就是我噩梦的开始。

我当时要是知道后面三个月我会掉多少头发,我绝对不在那天发那张截图。

3.2 配置DeepSeek模型

Dify后台配置模型很简单,填个API Key就行。DeepSeek的API Key从官网申请,新用户还送了一些额度。

我选了DeepSeek-V3,理由是便宜、中文好、推理能力够用。当时测了几个问题,回答得像模像样,我还暗自庆幸:这项目比想象中简单啊。

太天真了。真的太天真了。

3.3 创建知识库

把我们公司的产品手册PDF传上去,Dify自动做分块、向量化。支持多种分块策略,我选了"自动分段",看着它唰唰唰处理完,心里还挺爽。

3.4 设计Workflow

这是我的Workflow设计:

用户提问 → 意图识别节点 → 知识库检索节点 → 大模型生成回答 → 人工兜底节点

看起来逻辑清晰、完美闭环对吧?

运行起来之后,我才知道什么叫"理想很丰满,现实很骨感"。


四、8个坑,坑坑要我命

坑1:知识库检索不准,"退款"变"付款"

场景:用户问"我要怎么退款?",知识库检索出来的Top3结果全是"怎么付款""支持哪些支付方式""付款失败了怎么办"。

原因:向量检索是基于语义相似度的,"退款"和"付款"在向量空间里离得太近,模型分不清楚。

解决方案

  1. 在PDF里给每个章节加明确的标题和关键词标签
  2. 调整分块大小,从默认的500字改成300字,让每个chunk主题更聚焦
  3. 开启Dify的"重排序(Rerank)"功能,用更精细的模型做二次排序
  4. 在Query里加前缀,比如把用户问题改成"关于退款政策:我要怎么退款?"
  5. 把"退款"相关的内容单独整理成一个FAQ文档,优先级调高

改完之后,检索准确率从60%提升到了85%。但还有15%的case会跑偏,这个后面再说。

那段时间我每天下班前都要测50个提问,眼睛都快看瞎了。


坑2:大模型幻觉,编造不存在的退款政策

场景:用户问"你们支持7天无理由退款吗?"我们的政策其实是"3天内可退,需扣除手续费"。结果AI回答:"支持7天无理由全额退款。"

用户高兴了,马上下单。结果三天后来申请退款,说要"7天无理由全额退款"。财务一查,根本没这政策。用户炸了,在社交媒体上发帖子骂我们"虚假宣传"。

老板把我叫到办公室,脸黑得像锅底:"你写的AI在乱承诺,你知道吗?"

我当时真的想找个地缝钻进去。

那天晚上我失眠了,满脑子都是"7天无理由"这五个字。我发誓,这辈子再也不想听到这个词。

原因:大模型有幻觉倾向,当知识库检索不到明确答案时,它会"脑补"一个看起来合理的回答。

解决方案

  1. 在Prompt里加严格的约束:"你只能基于知识库内容回答,如果知识库没有相关信息,请明确告知用户'这个问题我需要转接人工客服',禁止编造。"
  2. 调低Temperature(生成随机性),从0.7降到0.3
  3. 在Workflow里加一个"答案校验"节点,用规则匹配检查回答里是否出现了敏感词(如"全额退款""无条件")
  4. 开启Dify的"引用来源"功能,让AI回答时必须标注信息来自哪一段文档

坑3:Workflow循环调用,Token消耗爆炸

场景:我设计了一个"如果回答不满意就重新生成"的循环逻辑。结果某个用户连续追问,Workflow进入了死循环,一个会话消耗了将近10万Token。

DeepSeek的账单出来的时候,我手都在抖。

原因:Workflow里的条件分支没设好,循环退出条件太宽松。

解决方案

  1. 给循环加硬上限:最多重试2次,超过直接转人工
  2. 在循环节点里加计数器,用变量控制执行次数
  3. 设置Token预算告警,单会话超过5000Token就触发告警
  4. 取消"自动重试"逻辑,改成"回答不满意时直接提示用户转人工"
  5. 在Dify后台设置单用户每日Token上限,防止极端情况

省下的Token钱,够我吃一个月的猪脚饭了。

从那以后,我每天早上第一件事就是看DeepSeek的用量仪表盘,比看股票还紧张。


坑4:并发高了就卡,Dify默认单实例

场景:某天做活动,客服咨询量突然翻了3倍。用户反馈"AI客服好卡""半天不回复"。我登服务器一看,CPU飙到95%,内存快满了。

原因:Dify默认是单实例部署,没有水平扩展。Docker Compose那套只是单机版,扛不住高并发。

解决方案

  1. 把Dify拆成微服务部署:Web服务、API服务、Worker服务分开跑
  2. 用Nginx做负载均衡,多开几个API实例
  3. 给Websocket服务单独扩容,因为聊天长连接很吃资源
  4. 加Redis缓存,把知识库检索结果缓存起来,减少重复计算
  5. 数据库从SQLite(默认)迁移到PostgreSQL,并做读写分离

老板以为我在摸鱼,其实我在通宵改架构。

连续三天,我每天只睡4小时。第四天早上老板问我"进度怎么样",我顶着黑眼圈说"快好了",他回了一句"注意身体"。

我注意个鬼啊,你倒是给我加个人啊。


坑5:用户输入敏感词,模型拒绝回答

场景:有用户问"你们这个产品是不是骗人的?"DeepSeek模型触发了安全机制,直接回复"抱歉,我无法回答这个问题。"

用户更火了,在评论区大骂"客服都不敢正面回应,肯定是骗子!"

原因:大模型自带内容安全过滤,某些词被判定为敏感词就会拒答。

我当时就纳闷了:用户正常咨询,模型你激动个啥?后来查日志才发现,DeepSeek把"骗子"这个词标成了高风险,直接拒答。问题是用户只是质疑,不是真的在骂街啊。

解决方案

  1. 在Dify里配置"系统提示词",明确告诉模型:"用户可能使用情绪化语言,请正常理解其意图并给出专业回答,不要触发安全拒绝。"
  2. 在Prompt里加示例:"用户说'你们是不是骗子',实际意图是'质疑产品真实性',请基于知识库解释产品资质和保障政策。"
  3. 如果模型确实拒答,Workflow里加一个Fallback节点,把问题改写后再问一次
  4. 在Dify的模型配置里调低"安全级别"(部分模型支持)

坑6:聊天记录没持久化,刷新页面就没了

场景:用户聊到一半,手滑刷新了页面。再进来,聊天记录全没了,AI说"你好,有什么可以帮您?"

用户崩溃:"我刚才说了半天白说了?"

原因:Dify默认的聊天界面没有把聊天记录持久化到数据库,只存在前端内存里。

解决方案

  1. 开启Dify的"对话记录"功能,在后台配置里把消息保存到数据库
  2. 自己写了个前端插件,把conversation_id存到localStorage,刷新后自动恢复会话
  3. 给每个用户生成唯一的visitor_id,关联历史会话记录
  4. 在聊天窗口加提示:"刷新页面不会丢失对话记录"

这个坑看起来很小,但用户体验极差。一个用户跟我吐槽:"我跟你们AI聊了十分钟,不小心点了一下返回,全没了。你们这是耍我吗?"

我只能一边道歉一边默默改代码。


坑7:多轮对话上下文丢失,第5轮开始答非所问

场景

  • 用户第1轮:"我想买你们的产品"
  • AI:"好的,请问您需要什么型号?"
  • 用户第2轮:"A款"
  • AI:"A款售价999元,您要下单吗?"
  • 用户第3轮:"能便宜点吗?"
  • AI:"目前有满减活动……"
  • 用户第4轮:"那B款呢?"
  • AI:"B款售价1299元……"
  • 用户第5轮:"刚才说的A款,活动价多少?"
  • AI:"请问您说的是哪款?"

用户:???

我当时看到这段对话记录的时候,比用户还懵。A款、B款聊得清清楚楚,怎么突然就不认识了?

原因:Dify默认的上下文窗口有限,多轮对话时前面的信息被截断了。

解决方案

  1. 在模型配置里增大上下文窗口,从默认的4K改成16K
  2. 在Workflow里加一个"对话摘要"节点,每3轮对话自动总结一次关键信息,作为后续轮次的背景知识
  3. 用变量存储关键信息(如用户意向产品、价格敏感度),在Prompt里显式引用
  4. 限制对话轮数,超过8轮自动建议"我为您转接人工客服,方便后续跟进"

坑8:人工接管时,AI还在自动回复,冲突了

场景:用户的问题太复杂,AI搞不定,客服小妹点击"接管对话"。结果她刚打了一半字,AI又自动回复了一条,跟客服的话冲突了。

用户更懵了:"你们到底谁在跟我聊?"

原因:Dify的"人工接管"和"AI自动回复"没有做好互斥,两边同时触发了。

客服小妹当时委屈得快哭了:"我明明点了接管,怎么AI还在说话?用户以为我在跟AI吵架呢!"

解决方案

  1. 在Workflow里加一个"人工接管状态"变量,一旦接管,AI节点直接跳过
  2. 修改前端代码,接管按钮点击后立即发送一个"暂停AI"的指令到后端
  3. 后端加锁机制,同一时刻只有一个回复来源(AI或人工)
  4. 给客服界面加一个"AI辅助"开关,接管后可以选择是否让AI在后台生成建议回复(但不自动发送)

五、最终效果:省了2个人,但没那么神话

折腾了三个月,数据如下:

指标
上线前
上线后
客服问题解决率
30%(人工也有搞不定的)
78%
平均响应时间
5分钟(人工排队)
3秒
人工介入率
100%
22%
用户满意度
3.8分
4.2分

**解决率从30%提升到78%**,看起来很美对吧?但我要泼盆冷水:

  • 那22%需要人工介入的问题,都是真正复杂的、需要灵活处理的case
  • AI对情绪化用户基本没辙,"我要投诉你们"这种话,AI回复再标准也像机器人
  • 有些老年用户根本不愿意跟AI聊,上来就喊"我要真人"

所以最终方案是:省了2个客服,留了1个处理复杂case。

那个留下来的客服小妹现在成了"AI训练师",专门负责优化知识库和调整Prompt。她说:"以前每天回答100个重复问题,现在每天处理20个有意思的问题,还学了怎么用AI工具,工资还涨了。"

这大概是我这个项目里最欣慰的事了。


六、成本算账:老板看了沉默,财务看了流泪

来算笔账:

以前:

  • 3个客服 × 8000元/月 = 24,000元/月

现在:

  • DeepSeek API调用费:约800元/月
  • Dify部署在现有服务器上,没额外服务器成本
  • 1个客服(兼AI训练师):8,000元/月
  • 我的加班费和精神损失费:无价(老板没给)

合计:8,800元/月

省了:24,000 - 8,800 = 15,200元/月

一年下来省了18万多。老板在年会上提了一嘴"技术部降本增效",给我发了个"优秀员工"奖状,还有一个印着公司Logo的保温杯。

奖状能折现吗?不能。保温杯能抵加班费吗?也不能。但看着自己的项目真的跑起来了,那种成就感,确实挺爽的。

而且说实话,这三个月我学到的东西,比过去三年加起来还多。向量检索、Prompt工程、Workflow编排、高并发架构……每一个坑都是一堂实战课。


七、写在最后:不是AI万能,是用对场景

三个月踩了8个坑,我最大的感悟是:

AI客服不是万能的。它最适合的是"有标准答案的重复性问题"。

如果你的业务全是定制化需求、情绪化沟通、需要灵活变通的场景,那AI客服可能还不如人工。

但如果你跟我一样,每天有80%的咨询都是"怎么退款""发什么快递""怎么改地址"——那AI客服绝对值得一试。

选Dify还是选别的平台?

如果你团队有技术能力,想要私有化部署、不想被厂商绑架,Dify是目前最好的选择之一。社区活跃,文档完善,更新频繁(2026年6月19日还在持续更新)。

如果你只是想快速验证,没技术团队,那Coze、文心一言的智能体平台可能更适合。


附:Dify开源地址

  • GitHub: https://github.com/langgenius/dify
  • Stars: 145,784(截至2026-06-19)
  • 主要语言:TypeScript
  • 协议:Apache-2.0(可商用)

关于我:一个被老板逼疯后反而爱上AI应用开发的程序员。如果你也在搞AI客服,欢迎交流踩坑经验。我的键盘已经摔坏3个了,第4个还在坚强地活着。

最后说一句:如果你看完这篇文章觉得"AI客服好像也没那么难",那说明我写得还不够真实。真的上手去做,你会发现坑比我想象的还多。但别怕,踩过去就是了。毕竟,哪个程序员不是从坑里爬出来的呢?