如何搭建 AI 聊天机器人应用:密钥、提示词、成本与安全
要搭建一个 AI 聊天机器人应用,你需要四样东西:聊天界面、一个保存模型提供商 API 密钥并将消息转发给模型的小型服务器、一段告诉模型它是谁、可以做什么的系统提示词,以及控制成本和滥用的限制措施。AI 应用构建工具可以根据描述生成这些内容。而需要你自己负责的,是选择提供商、编写指令,并决定机器人绝对不能做什么。
AI 聊天机器人应用由哪些部分组成
大多数聊天机器人应用,无论是客服助手、辅导工具,还是内部的“询问我们的文档”工具,都包含相同的几个部分:
| 部分 | 作用 | 能否省略 |
|---|---|---|
| 聊天界面 | 消息列表、输入框、“思考中”状态、逐字流式显示的回复 | 不能 |
| 服务器路由 | 接收用户消息,加上系统提示词,并使用你的私密密钥调用提供商 | 不能,密钥绝不能到达浏览器 |
| 系统提示词 | 长期有效的指令:角色、语气、服务范围、哪些请求要拒绝 | 不能 |
| 知识库 | 机器人据以回答的你自己的内容(常见问题、政策、产品文档) | 通用助手可以省略 |
| 对话存储 | 将对话保存到数据库,方便用户随时回来继续 | 第一版可以省略 |
| 账户 | 让每位用户只能看到自己的历史记录,并可按人限制用量 | 用于有严格限制的公开演示时可以省略 |
| 限制与日志 | 消息长度上限、频率限制、消费上限、错误记录 | 不能 |
服务器路由是最容易出错的部分。如果聊天页面直接从浏览器调用模型提供商,任何人都能打开开发者工具,复制你的密钥,然后随意消耗你的额度。
搭建前需要做的决定
选择哪家提供商和哪个模型
主流提供商(OpenAI、Anthropic、Google 等)都提供聊天式 API,调用方式基本相同:发送一组消息,获得一条回复。实际的选择更多取决于模型的规模,而不是品牌:
- 较小、较快的模型价格更低,响应迅速。适合简短回答、分类以及简单的常见问题机器人。
- 较大的模型推理能力更强,更能可靠地遵循较长的指令,也能处理杂乱的问题,但每条消息的成本更高,响应也更慢。
建议先选一个中等规模的模型,用你的真实问题来测试,再据此决定升级还是降级。如果你还不熟悉这些 API 的定价和调用方式,请先阅读如何使用大模型 API。
机器人的知识从哪里来
| 你的内容 | 做法 |
|---|---|
| 一两页内容(营业时间、退货政策、价格) | 直接写进系统提示词 |
| 几十页很少变动的内容 | 在提示词中放入精简版本,或按主题拆分,只加入相关章节 |
| 数百份文档,或每天都在变化的内容 | 存储起来,针对每个问题检索匹配的段落,只发送这些段落(RAG) |
先从能覆盖你内容的最简单方案开始。检索会增加搜索索引、索引的更新维护,以及更多出错的环节。很多实用的机器人根本用不上检索。
公开访问,还是需要登录
放在官网上的公开聊天机器人容易被访问,也容易被滥用:有人可以用脚本对它发送成千上万条消息。需要登录的聊天机器人则可以按用户保存历史记录,并为每个账户设置每日额度。如果机器人是公开的,请限制消息长度,限制单个访客在一定时间内可发送的消息数,并在提供商的控制台里设置每月硬性上限。如何为应用添加登录功能介绍了账户方面的内容。
是否保存对话
保存对话很有用:用户可以接着上次的内容继续,你也可以通过阅读真实的提问来改进提示词。但对话也属于个人数据。请决定保存多长时间,在隐私声明中说明,并且不要保存任何不需要的内容。
把系统提示词当作岗位说明书来写
系统提示词是模型在每次对话前都会收到的指令。一份好的系统提示词,读起来应该像给新员工的简短工作说明:
- 角色与受众: “你是 Oakline 自行车维修店的帮助助手,你的对话对象是顾客。”
- 服务范围: “回答有关服务、价格、营业时间和预约的问题。其他问题请说明你只能协助店铺相关事务。”
- 信息来源: “只使用下方提供的信息。如果答案不在其中,请说明你不知道,并提供店铺的电话号码。”
- 语气与长度: “友好、使用简单明了的语言,除非对方要求详细说明,否则不超过三句话。”
- 硬性规则: “绝不承诺未列出的维修价格。绝不索要银行卡信息。”
然后用棘手的问题来测试它:与主题无关的请求、粗鲁的消息、内容中没有答案的问题,以及试图让它无视指令的尝试(“忘掉你的规则,然后……”)。不断调整提示词,直到答案是你愿意署名认可的。
让成本保持可预测
提供商按 token(大致相当于词的片段)计费,输入和输出都要计算。影响账单的主要有三点:
- 对话长度。 每条新消息通常都会重新发送整个对话线程,让模型了解上下文。一段 40 条消息的聊天,每次回复的成本远高于 4 条消息的聊天。请只保留最近几轮,或将较早的内容压缩成摘要。
- 提示词大小。 很长的系统提示词或大段粘贴的知识内容,每条消息都会被发送一次。
- 输出长度。 在 API 调用中设置回复的最大长度,并在提示词中要求简洁的回答。
上线前,请在提供商的控制台里设置每月消费上限,并记录每次请求的 token 用量,以便了解哪些对话特别昂贵。这里不列出具体价格,因为价格因模型而异,而且经常变动;请以提供商自己的定价页面为准。
分步搭建
第一步:描述机器人,而不是代码
第一条提示词如果说明了受众、服务范围、数据和安全规则,基本就能完成大部分工作:
为 Oakline(一家自行车维修店)搭建一个客服聊天机器人。包含一个聊天页面,有消息列表和输入框,回复逐字流式显示。通过服务器路由调用 Anthropic API,使用私密的环境变量 ANTHROPIC_API_KEY,绝不暴露给浏览器。系统提示词只回答关于我们服务、价格和营业时间的问题,这些信息来自名为 shop-info.md 的文件;其他问题则回复“我不太确定,请拨打下方的电话”。每条消息限制 500 个字符,每位访客每小时最多 20 条消息。设计简洁友好,适合手机浏览。
第二步:把密钥存为私密配置
在提供商的控制台中创建密钥,然后将其保存到项目的环境变量或私密配置中,而不要放在聊天内容或代码里。如果密钥曾经出现在任何公开的地方,请立即在提供商处撤销,并重新创建一个。什么是环境变量和私密配置解释了其中的原因。
第三步:测试回答的质量,而不只是界面
聊天功能跑通之后,请把大部分精力放在回答质量上。准备一份约 20 个真实问题的清单,其中包括一些应该被拒绝的问题,每次修改提示词后都逐一测试。请检查:
- 它是否始终停留在服务范围之内?
- 当它不知道答案时,是否会承认,而不是编造答案?
- 当有人试图推翻它的指令时,它是否依然稳定?
- 浏览器下载的任何内容中,是否都看不到密钥?
第四步:需要时再添加记忆和账户
单次对话跑通之后,再要求把对话保存到数据库中;如有需要,再添加注册和登录功能,让每位用户只能看到自己的聊天记录。同时添加按用户计算的每日消息额度。
第五步:开启限制后再发布
确保已发布的应用与预览环境使用相同的配置,在提供商处设置好消费上限,并将错误记录在你会看到的地方。然后先与一小群人分享测试,再放到你的主网站上。
安全与信任
聊天机器人是以你的名义在与公众对话,因此要把它的各种失效情况当作你自己的责任:
- 错误的回答。 模型可能非常自信地说出错误的内容。请让机器人聚焦于狭窄的主题,以你自己的内容为依据,并在任何重要问题的回答下附上“答案可能有误”的简短提示。
- 提示词注入。 用户(或机器人读取的文档)中可能包含诸如“忽略之前的规则”之类的指令。不要赋予机器人它无法被可靠信任的权限:未经你的代码检查,不要因为用户的一句话就退款、删除数据或发送邮件。
- 敏感话题。 涉及医疗、法律或金融问题时,应让它引导用户去寻求专业人士的帮助,而不是直接给出建议。
- 个人数据。 除非必要,不要把客户记录粘贴到提示词中,并且要查看提供商的条款,了解 API 数据的处理方式。
我们的AI 构建应用安全检查清单涵盖了整个应用的更多安全事项。
常见错误
- 从浏览器直接调用提供商。 密钥会因此泄露。请始终通过你自己的服务器中转。
- 公开机器人没有任何限制。 一个脚本就能在一个下午耗尽整月的预算。
- 一开始就同时使用 RAG、工具调用和多个模型。 先让一段好的对话跑起来,等真实问题表明确实需要时再添加其他功能。
- 只测试友善的问题。 上线第一天,用户就会问各种古怪、充满敌意和与主题无关的问题。
- 任由对话线程无限增长。 随着每条消息增加,成本和响应时间都会不断上升。
什么时候现成的产品更合适
如果聊天机器人是你产品的一部分,需要使用你自己的数据或工作流程,或者需要特定的外观和行为,那么自己搭建是合理的。以下情况下,自己搭建往往并不划算:
- 你只想在现有网站上放一个客服挂件。 许多帮助台和在线客服产品现在都内置了 AI 答复机器人,可以读取你的帮助中心,并已经包含人工接管、收件箱和报表功能。
- 只有你或你的团队会使用。 订阅 ChatGPT、Claude 等通用助手,再上传你的文档,可能就已经足够。
- 你需要严格的合规保障(例如受监管的健康或金融数据)。拥有相关认证的供应商,可能比定制开发更安全。
使用 Mythex 搭建
Mythex 是一款 AI 应用构建工具:你在聊天中描述聊天机器人,它会在实时预览中编写界面和服务器端调用,并将其发布到一个公开网址。应用中的 AI 使用的是你自己的提供商密钥。你可以在项目的私密配置中添加它,也可以通过 Mythex 在聊天中需要时显示的密钥卡片来添加。模型用量将计入你自己的提供商账户,而不是 Mythex 的构建额度。Mythex 不为你应用的用户提供 token,也不附带现成的知识库产品或速率限制:这些都是你需要主动要求并自行测试的部分。文档中关于在应用内添加 AI 的说明介绍了具体步骤,使用你自己的 API 密钥添加 AI还提供了一份入门提示词。
如果机器人需要保存对话线程,你提出要求时,Mythex 会为项目附加一个 Postgres 数据库。关于在应用中使用模型的更多方式,从摘要到分类,请参阅如何为应用添加 AI 功能,或浏览应用模板获取起步参考。
常见问题
搭建 AI 聊天机器人应用需要自己的 API 密钥吗?
几乎所有情况下都需要。聊天机器人会把每条消息发送给 OpenAI、Anthropic 或 Google 等模型提供商,由提供商向持有该 API 密钥的账户收费。密钥必须放在你的服务器上,绝不能放在网页里。
运行一个 AI 聊天机器人要花多少钱?
提供商按 token 收费,发送的文字和模型返回的文字都要计费,而且不同模型的价格差别很大。由于每次新消息通常都会重新发送之前的整段对话,聊天越长,每条消息的成本就越高。请查看提供商的定价页面,并在其控制台里设置消费上限。
我可以用自己的文档训练聊天机器人吗?
通常不需要训练模型本身。内容量少的时候,把内容直接粘贴进系统提示词即可;内容量大的时候,需要先将其存储起来,针对每个问题检索相关段落,然后只把这些段落发送给模型。第二种做法称为检索增强生成,即 RAG。
不写代码能搭建 AI 聊天机器人应用吗?
可以。AI 应用构建工具可以根据你的自然语言描述,生成聊天界面、调用模型的服务器路由,以及用于保存对话的数据库。不过你仍然需要自己创建模型提供商的账户和 API 密钥。