给网站加上AI客服:从0到1的完整实操
2026-09-14
给网站加上AI客服:从0到1的完整实操
去年年底,我运营的一个小型SaaS工具站每天大概有300-400个访客。问题来了:用户在帮助中心找不到答案,就会发邮件,而我平均要花2-3小时回复那些重复度极高的问题。比如“怎么重置密码”、“免费版有什么限制”、“支持导出什么格式”——这些问题在FAQ里都写了,但用户就是不看。
忍了几个月,我决定给网站加一个AI客服。前后折腾了大约一周,踩了不少坑,今天把整个过程写下来,给同样想做这件事的人省点时间。
先想清楚:你到底需要什么样的AI客服
市面上的方案大致分三类,我列个表对比一下:
| 方案类型 | 代表产品 | 成本 | 上手难度 | 数据可控性 |
|---|---|---|---|---|
| 开箱即用SaaS | Intercom、Tidio、Chatbase | 每月$20-$100+ | 极低 | 数据在别人服务器 |
| 低代码平台 | Dify、Coze、FastGPT | 免费到每月几十块 | 中等 | 可私有部署 |
| 完全自建 | OpenAI API + 自己写后端 | 按token计费,通常几美元/月 | 较高 | 完全自己掌控 |
我选的是第三条路:用OpenAI API加一个轻量后端,自己控制整个链路。原因是我网站的用户数据比较敏感,不想全部丢给第三方SaaS。而且我的流量不大,token成本完全可以接受。
如果你完全不想碰代码,直接用Chatbase这类工具,上传文档、复制一段script标签就能跑,10分钟搞定。但如果你想深度定制,继续往下看。
知识库是核心,不是模型
很多人以为AI客服的关键是选个好模型。错了。关键是知识库的质量。
我一开始图省事,直接把帮助中心的几个页面URL丢给模型做检索。结果用户问“你们支持Webhook吗”,AI回答得模棱两可——因为帮助中心那篇文章写得太笼统了。
后来我花了两个晚上,把网站所有常见问题重新整理成结构化的FAQ文档,一共47条,每条包含:问题、详细回答、相关链接。这份文档才是AI客服真正的“大脑”。
整理知识库的几个原则:
- 用问答对的形式,不要丢一整篇文章进去。模型对Q&A结构的检索效果明显更好。
- 覆盖边界情况。比如“你们会涨价吗”、“能开发票吗”这种看起来不像技术问题的问题,恰恰是用户最常问的。
- 每一条控制在200字以内。太长了检索精度会下降。
技术链路:RAG是怎么跑起来的
整体流程是这样的:
- 用户在前端输入问题
- 后端把问题转向量(用OpenAI的text-embedding-3-small,便宜且够用)
- 在向量数据库里找最相似的3-5条知识库内容
- 把用户问题+检索到的知识拼成Prompt,发给GPT-4o-mini
- 返回回答,前端展示
向量数据库我用的是ChromaDB,本地跑,零成本。如果你的知识库超过几万条,可以考虑Pinecone或Qdrant。
Prompt的设计很关键。我的System Prompt大概长这样:
你是[产品名]的客服助手。根据以下知识库内容回答用户问题。如果知识库中没有相关信息,诚实告诉用户你不确定,并建议他们发邮件到support@xxx.com。不要编造任何信息。回答保持简洁,控制在150字以内。
注意最后那句“不要编造任何信息”——不加这句,模型会非常自信地胡说八道。
前端接入:别搞得太复杂
前端我就是一个悬浮按钮加一个聊天窗口,用原生JS写的,总共不到200行代码。没有用React组件库,因为我的网站本身就是轻量级的,不想引入太多依赖。
一个细节:加了打字机效果。就是AI回答时一个字一个字往外蹦,而不是一次性显示。用户体验好很多,感觉像在跟真人对话。实现方式很简单,前端拿到完整回答后用setInterval逐字渲染就行。
另外记得加对话历史。用户追问“那这个功能收费吗”的时候,AI需要知道上一句聊的是什么。我把最近5轮对话都带在请求里发给后端。
上线后的真实数据
跑了一个月,数据比我预期好:
- AI客服独立解决了约78%的对话,没有转人工
- 平均对话轮次2.3轮,说明大部分用户一问就解决了
- 邮件量从每天15-20封降到了3-5封
- 每月API成本:$4.7(对,不到5美元)
有22%的对话AI搞不定,主要是涉及账户具体信息的查询,比如“我的订阅什么时候到期”。这类问题需要查数据库,目前我的做法是AI引导用户去账户页面自己看,或者转邮件。
踩过的坑
第一个坑:embedding模型和对话模型要匹配。我一开始用了一个开源embedding模型,检索效果很差,换成OpenAI的之后明显改善。省这点钱不值得。
第二个坑:不要把所有知识库一次性塞进Prompt。我最初图简单,把47条FAQ全部拼进System Prompt,结果token消耗大不说,模型还经常“看串行”,回答A问题的时候引用了B问题的内容。RAG的检索步骤不能省。
第三个坑:限流。上线第三天被人刷了,短时间内大量请求导致API账单飙升。后来加了简单的IP限流——每个IP每分钟最多5次请求,问题就解决了。
接下来想做的
现在这套系统能回答静态知识库里的问题,但我还想让它能查用户的账户信息。比如用户问“我的会员还有几天到期”,AI直接查数据库返回答案。这需要加function calling,技术上不难,主要是要做好权限验证,别让A用户查到B用户的信息。
另一个想法是加满意度评价。每次对话结束弹一个“这个回答有帮助吗”的按钮,收集到的数据可以用来优化知识库——被标记为“没帮助”的问题,就是我需要补充的内容。
如果你也想给自己的网站加AI客服,我的建议是:先用现成工具跑起来,验证需求真实存在,再考虑自建。别像我一样一上来就写代码,虽然最后跑通了,但前面两周的折腾其实用Chatbase一天就能搞定。