扣子Bot开发:从入门到精通
适合人群
这是一篇进阶教程,适合已经了解Coze基础、会创建简单Bot的读者。如果你是纯新手,建议先看看《怎样部署一个自己的AI Agent》入门篇。
上篇文章我们讲了怎么用Coze(扣子)快速搭一个能跑起来的Bot。但那只是皮毛,真正让Bot好用的东西——插件、知识库、工作流——还没展开讲。今天咱们就来深入聊聊扣子Bot的开发技巧,让你从一个”会用”的用户升级成”会造”的开发者。
Coze Bot 的核心架构
在开始之前,咱们先搞清楚一个Bot到底是怎么工作的:
用户消息 → 【输入处理】 → 【意图识别】 → 【任务分发】
↓
┌─────────┬─────────┬─────────┐
↓ ↓ ↓ ↓
知识库 插件 工作流 直接回答
↓ ↓ ↓ ↓
└─────────┴─────────┴─────────┘
↓
【回答生成】 → 用户
意图识别是Bot的”大脑”,它决定用户的问题该交给谁处理。知识库存储的是”静态知识”,适合FAQ类的问答。插件是”工具箱”,让Bot能调用外部服务。工作流是”流水线”,处理复杂的业务流程。
进阶一:写出让AI”听话”的Prompt
前面说过,Prompt是Bot的灵魂。但很多人写的Prompt要么太笼统、要么太啰嗦,AI根本get不到点。下面分享几个实用的Prompt写作技巧。
技巧1:角色要具体,不要泛泛而谈
错误示范:
你是一个AI助手,你要帮助用户回答问题,你要友好、专业、准确...
问题: 什么叫”友好”?什么叫”专业”?AI理解不了这种模糊的要求。
正确示范:
你是一个五星级酒店的前台接待AI,名叫"小礼"。
## 言行规范
- 说话语气:亲切但不献媚,专业但不冰冷
- 称呼习惯:称呼客人为"您",自称"小礼"
- 回答长度:简单问题一句话,复杂问题最多三段
- 表情符号:适当使用 😊 👍 🙏 等,拉近距离
## 绝对禁止
- 不说"我不知道"或"这个我不懂"
- 不说任何带负面情绪的话
- 不主动推销或引导额外消费
- 不承诺超出职责范围的事
技巧2:用”例子”引导输出格式
想让AI按照特定格式回答?给它看例子:
请将用户输入的新闻标题翻译成英文。
## 输出格式示例
输入:人工智能正在改变我们的生活方式
输出:AI is Transforming Our Way of Life
输入:最新研究表明每天喝咖啡可以延年益寿
输出:Latest Research Shows Daily Coffee May Extend Lifespan
## 要求
- 标题首字母大写
- 保留原意,不增不减
- 直接输出翻译结果,不要解释
技巧3:设置”护栏”,防止AI跑偏
有时候AI会”自作主张”,说出一些不该说的话。这时候需要设置护栏:
你是一个保险咨询顾问。
## 你的职责
- 回答产品相关的咨询问题
- 提供投保建议
- 介绍理赔流程
## 严格禁止
❌ 不提供具体的投资建议
❌ 不承诺任何投资收益
❌ 不评价其他保险公司或产品
❌ 不代替用户做投保决定
## 边界话术
遇到无法回答的问题,使用以下话术:
- "这类问题建议您咨询专业的理财顾问"
- "具体情况需要根据您的实际需求来分析"
- "我可以帮您介绍产品特点,决定权在您"
技巧4:用变量管理复杂状态
Bot里可以设置变量来管理状态,比如记录用户的会员等级、咨询类型等:
# Bot变量配置
variables:
- name: user_level
type: string
default: "普通用户"
description: "用户会员等级"
- name: session_topic
type: string
default: "general"
description: "当前会话主题"
- name: consecutive_unanswered
type: number
default: 0
description: "连续无法回答的次数"在Prompt里可以这样用:
当前用户是【{{user_level}}】,正在咨询【{{session_topic}}】相关问题。
{% if user_level == "VIP会员" %}
VIP用户享有优先服务权,请额外提供:
- 专属顾问联系方式
- 快速理赔通道说明
{% endif %}
进阶二:插件系统——让Bot连接真实世界
插件是扣子最强大的功能之一。通过插件,你的Bot可以”调用”各种外部服务,从查天气到发邮件,样样都行。
什么是插件?
你可以把插件理解为Bot的”技能包”。每个插件提供一组相关的API能力,Bot需要时就会调用它们。
比如你添加了一个”天气查询”插件,Bot就能回答”北京今天多少度”这种问题;添加一个”新闻搜索”插件,Bot就能告诉你”今天有什么大新闻”。
官方插件怎么用?
扣子平台内置了很多官方插件,用法很简单:
- 在Bot编辑页面,找到「插件」区域
- 点击「添加插件」
- 搜索需要的插件,比如”天气”
- 点击添加即可
常用官方插件推荐
信息查询类
- Google搜索/Bing搜索:实时搜索网络信息
- 天气查询:获取实时天气数据
- 新闻资讯:获取最新新闻
效率工具类
- 飞书云文档:读写飞书文档
- Notion:读写Notion笔记
- 邮件发送:发送邮件
生活服务类
- 快递查询:查询快递物流
- 机票查询:查询航班信息
- 翻译插件:多语言翻译
自定义插件开发
官方插件不够用?你可以开发自己的插件!
方式一:导入OpenAPI
如果你有现成的API,可以直接导入:
- 准备API文档(需要OpenAPI/Swagger格式)
- 在「插件」页面点击「创建插件」
- 选择「导入OpenAPI」
- 填入API的URL地址
- 系统会自动解析API结构
- 调整参数配置,保存即可
方式二:从零开发
需要开发一个完整的插件?可以这样做:
- 在「插件」页面点击「创建插件」
- 选择「自定义开发」
- 定义插件名称、描述
- 添加API端点:
# 插件配置示例
plugin:
name: "产品查询"
description: "查询公司产品信息"
# API端点定义
endpoints:
- name: "get_product"
description: "根据产品ID查询产品详情"
method: "GET"
path: "/products/{product_id}"
parameters:
- name: "product_id"
in: "path"
type: "string"
required: true
description: "产品ID"
response:
schema:
type: "object"
properties:
name:
type: "string"
description: "产品名称"
price:
type: "number"
description: "产品价格"
stock:
type: "integer"
description: "库存数量"插件使用技巧
技巧1:插件描述要写清楚
AI是根据插件的描述来决定是否调用的。描述写不清楚,AI就不知道什么时候该用。
好的描述:
天气查询插件
- 输入:城市名称(支持中英文)
- 输出:温度、湿度、天气状况、空气质量
- 适用:用户问天气、温度、穿衣建议等
差的描述:
查询天气信息
技巧2:一个插件专注一件事
不要做一个”万能插件”,而是做多个”专注插件”。
错误做法:
我的插件能做:
- 查天气
- 搜新闻
- 发邮件
- 查快递
- 订机票
- 预约会议室
正确做法:
拆分成6个独立插件:
- 天气查询插件
- 新闻搜索插件
- 邮件发送插件
- 快递查询插件
- 机票预订插件
- 日程管理插件
技巧3:善用插件组合
把多个插件组合使用,能实现复杂功能:
用户说:"帮我查一下上海明天天气,如果下雨就给我订个带会议室的酒店"
Bot的处理流程:
1. 调用天气插件 → 查到明天上海有雨
2. 调用酒店预订插件 → 搜索带会议室的酒店
3. 调用邮件插件 → 把预订信息发给你
进阶三:知识库——让Bot成为领域专家
如果你的Bot需要回答特定领域的问题(比如公司产品、专业知识),光靠Prompt是不够的。这时候需要知识库。
什么是知识库?
知识库就是一个”资料库”,里面存储了大量的文档(FAQ、产品手册、技术文档等)。当用户提问时,Bot会先去知识库里检索相关内容,再结合这些内容生成回答。
创建知识库的步骤
- 在扣子平台左侧菜单找到「知识库」
- 点击「创建知识库」
- 填写知识库名称和描述
- 上传文档(支持PDF、Word、TXT、Markdown等格式)
- 等待系统处理完成
文档准备建议
- 结构清晰:使用标题、列表、表格等结构
- 内容准确:知识库的质量直接决定回答质量
- 格式规范:避免扫描件PDF(文字无法识别)
- 定期更新:知识库内容要及时同步最新信息
知识库的使用技巧
技巧1:文档分段有讲究
上传文档后,系统会自动分段。但自动分段不一定合理,你需要人工调整:
- 每段内容要完整:一段讲完一个知识点,不要在句子中间断开
- 段落长度适中:太短(少于100字)会丢失上下文;太长(超过1000字)会影响检索精度
- 标题要清晰:好的标题能帮助系统理解内容
技巧2:FAQ格式效果最好
如果你有常见的问答对,建议整理成FAQ格式上传:
Q: 你们公司的办公地址在哪里?
A: 我们公司位于北京市朝阳区建国路88号SOHO现代城A座15层。
Q: 客服的工作时间是?
A: 人工客服工作时间为周一至周五 9:00-18:00,节假日除外。其他时间您可以通过自助服务或留言联系我们。
Q: 如何申请退款?
A: 退款申请可以通过以下方式提交:
1. 在APP内"我的订单"中申请
2. 拨打客服热线 400-xxx-xxxx
退款会在1-7个工作日内原路返回。
技巧3:设置知识库召回参数
在Bot配置中,可以调整知识库的召回参数:
retrieval:
top_k: 5 # 召回多少条相关文档
score_threshold: 0.7 # 相似度阈值,低于这个分数的不召回
# 召回模式
mode:
- semantic # 语义召回(理解意思)
- keyword # 关键词召回(匹配字眼)多知识库管理
如果Bot需要回答多种类型的问题,可以创建多个知识库:
知识库1:产品知识库
- 产品介绍
- 使用手册
- 技术规格
知识库2:政策知识库
- 售后政策
- 隐私政策
- 用户协议
知识库3:常见问题库
- FAQ问答对
- 故障排除指南
在Bot中分别添加这些知识库,并在Prompt里指定使用场景:
当用户问到产品相关问题时,优先使用【产品知识库】检索。
当用户问到政策相关问题时,使用【政策知识库】检索。
当用户问到一般问题时,使用【常见问题库】检索。
进阶四:工作流——编排复杂的业务流程
当Bot需要处理复杂的业务流程时,简单的”问答”模式就不够用了。这时候需要工作流。
什么是工作流?
工作流就是把一个复杂的任务拆成多个步骤,然后按顺序(或并行)执行这些步骤。每个步骤叫做一个”节点”,节点之间用线连接,表示数据的流向。
工作流节点类型
扣子支持以下几种节点:
| 节点类型 | 作用 | 举例 |
|---|---|---|
| LLM节点 | 调用大语言模型处理文本 | 分析用户意图、生成回答 |
| 插件节点 | 调用插件执行操作 | 查天气、发邮件 |
| 知识库节点 | 检索知识库内容 | 查询产品信息 |
| 代码节点 | 执行自定义代码逻辑 | 数据处理、格式转换 |
| 条件节点 | 根据条件分流 | 根据用户类型走不同流程 |
| 循环节点 | 重复执行某操作 | 遍历列表、批量处理 |
| 变量节点 | 定义和修改变量 | 记录用户状态 |
工作流设计示例
示例1:订单处理工作流
用户问:"我想查一下我的订单状态"
↓
【意图识别】→ 判断是"订单查询"
↓
【提取订单号】→ 从用户消息中提取订单号
↓
【查询订单】→ 调用订单API
↓
【判断状态】
├─ 已发货 → 【生成物流信息】→ 告诉用户快递单号
├─ 处理中 → 【生成处理进度】→ 告诉用户预计时间
└─ 已取消 → 【生成取消说明】→ 告诉用户取消原因
示例2:投诉处理工作流
用户发送投诉内容
↓
【情绪分析】→ 分析用户情绪(愤怒/不满/一般)
↓
【判断情绪】
├─ 愤怒 → 【优先安抚】→ "非常抱歉给您带来不好的体验..."
├─ 不满 → 【正常处理】→ "感谢您的反馈,我们会尽快处理"
└─ 一般 → 【标准流程】→ "感谢您的建议"
↓
【问题分类】→ 判断是产品质量/服务态度/物流问题
↓
【知识库检索】→ 查询相关处理方案
↓
【生成回复】→ 结合情绪+类型+方案,生成个性化回复
↓
【创建工单】→ 记录到工单系统
工作流调试技巧
技巧1:单节点测试
工作流做好后,不要一次性运行。先点击单个节点,单独测试它的输入输出是否正确。
技巧2:添加日志节点
在关键节点后面加一个”消息”节点,输出中间变量值,方便排查问题:
【数据处理节点】
↓
【调试日志】→ 输出:processed_data = {{processed_data}}
↓
【下一步处理】
技巧3:设置超时和重试
外部API可能不稳定,给关键节点设置超时和重试:
plugin_node:
timeout: 30 # 超时30秒
retry:
enabled: true
max_attempts: 3 # 最多重试3次
delay: 5 # 重试间隔5秒进阶五:多Bot协作
一个Bot能力有限,但多个Bot协作就能完成更复杂的任务。
什么是多Bot协作?
就像一个公司里有不同部门的员工一样,你可以创建多个专业的Bot,每个Bot负责一个领域,然后让它们配合工作。
用户 → 【前台Bot】→ 理解需求、分发任务
↓
┌──────────┼──────────┐
↓ ↓ ↓
【产品Bot】 【售后Bot】 【订单Bot】
↓ ↓ ↓
└──────────┼──────────┘
↓
【前台Bot】→ 整合回答、返回用户
多Bot的实现方式
方式1:Coze工作流
在Coze的工作流里,可以通过不同节点调用不同的Bot子流程。
方式2:API调用
通过HTTP节点调用其他Bot的API:
【HTTP请求节点】
method: POST
url: https://api.coze.cn/v1/bot/chat
headers:
Authorization: Bearer {{bot_token}}
body:
bot_id: {{other_bot_id}}
user_id: {{user_id}}
query: {{processed_query}}
多Bot设计原则
原则1:职责单一 每个Bot只负责一个领域,不要让Bot”什么都会”。
原则2:接口清晰 Bot之间通过标准化的接口通信,定义好输入输出的格式。
原则3:容错设计 某个Bot挂了不影响整体,要有降级方案。
原则4:统一入口 用户只接触前台Bot,不知道后面有多个Bot在协作。
进阶六:Bot发布与运营
Bot做好了,接下来要发布出去让用户使用。这一步也有很多讲究。
发布渠道
国内版(coze.cn)支持的渠道:
| 渠道 | 特点 | 适合场景 |
|---|---|---|
| Bot商店 | 公开在扣子平台展示 | 公开Bot,面向所有用户 |
| 豆包 | 抖音系核心产品 | 快速获取大量用户 |
| 飞书 | 企业协作平台 | 企业内部使用 |
| 微信客服 | 企业微信 | 客服场景 |
| 微信公众号 | 微信生态 | 内容服务 |
| 掘金 | 开发者社区 | 技术内容Bot |
国际版(coze.com)支持的渠道:
Discord、Telegram、Messenger、Slack、Instagram、LINE、WhatsApp等主流社交平台。
发布前检查清单
发布前检查以下项目,确保Bot质量:
## 功能检查
- [ ] 所有主要对话路径都测试过了吗?
- [ ] 插件调用正常吗?
- [ ] 知识库召回准确吗?
- [ ] 工作流执行无误吗?
## 内容检查
- [ ] 是否有错别字?
- [ ] 回复语气符合角色设定吗?
- [ ] 有没有敏感词/不当内容?
- [ ] 回答是否准确无误?
## 体验检查
- [ ] 开场白吸引人吗?
- [ ] 回复速度可以接受吗?
- [ ] 错误提示友好吗?
- [ ] 有没有死循环/无限等待的情况?上线后的运营
Bot上线不是终点,而是起点。需要持续运营:
1. 数据监控
- 追踪Bot的调用量、用户数、对话轮次
- 分析高频问题,优化知识库
- 监控回答质量,及时发现问题
2. 持续优化
- 根据用户反馈调整Prompt
- 更新知识库内容
- 添加新的插件能力
- 优化工作流效率
3. 用户反馈
- 设置反馈入口,收集用户意见
- 分析差评原因,针对性改进
- 定期做用户调研
常见问题与解决方案
Q1:Bot回答总是”答非所问”
原因分析:
- Prompt写得太模糊
- 知识库内容不匹配
- 意图识别不准确
解决方案:
- 优化Prompt,写得更具体
- 调整知识库召回参数
- 添加更多示例帮助AI理解
Q2:插件调用失败怎么办?
解决方案:
- 检查API凭证是否有效
- 查看插件调用日志
- 设置降级方案(插件不可用时的备选回答)
Q3:知识库检索不准怎么办?
解决方案:
- 检查文档分段是否合理
- 调整top_k和score_threshold参数
- 尝试不同的检索模式(语义/关键词/混合)
Q4:Bot响应很慢怎么优化?
解决方案:
- 减少工作流的节点数量
- 并行执行可以并行的节点
- 优化API调用逻辑,避免串行等待
- 对静态数据做缓存
进阶学习路径
恭喜你!学完这篇教程,你已经是扣子开发的高手了。接下来可以继续深入:
- 插件开发:学习用代码开发更复杂的插件
- 多Agent架构:研究多Bot协作的高级模式
- 数据驱动优化:用数据分析提升Bot质量
- 企业级部署:了解Coze的企业版能力
相关资源
- Coze平台深度指南 - 平台完整功能介绍
- 智能体搭建 - AI Agent核心概念
- 工作流设计模式 - 通用工作流设计原则
- Function Calling与工具调用 - 工具调用规范
动手试试!
学完这篇教程,挑一个你想做的Bot类型,开始动手实践吧!有什么问题欢迎评论区交流。