扣子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就能告诉你”今天有什么大新闻”。

官方插件怎么用?

扣子平台内置了很多官方插件,用法很简单:

  1. 在Bot编辑页面,找到「插件」区域
  2. 点击「添加插件」
  3. 搜索需要的插件,比如”天气”
  4. 点击添加即可

常用官方插件推荐

信息查询类

  • Google搜索/Bing搜索:实时搜索网络信息
  • 天气查询:获取实时天气数据
  • 新闻资讯:获取最新新闻

效率工具类

  • 飞书云文档:读写飞书文档
  • Notion:读写Notion笔记
  • 邮件发送:发送邮件

生活服务类

  • 快递查询:查询快递物流
  • 机票查询:查询航班信息
  • 翻译插件:多语言翻译

自定义插件开发

官方插件不够用?你可以开发自己的插件!

方式一:导入OpenAPI

如果你有现成的API,可以直接导入:

  1. 准备API文档(需要OpenAPI/Swagger格式)
  2. 在「插件」页面点击「创建插件」
  3. 选择「导入OpenAPI」
  4. 填入API的URL地址
  5. 系统会自动解析API结构
  6. 调整参数配置,保存即可

方式二:从零开发

需要开发一个完整的插件?可以这样做:

  1. 在「插件」页面点击「创建插件」
  2. 选择「自定义开发」
  3. 定义插件名称、描述
  4. 添加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会先去知识库里检索相关内容,再结合这些内容生成回答。

创建知识库的步骤

  1. 在扣子平台左侧菜单找到「知识库」
  2. 点击「创建知识库」
  3. 填写知识库名称和描述
  4. 上传文档(支持PDF、Word、TXT、Markdown等格式)
  5. 等待系统处理完成

文档准备建议

  • 结构清晰:使用标题、列表、表格等结构
  • 内容准确:知识库的质量直接决定回答质量
  • 格式规范:避免扫描件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写得太模糊
  • 知识库内容不匹配
  • 意图识别不准确

解决方案:

  1. 优化Prompt,写得更具体
  2. 调整知识库召回参数
  3. 添加更多示例帮助AI理解

Q2:插件调用失败怎么办?

解决方案:

  1. 检查API凭证是否有效
  2. 查看插件调用日志
  3. 设置降级方案(插件不可用时的备选回答)

Q3:知识库检索不准怎么办?

解决方案:

  1. 检查文档分段是否合理
  2. 调整top_k和score_threshold参数
  3. 尝试不同的检索模式(语义/关键词/混合)

Q4:Bot响应很慢怎么优化?

解决方案:

  1. 减少工作流的节点数量
  2. 并行执行可以并行的节点
  3. 优化API调用逻辑,避免串行等待
  4. 对静态数据做缓存

进阶学习路径

恭喜你!学完这篇教程,你已经是扣子开发的高手了。接下来可以继续深入:

  1. 插件开发:学习用代码开发更复杂的插件
  2. 多Agent架构:研究多Bot协作的高级模式
  3. 数据驱动优化:用数据分析提升Bot质量
  4. 企业级部署:了解Coze的企业版能力

相关资源


动手试试!

学完这篇教程,挑一个你想做的Bot类型,开始动手实践吧!有什么问题欢迎评论区交流。