使用 Coze 构建 RAG 智能客服,并用原生 HTML/JS/CSS 集成
引言
随着大模型(LLM)能力的普及,越来越多的产品开始尝试引入“智能客服”或“知识助手”功能。然而,单纯依赖通用模型往往无法回答特定领域的问题——比如课程安排、产品文档、内部制度等。这时候,RAG(Retrieval-Augmented Generation) 技术就派上了用场。
本文将带你从零开始:
- 在 Coze 平台上创建一个带有知识库的智能体(Agent);
- 使用原生 HTML/JavaScript/CSS 搭建一个轻量级前端界面;
- 通过 Vite 构建项目并安全注入 API Key;
- 调用 Coze 的 Open API,实现用户提问 → 智能体回答的完整流程。
整个过程无需框架(如 React/Vue),仅用原生 Web 技术即可完成,适合快速验证想法或嵌入现有系统。
第一步:在 Coze 中创建带知识库的智能体
-
打造专属的知识库
- 给智能体配置相关的课程知识
- 给智能体配置人工客服的联系方式,可以是文本也可以是联系方式截图
-
创建并配置智能体
- 名称:例如 “智能客服”
- 行为:设置一段prompt设定智能体的回复逻辑
- 模型:可以根据需求选择
- 功能:开启 知识库(RAG)
-
发布并获取关键信息
- Bot ID:当发布后,可以在网页链接末尾看见botid,需要记录下来
- API Token:在coze的api管理中,选择SDK--->webSDK获取
提示:Coze 的 RAG 能力会自动在用户提问时检索相关知识片段,并作为上下文输入给 LLM,从而生成精准回答。
第二步:使用Trae搭建一个HTML/JS/CSS原生项目
第三步:使用 Vite 构建并安全注入密钥
直接在代码中写死 API Key 是危险的。Vite 提供了安全的环境变量机制。
1. 配置Vite(同样使用Trae完成构建)
2. 创建 .env.local 文件(不要提交到 Git! )
VITE_BOT_ID=你的BOT_ID
VITE_API_KEY=你的Coze_API_KEY
3. 项目结构:
Vite 会自动将
VITE_开头的变量注入到import.meta.env中,且不会暴露给客户端以外的环境。
4. 启动开发服务器
npm run dev
访问 http://localhost:5173,输入问题,即可看到 Coze 智能体的回答!
代码
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Coze API Demo</title>
<link rel="stylesheet" href="/src/styles.css">
</head>
<body>
<h1>Coze API Demo 随处智能</h1>
<input type="text" id="ipt" placeholder="请输入问题">
<div id="reply">think...</div>
<script type="module" src="/src/main.js"></script>
</body>
</html>
const ipt = document.getElementById('ipt');
const reply = document.getElementById('reply');
const endpoint = 'https://api.coze.cn/open_api/v2/chat';
// DOM 2
ipt.addEventListener('change',async function(event) {
const prompt = event.target.value;
console.log(prompt);
const payload = {
bot_id: import.meta.env.VITE_BOT_ID,
user: 'yvo',
query: prompt,
chat_history:[],
stream: false,
custom_variables: {
prompt: '你是一个AI助手'
}
}
const response = await fetch(endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${import.meta.env.VITE_API_KEY}`
},
body: JSON.stringify(payload)
})
const data = await response.json();
console.log(data, '////');
reply.innerHTML = data.messages[0].content;
})
关键代码解析:
- 定义API端点
const endpoint = 'https://api.coze.cn/open_api/v2/chat'; // Coze 官方提供的聊天接口地址
- 监听输入框change事件(
change事件只在用户完成输入并失去焦点(比如按回车或点击别处)时触发)
ipt.addEventListener('change',async function(event)
- 获取用户输入内容
const prompt = event.target.value;
- 构造请求载荷
const payload = {
bot_id: import.meta.env.VITE_BOT_ID,
user: 'yvo',
query: prompt,
chat_history:[],
stream: false,
custom_variables: {
prompt: '你是一个AI助手'
}
bot_id:你在 Coze 平台创建的 Bot 的唯一 ID。通过 Vite 环境变量注入(安全)。user: 用户标识符,用于区分不同用户(Coze 用它管理会话上下文)。这里写死为'yvo',实际项目应使用真实用户IDquery:用户当前的问题(即输入框内容)。chat_history:对话历史记录。当前为空数组[],表示单轮对话(无上下文记忆)。若要支持多轮,需保存之前的问答stream:是否启用流式响应。false表示等待完整回答后再返回(适合简单展示)。设为true可实现“打字机”效果,但需处理 SSE 或 WebSocketcustom_variables:自定义变量,可在 Coze Bot 的 Prompt 中引用(如{{prompt}})。此处覆盖系统提示词,强化角色设定。
- 发送post请求
const response = await fetch(endpoint, {
method: 'POST',//请求方式
headers: {
'Content-Type': 'application/json',//告诉服务器我们发送的是 JSON
Authorization: `Bearer ${import.meta.env.VITE_API_KEY}`//`Bearer <token>`:携带 API 密钥进行身份验证
},
body: JSON.stringify(payload)//将 `payload` 转为 JSON 字符串发送。
})
- 解析响应并返回
const data = await response.json();
reply.innerHTML = data.messages[0].content;
通常大模型会返回多条结果让我们选择,messages[0]代表我们选择第一条,你也可以做出其他选择
总结与扩展
通过以上步骤,我们完成了:
- 在 Coze 中构建带 RAG 能力的知识库 智能体
- 用原生 Web 技术搭建轻量前端
- 通过 Vite 安全管理敏感信息
- 实现端到端的智能问答流程
结语
RAG 不再是大厂专属。借助 Coze 这样的低代码平台,配合简单的前端集成,任何人都能快速打造一个“懂业务”的 AI 助手。无论是教育、电商还是内部工具,这种模式都能显著提升用户体验。
让知识流动起来,而不是沉睡在文档里。
希望这篇博客草稿对你有帮助!