从零上线 Coze 智能助手:部署流程与源码实战指南
Coze 部署完整教程|附源码
随着 AI 应用开发的普及,越来越多的开发者开始关注如何快速搭建一个可用、可扩展、可上线的智能体应用。Coze(扣子)作为一款面向 AI Bot / Agent 开发的平台,提供了流程编排、插件调用、知识库、工作流、多渠道发布等能力,非常适合用来构建客服机器人、知识问答助手、企业内部工具、内容生成助手以及自动化工作流应用。
本文将以“从零到上线”为目标,系统讲解 Coze 应用的创建、配置、接口调用、后端封装、前端页面部署以及服务器上线流程,并提供一套可直接运行的示例源码,帮助你快速完成 Coze 项目的部署。
一、Coze 是什么?
Coze 是一个 AI Bot / Agent 开发平台,开发者可以在平台内创建智能体,并通过提示词、知识库、插件、工作流等方式增强其能力。相比传统方式直接调用大模型 API,Coze 的优势在于:
- 可视化配置智能体:无需大量代码即可完成角色设定、对话能力配置;
- 支持知识库问答:可以上传文档,让机器人基于指定资料回答问题;
- 支持工作流编排:通过流程节点实现复杂任务自动化;
- 支持插件调用:可接入第三方 API,例如天气、搜索、数据库、业务系统等;
- 支持 API 调用:方便开发者将 Coze 智能体集成到自己的网站、App 或企业系统中;
- 支持多渠道发布:如网页、飞书、微信公众号、Discord 等。
对于开发者来说,Coze 不只是一个聊天机器人平台,更像是一个低代码 AI 应用开发平台。
二、本文实现目标
本文将完成一个简单但完整的 Coze 部署案例:构建一个网页聊天助手,前端用户输入问题,后端调用 Coze API,最终将 AI 回复展示在页面上。
整体架构如下:
用户浏览器
↓
前端页面 Vue / HTML
↓
后端服务 Node.js / Express
↓
Coze API
↓
Coze 智能体回复
本文示例包含以下内容:
- 创建 Coze 智能体;
- 获取 Bot ID 和 API Token;
- 编写 Node.js 后端接口;
- 编写前端聊天页面;
- 本地运行测试;
- 使用 PM2 部署到服务器;
- 使用 Nginx 配置反向代理;
- 提供完整源码示例。
三、准备工作
在正式部署之前,你需要准备以下环境。
1. Coze 账号
你需要先注册并登录 Coze 平台。
国内用户通常可以使用扣子平台:
https://www.coze.cn/
海外用户可以使用国际版 Coze:
https://www.coze.com/
不同版本的 API 地址、鉴权方式可能略有差异,实际使用时请以官方文档为准。
2. Node.js 环境
本文后端使用 Node.js 和 Express。
建议版本:
node -v
# 推荐 v18.x 或以上
npm -v
# 推荐 9.x 或以上
如果服务器没有安装 Node.js,可以使用以下命令安装。
Ubuntu 示例:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
验证安装:
node -v
npm -v
3. 服务器环境
如果只是本地测试,可以暂时不准备服务器。
如果需要正式部署,建议准备:
- 一台 Linux 云服务器;
- 一个已备案或可访问的域名;
- Nginx;
- PM2;
- SSL 证书,推荐使用 Let’s Encrypt。
四、创建 Coze 智能体
登录 Coze 后,按照以下步骤创建 Bot。
1. 新建 Bot
进入 Coze 工作台,点击“创建 Bot”或“新建智能体”。
你可以填写如下信息:
Bot 名称:网站智能客服助手
Bot 描述:用于回答用户关于网站、产品、服务的问题
创建完成后,进入 Bot 编辑页面。
2. 配置角色设定
在提示词或角色设定中,可以写入如下内容:
你是一个专业、友好、耐心的网站客服助手。
你的任务是帮助用户解答关于产品、服务、价格、使用方法等方面的问题。
回答时要求:
1. 使用简洁清晰的中文;
2. 如果用户问题不明确,需要主动追问;
3. 如果涉及无法确认的信息,不要编造,应提示用户联系人工客服;
4. 回答应保持礼貌,不得出现攻击性语言。
这段提示词非常重要,它决定了智能体的基本行为风格。
3. 配置知识库
如果你希望机器人基于特定资料回答问题,可以添加知识库。
例如上传以下资料:
- 产品介绍文档;
- 常见问题 FAQ;
- 价格说明;
- 售后服务说明;
- 公司介绍;
- 使用手册。
知识库配置建议:
- 文档内容尽量结构清晰;
- 标题、段落、列表层级明确;
- 避免过多无关内容;
- 对常见问题单独整理成 FAQ;
- 定期更新知识库。
例如 FAQ 文档可以写成:
# 常见问题
## 产品支持试用吗?
支持。用户可以申请 7 天免费试用,试用期间可以体验基础功能。
## 如何联系客服?
用户可以通过官网在线客服、邮箱或电话联系我们。
## 是否支持开发票?
支持。企业用户可在付款后申请电子发票。
4. 测试 Bot 效果
在 Coze 编辑页面右侧通常会有测试窗口。你可以输入几个问题测试效果,例如:
你们的产品支持免费试用吗?
如果我想开发票,应该怎么操作?
我忘记密码了怎么办?
如果回答效果不好,可以继续调整提示词、知识库和工作流配置。
五、获取 Coze API 信息
要通过自己的后端调用 Coze,需要获取以下信息:
- API Token;
- Bot ID;
- User ID;
- API Endpoint。
1. 获取 API Token
一般可以在 Coze 平台的开发者设置、API 管理或个人令牌页面生成访问令牌。
示例格式类似:
pat_xxxxxxxxxxxxxxxxxxxxxxxxx
注意:API Token 属于敏感信息,不能写在前端代码中,也不能提交到 GitHub。
2. 获取 Bot ID
进入 Bot 设置页面,通常可以看到 Bot ID。
示例:
bot_id = 7420000000000000000
3. API 地址说明
不同版本 API 地址可能不同,示例中使用如下形式:
https://api.coze.cn/v3/chat
国际版可能类似:
https://api.coze.com/v3/chat
实际部署时请根据你使用的平台版本调整。
六、项目目录结构
下面是本文示例项目的目录结构:
coze-chat-demo/
├── server/
│ ├── app.js
│ ├── package.json
│ └── .env
└── web/
├── index.html
├── style.css
└── main.js
其中:
server是 Node.js 后端;web是前端静态页面;.env用来保存环境变量;app.js负责调用 Coze API;index.html是聊天页面。
七、后端源码
1. 初始化后端项目
进入项目目录:
mkdir coze-chat-demo
cd coze-chat-demo
mkdir server
cd server
npm init -y
安装依赖:
npm install express cors dotenv axios
如果需要生产环境部署,也可以安装 PM2:
npm install pm2 -g
2. package.json
创建或修改 server/package.json:
{
"name": "coze-chat-server",
"version": "1.0.0",
"description": "Coze chat backend demo",
"main": "app.js",
"scripts": {
"start": "node app.js",
"dev": "node app.js"
},
"dependencies": {
"axios": "^1.6.8",
"cors": "^2.8.5",
"dotenv": "^16.4.5",
"express": "^4.18.3"
}
}
3. 配置环境变量
在 server 目录下创建 .env 文件:
PORT=3000
COZE_API_URL=https://api.coze.cn/v3/chat
COZE_API_TOKEN=你的_COZE_API_TOKEN
COZE_BOT_ID=你的_BOT_ID
COZE_USER_ID=web_user_001
说明:
PORT:后端服务端口;COZE_API_URL:Coze API 地址;COZE_API_TOKEN:你的访问令牌;COZE_BOT_ID:你的 Bot ID;COZE_USER_ID:用户标识,可以根据业务动态生成。
请注意,.env 文件不要提交到公开代码仓库。
4. app.js 后端接口源码
创建 server/app.js:
const express = require("express");
const cors = require("cors");
const dotenv = require("dotenv");
const axios = require("axios");
dotenv.config();
const app = express();
app.use(cors());
app.use(express.json());
const PORT = process.env.PORT || 3000;
const COZE_API_URL = process.env.COZE_API_URL;
const COZE_API_TOKEN = process.env.COZE_API_TOKEN;
const COZE_BOT_ID = process.env.COZE_BOT_ID;
const COZE_USER_ID = process.env.COZE_USER_ID || "default_user";
if (!COZE_API_URL || !COZE_API_TOKEN || !COZE_BOT_ID) {
console.error("缺少 Coze API 配置,请检查 .env 文件");
process.exit(1);
}
app.get("/", (req, res) => {
res.send("Coze Chat Server is running.");
});
app.post("/api/chat", async (req, res) => {
try {
const { message, userId } = req.body;
if (!message || typeof message !== "string") {
return res.status(400).json({
success: false,
message: "message 不能为空"
});
}
const requestBody = {
bot_id: COZE_BOT_ID,
user_id: userId || COZE_USER_ID,
stream: false,
additional_messages: [
{
role: "user",
content: message,
content_type: "text"
}
]
};
const response = await axios.post(COZE_API_URL, requestBody, {
headers: {
Authorization: `Bearer ${COZE_API_TOKEN}`,
"Content-Type": "application/json"
},
timeout: 30000
});
const data = response.data;
return res.json({
success: true,
data
});
} catch (error) {
console.error("调用 Coze API 失败:", error.response?.data || error.message);
return res.status(500).json({
success: false,
message: "调用 Coze API 失败",
error: error.response?.data || error.message
});
}
});
app.listen(PORT, () => {
console.log(`Coze Chat Server started at http://localhost:${PORT}`);
});
这个接口的作用是:
- 接收前端传来的用户消息;
- 组装 Coze API 请求参数;
- 将请求发送给 Coze;
- 把 Coze 返回结果转发给前端。
八、前端源码
接下来编写一个简单的聊天页面。
1. 创建前端目录
回到项目根目录:
cd ..
mkdir web
cd web
2. index.html
创建 web/index.html:
Coze 智能聊天助手
Coze 智能聊天助手
基于 Coze API 构建的网页聊天机器人
3. style.css
创建 web/style.css:
* {
box-sizing: border-box;
}
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Microsoft YaHei", sans-serif;
background: linear-gradient(135deg, #eef2ff, #f8fafc);
color: #1f2937;
}
.chat-container {
width: 100%;
max-width: 860px;
height: 100vh;
margin: 0 auto;
display: flex;
flex-direction: column;
background: #ffffff;
box-shadow: 0 10px 40px rgba(15, 23, 42, 0.12);
}
.chat-header {
padding: 20px 24px;
background: #2563eb;
color: #ffffff;
}
.chat-header h1 {
margin: 0;
font-size: 22px;
}
.chat-header p {
margin: 6px 0 0;
opacity: 0.9;
font-size: 14px;
}
.chat-messages {
flex: 1;
overflow-y: auto;
padding: 24px;
background: #f8fafc;
}
.message {
display: flex;
gap: 12px;
margin-bottom: 18px;
align-items: flex-start;
}
.message.user {
flex-direction: row-reverse;
}
.avatar {
width: 36px;
height: 36px;
border-radius: 50%;
flex-shrink: 0;
background: #2563eb;
color: #ffffff;
display: flex;
align-items: center;
justify-content: center;
font-size: 13px;
font-weight: bold;
}
.message.user .avatar {
background: #16a34a;
}
.bubble {
max-width: 72%;
padding: 12px 14px;
border-radius: 12px;
background: #ffffff;
line-height: 1.7;
font-size: 15px;
white-space: pre-wrap;
box-shadow: 0 2px 8px rgba(15, 23, 42, 0.08);
}
.message.user .bubble {
background: #dcfce7;
}
.chat-input-area {
display: flex;
gap: 12px;
padding: 16px;
border-top: 1px solid #e5e7eb;
background: #ffffff;
}
textarea {
flex: 1;
resize: none;
border: 1px solid #d1d5db;
border-radius: 10px;
padding: 12px;
font-size: 15px;
outline: none;
font-family: inherit;
}
textarea:focus {
border-color: #2563eb;
}
button {
width: 92px;
border: none;
border-radius: 10px;
background: #2563eb;
color: #ffffff;
font-size: 15px;
cursor: pointer;
}
button:hover {
background: #1d4ed8;
}
button:disabled {
background: #94a3b8;
cursor: not-allowed;
}
4. main.js
创建 web/main.js:
const chatMessages = document.getElementById("chatMessages");
const messageInput = document.getElementById("messageInput");
const sendBtn = document.getElementById("sendBtn");
const API_URL = "http://localhost:3000/api/chat";
function appendMessage(role, content) {
const messageEl = document.createElement("div");
messageEl.className = `message ${role}`;
const avatarEl = document.createElement("div");
avatarEl.className = "avatar";
avatarEl.textContent = role === "user" ? "我" : "AI";
const bubbleEl = document.createElement("div");
bubbleEl.className = "bubble";
bubbleEl.textContent = content;
messageEl.appendChild(avatarEl);
messageEl.appendChild(bubbleEl);
chatMessages.appendChild(messageEl);
chatMessages.scrollTop = chatMessages.scrollHeight;
}
function extractCozeAnswer(data) {
/**
* 注意:
* Coze API 返回结构可能因版本不同而变化。
* 这里做一个兼容性解析,你可以根据实际返回结果调整。
*/
if (!data) return "";
if (typeof data === "string") return data;
if (data.messages && Array.isArray(data.messages)) {
const answer = data.messages.find(item => item.role === "assistant");
if (answer) return answer.content || "";
}
if (data.data && data.data.messages && Array.isArray(data.data.messages)) {
const answer = data.data.messages.find(item => item.role === "assistant");
if (answer) return answer.content || "";
}
if (data.data && data.data.answer) {
return data.data.answer;
}
return JSON.stringify(data, null, 2);
}
async function sendMessage() {
const text = messageInput.value.trim();
if (!text) return;
appendMessage("user", text);
messageInput.value = "";
sendBtn.disabled = true;
sendBtn.textContent = "发送中";
appendMessage("bot", "正在思考中...");
try {
const response = await fetch(API_URL, {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
message: text,
userId: "web_user_" + Date.now()
})
});
const result = await response.json();
const lastBotBubble = chatMessages.querySelector(".message.bot:last-child .bubble");
if (!result.success) {
lastBotBubble.textContent = result.message || "请求失败";
return;
}
const answer = extractCozeAnswer(result.data);
lastBotBubble.textContent = answer || "未获取到有效回复,请检查接口返回结构。";
} catch (error) {
const lastBotBubble = chatMessages.querySelector(".message.bot:last-child .bubble");
lastBotBubble.textContent = "网络请求失败,请稍后重试。";
console.error(error);
} finally {
sendBtn.disabled = false;
sendBtn.textContent = "发送";
}
}
sendBtn.addEventListener("click", sendMessage);
messageInput.addEventListener("keydown", event => {
if (event.ctrlKey && event.key === "Enter") {
sendMessage();
}
});
这里需要注意,API_URL 在本地测试时使用:
const API_URL = "http://localhost:3000/api/chat";
如果部署到线上,建议改成:
const API_URL = "/api/chat";
然后通过 Nginx 将 /api 转发到后端服务。
九、本地运行测试
1. 启动后端服务
进入 server 目录:
cd coze-chat-demo/server
npm install
npm start
如果配置正确,终端会输出:
Coze Chat Server started at http://localhost:3000
访问:
http://localhost:3000
如果看到:
Coze Chat Server is running.
说明后端启动成功。
2. 启动前端页面
前端是静态页面,可以直接用浏览器打开 web/index.html。
更推荐使用本地静态服务器,例如:
cd coze-chat-demo/web
npx serve .
或者使用 VS Code 的 Live Server 插件。
打开页面后,输入问题,例如:
你能介绍一下你们的产品吗?
如果配置无误,页面会显示 Coze 返回的回答。
十、处理 Coze 异步会话返回问题
部分 Coze API 的调用流程不是一次请求直接返回完整答案,而是:
- 创建会话或发起 Chat;
- 获取 Chat ID;
- 轮询查询 Chat 状态;
- 获取最终消息列表。
如果你使用的接口返回类似:
{
"data": {
"id": "chat_xxx",
"conversation_id": "xxx",
"status": "in_progress"
}
}
那么说明你需要继续调用查询接口获取最终回复。
后端逻辑可以改成:
POST /v3/chat
↓
GET /v3/chat/retrieve
↓
GET /v3/chat/message/list
示例伪代码如下:
async function waitForChatComplete(chatId, conversationId) {
for (let i = 0; i < 20; i++) {
const statusRes = await axios.get("https://api.coze.cn/v3/chat/retrieve", {
headers: {
Authorization: `Bearer ${COZE_API_TOKEN}`
},
params: {
chat_id: chatId,
conversation_id: conversationId
}
});
const status = statusRes.data?.data?.status;
if (status === "completed") {
return true;
}
if (status === "failed") {
throw new Error("Coze chat failed");
}
await new Promise(resolve => setTimeout(resolve, 1000));
}
throw new Error("Coze chat timeout");
}
由于 Coze API 版本会更新,实际接口参数请以官方文档为准。部署时一定要先打印完整返回值,根据真实结构提取答案。
十一、服务器部署
下面以 Ubuntu 服务器为例。
1. 上传项目
可以使用 Git:
git clone https://你的仓库地址/coze-chat-demo.git
cd coze-chat-demo
也可以用 scp 上传:
scp -r coze-chat-demo root@你的服务器IP:/www/
2. 安装后端依赖
cd /www/coze-chat-demo/server
npm install
配置 .env:
vim .env
写入:
PORT=3000
COZE_API_URL=https://api.coze.cn/v3/chat
COZE_API_TOKEN=你的真实Token
COZE_BOT_ID=你的真实BotID
COZE_USER_ID=prod_user
3. 使用 PM2 启动服务
安装 PM2:
npm install pm2 -g
启动:
pm2 start app.js --name coze-chat-server
查看状态:
pm2 list
查看日志:
pm2 logs coze-chat-server
设置开机自启:
pm2 startup
pm2 save
十二、Nginx 部署前端与反向代理
1. 安装 Nginx
sudo apt update
sudo apt install nginx -y
2. 配置站点
假设项目路径为:
/www/coze-chat-demo/web
域名为:
chat.example.com
创建 Nginx 配置:
sudo vim /etc/nginx/sites-available/coze-chat.conf
写入:
server {
listen 80;
server_name chat.example.com;
root /www/coze-chat-demo/web;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://127.0.0.1:3000/api/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
}
}
启用配置:
sudo ln -s /etc/nginx/sites-available/coze-chat.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
此时访问:
http://chat.example.com
即可打开聊天页面。
十三、配置 HTTPS
生产环境建议启用 HTTPS。
安装 Certbot:
sudo apt install certbot python3-certbot-nginx -y
申请证书:
sudo certbot --nginx -d chat.example.com
按照提示操作即可。
证书自动续期检查:
sudo certbot renew --dry-run
十四、安全注意事项
部署 Coze 项目时,安全问题非常重要。
1. 不要把 Token 暴露到前端
错误示例:
const token = "pat_xxxxx";
如果把 Token 写在前端,任何用户都可以通过浏览器开发者工具看到,从而盗用你的 API 额度。
正确做法是:
- Token 只保存在后端;
- 前端只请求自己的后端接口;
- 后端再调用 Coze API。
2. 增加接口限流
为了防止恶意刷接口,可以使用 express-rate-limit。
安装:
npm install express-rate-limit
示例:
const rateLimit = require("express-rate-limit");
const limiter = rateLimit({
windowMs: 60 * 1000,
max: 30,
message: {
success: false,
message: "请求过于频繁,请稍后再试"
}
});
app.use("/api/", limiter);
3. 校验用户输入
后端应限制输入长度:
if (message.length > 2000) {
return res.status(400).json({
success: false,
message: "输入内容过长"
});
}
这样可以避免异常请求导致成本过高。
4. 日志脱敏
生产环境中不要直接打印用户隐私信息,也不要打印完整 Token。
可以只打印必要错误:
console.error("Coze API error:", error.response?.status, error.response?.data?.msg);
十五、常见问题排查
1. 后端提示缺少配置
如果启动时报错:
缺少 Coze API 配置,请检查 .env 文件
请检查:
.env是否在server目录;- 变量名是否写错;
- 是否安装了
dotenv; - 是否重新启动了服务。
2. Coze API 返回 401
通常是 Token 错误或过期。
解决方法:
- 重新生成 API Token;
- 检查请求头是否包含
Authorization: Bearer xxx; - 确认使用的是国内版还是国际版 API 地址。
3. Coze API 返回 404
常见原因:
- API 地址错误;
- Bot ID 错误;
- 使用了错误版本的接口;
- Bot 没有发布或没有开启 API 调用权限。
4. 前端请求失败
如果浏览器控制台显示跨域错误,可以:
- 后端开启 CORS;
- 使用 Nginx 反向代理;
- 前端请求使用相对路径
/api/chat。
5. 页面显示原始 JSON
说明返回结构与示例解析逻辑不一致。你可以在后端打印:
console.log(JSON.stringify(response.data, null, 2));
然后根据真实字段修改 extractCozeAnswer 函数。
十六、完整部署流程总结
完整流程可以总结为:
注册 Coze
↓
创建 Bot
↓
配置提示词和知识库
↓
获取 Token 和 Bot ID
↓
编写后端接口
↓
编写前端页面
↓
本地测试
↓
上传服务器
↓
PM2 启动后端
↓
Nginx 部署前端
↓
配置 HTTPS
↓
正式上线
如果你只是做 Demo,本地部署即可;如果是企业项目,建议重点关注安全、限流、日志、权限、知识库维护和接口成本控制。
十七、源码汇总
为了方便复制,下面给出核心源码清单。
后端 app.js
const express = require("express");
const cors = require("cors");
const dotenv = require("dotenv");
const axios = require("axios");
dotenv.config();
const app = express();
app.use(cors());
app.use(express.json());
const PORT = process.env.PORT || 3000;
const COZE_API_URL = process.env.COZE_API_URL;
const COZE_API_TOKEN = process.env.COZE_API_TOKEN;
const COZE_BOT_ID = process.env.COZE_BOT_ID;
const COZE_USER_ID = process.env.COZE_USER_ID || "default_user";
app.post("/api/chat", async (req, res) => {
try {
const { message, userId } = req.body;
if (!message) {
return res.status(400).json({
success: false,
message: "message 不能为空"
});
}
const response = await axios.post(
COZE_API_URL,
{
bot_id: COZE_BOT_ID,
user_id: userId || COZE_USER_ID,
stream: false,
additional_messages: [
{
role: "user",
content: message,
content_type: "text"
}
]
},
{
headers: {
Authorization: `Bearer ${COZE_API_TOKEN}`,
"Content-Type": "application/json"
}
}
);
res.json({
success: true,
data: response.data
});
} catch (error) {
res.status(500).json({
success: false,
message: "调用 Coze API 失败",
error: error.response?.data || error.message
});
}
});
app.listen(PORT, () => {
console.log(`server running at http://localhost:${PORT}`);
});
前端 main.js
const API_URL = "/api/chat";
async function askCoze(message) {
const response = await fetch(API_URL, {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
message
})
});
return response.json();
}
十八、结语
通过本文的完整教程,你已经可以完成一个基于 Coze 的网页智能助手部署。从平台侧的 Bot 创建,到后端 API 封装,再到前端页面开发和服务器上线,整个流程已经覆盖了实际项目中最常见的部署场景。
Coze 的优势在于降低了 AI 应用开发门槛,但真正上线一个稳定可用的 AI 应用,仍然需要关注接口安全、并发限制、用户体验、错误处理和知识库维护。建议你在本文 Demo 的基础上继续扩展,例如增加用户登录、历史会话、流式输出、Markdown 渲染、文件上传、人工客服转接、多 Bot 切换等功能。
如果你希望将这个项目进一步产品化,可以优先优化以下方向:
- 接入流式输出,提升对话体验;
- 增加数据库保存聊天记录;
- 对接企业微信、公众号或飞书;
- 增加后台管理系统;
- 对用户问题做分类和统计;
- 定期更新知识库内容;
- 对异常问题增加人工兜底机制。
至此,一个完整的 Coze 部署项目就完成了。你可以直接复制本文源码进行测试,也可以根据自己的业务场景进行二次开发。