🐦 第13章 实战案例:智能客服
📄 一句话概括

输出节点有四块料:答案正文、出处、兜底话术、追问按钮。 只有第一块必填,另外三块都可能为空,所以一半的活是判空。 三种拼法字数 37、56、71。差的那三十四个字,一块管「凭什么信」,一块管「接下来问什么」。 纯文本输出通道不认 markdown。要排版、要按钮,就得换成卡片。

📝 本章和前面几章的关系

这一节只讲一个节点,但它决定用户看到的全部内容——前面所有节点做得再好,拼错了用户也感受不到。 书上这一节讲的是配置界面:选中哪个节点、填哪个变量。 本课把重点放在「拼出来的那段话该长什么样」,界面步骤只给顺序。 和 13.3 生成节点的区别:生成节点产出一段话,输出节点决定这段话怎么交出去。

一、四块料,只有一块必填

块 必填 从哪来
答案正文 是 大模型生成节点给
出处 否 检索节点给,可能为空
兜底话术 是 答不上来时用它,写在节点里
追问按钮 否 卡片才有,纯文本输出没有

「兜底话术」是哪一块?就是「这个问题我答不上来,帮你转人工」这种。 它必填,因为它对应着一条一定会走到的路。 另外两块都可能为空:检索没命中,出处就是空的;没用卡片,追问就没有。 输出节点一半的活是处理「缺」。 少判一个空,就多一行空标签。

二、三种拼法,差三十四字

拼法 字数 好处 代价
只给答案 37 短、干净 用户不知道凭什么是真的
答案 + 出处 56 可核对 多两行,手机上要多滑一下
答案 + 出处 + 追问 71 能接着聊 容易显得话多

最长的是最短的 1.9 倍。 字数不是重点,重点是多出来的两行各管一件事:出处管「凭什么信」,追问管「接下来问什么」。 出处这一行在客服场景里比在别处重要。用户问保温多久,你说 12 小时,他不信; 你说 12 小时,出自《产品手册》第 3 节,他就不太会追一句「真的假的」。 追问那一行是分流用的:把「他还想问什么」提前摆出来,他就不会自己再想一句可能更含糊的话。 这一招在 13.10 节的开场白推荐问题里还会用一次。

三、判空:45 字砍到 40 字

出处为空还硬拼,最后一行会是「出处:」——两个字加一个冒号,什么也没说。 加一个判断:出处为空就整行不加。长度从 45 降到 40,少的正好是那三个字加两个换行。 出处不为空时,两种写法长度完全一样(都是 59 字)。判空不损失信息,只砍掉空标签。

同样的判断要做三次:出处、追问、按钮。四块料里三块要判,漏一块就多一处空壳。

四、两个坑:markdown 和换行

坑 表现 怎么躲
答案里有加粗符号 原样显示成两个星号 生成节点的提示词里禁掉符号
答案有多段 换行被平台压成一行 段落之间用两个换行
答案里带井号标题 当成正文显示 正文里只用纯文字

这一条不是扣子独有的:纯文本输出通道不认 markdown。 你写两个星号,它就显示两个星号。 要排版就得走卡片。 第 3 章讲过卡片是「模板加变量」,这里正好用得上:答案放一个文本块,出处放一个小字块, 追问放一排按钮。 卡片也有代价:手机上占的高度是纯文本的两三倍,一屏放不下两条。 所以很多产品是「默认纯文本,用户点了『更多』才展开卡片」。

五、节点怎么配

选中输出节点,把答案正文接到生成节点的输出变量,把出处接到检索节点的引用变量, 兜底话术直接写在节点里,追问按钮在卡片模式下才有。 顺序是:先接答案,再接出处,最后填兜底。兜底放最后填,是因为它最容易被忘。 配完一定要用一个「资料里没有的问题」试一次。 那一次走的是兜底话术,不是答案正文——兜底话术写错,只有这一次机会能发现。

以上是平台上的点击操作。本沙箱没有扣子账号,这段不执行;能执行的是下面 Demo 里的拼装和判空。

六、动手 Demo:输出节点只干一件事:把几块拼成一句人话

先看四块料各从哪来,再算三种拼法的字数,最后看判空和不判空差在哪。 末尾列纯文本输出的三个坑。

t_bad = u'答案:%s\n\n出处:%s' % (ANS, u'')      # 45 字,末尾一行空标签
t_ok  = u'答案:%s' % ANS                          # 40 字
if SRC:                                            # 有出处才加
    t_ok += u'\n\n出处:' + SRC

实跑输出:

--------------------------------------------------------------------
输出节点只干一件事:把几块拼成一句人话
--------------------------------------------------------------------


  ① 输出节点的四块料
  --------------------------------------------------------------------

| 块 | 必填 | 从哪来 |
|---|---|---|
| 答案正文 | 是 | 大模型生成节点给 |
| 出处 | 否 | 检索节点给,可能为空 |
| 兜底话术 | 是 | 答不上来时用它,写在节点里 |
| 追问按钮 | 否 | 卡片才有,纯文本输出没有 |

  只有「答案正文」必填,其余三块都可以缺。输出节点一半的活是处理「缺」。

  ② 三种拼法,长度差近一倍
  --------------------------------------------------------------------

| 拼法 | 字数 | 好处 | 代价 |
|---:|---|---|---|
| 只给答案 | 37 | 短、干净 | 用户不知道凭什么是真的 |
| 答案 + 出处 | 56 | 可核对 | 多两行,手机上要多滑一下 |
| 答案 + 出处 + 追问 | 71 | 能接着聊 | 容易显得话多 |

  三种拼法差 34 字,最长的是最短的 1.9 倍。
  字数不是重点,重点是多出来的两行各管一件事:出处管「凭什么信」,追问管「接下来问什么」。
  书上用第三种。追问那行不是装饰——它把「他还想问什么」提前摆出来了。

  ③ 出处为空时,那一行会变成空标签
  --------------------------------------------------------------------
  出处为空还硬拼:最后一行是「出处:」,两个字加一个冒号,什么也没说。
  加一个判空再拼:出处为空就整行不加,长度从 45 降到 40,少的正好是「出处:」这三字加两个换行。
  出处不为空时,两种写法长度一样(都是 59 字)——判空不损失信息,只砍掉空标签。
  ! 四块料里三块可能为空,每一块都要先判空再拼。少判一个,就多一行空标签。

  ④ 输出节点两个坑
  --------------------------------------------------------------------

| 坑 | 表现 | 怎么躲 |
|---|---|---|
| 答案里有加粗符号 | 原样显示成两个星号 | 生成节点的提示词里禁掉符号 |
| 答案有多段 | 换行被平台压成一行 | 段落之间用两个换行 |
| 答案里带井号标题 | 当成正文显示 | 同上,正文里只用纯文字 |

  这一条不是扣子独有的:纯文本输出通道不认 markdown。 要排版就得走卡片。
  第 3 章讲过的卡片,在客服场景里的用处就是这个——需要按钮和分行时,输出节点换成卡片。

①第一张表四块料:只有答案正文必填,兜底话术虽不空但也是写死的。 ②三种拼法 37、56、71 字,最长的是最短的 1.9 倍。 ③判空那一段:出处为空时,长度从 45 降到 40,少的正好是「出处:」加两个换行。 ④出处不为空时两种写法一样长——判空不损失信息。 ⑤第四张表三个坑:加粗符号、多段换行、井号标题,纯文本通道一个都不认。

30 秒实验

  1. 用三种拼法各写一条答复,念给自己听。哪种听着像客服,哪种像说明书?
  2. 把兜底话术单独抄出来读一遍。它比答案正文更常被看到——因为答不上来的那一成半,每次都看到它。
  3. 拿一个资料里没有的问题测一次,看兜底话术会不会触发。没触发,说明判空逻辑写错了。

常见误区

  1. 「出处可有可无。」客服场景里它是信任的来源,砍掉之后用户会追着问「真的假的」。
  2. 「纯文本里写两个星号能加粗。」不认。要排版就走卡片。
  3. 「兜底话术随便写一句。」它对应一定会走到的那条路,写错了那一成半用户全看到。
自测三问(点开对答案) 1. 输出节点的四块料里哪块必填? —— 答案正文和兜底话术。出处和追问都可能为空,所以拼之前要判。 2. 判空能省多少? —— 出处为空时从 45 字降到 40 字。省的字不多,省掉的是一行空标签。 3. 为什么纯文本输出不认 markdown? —— 那个通道只传文字。要排版、要按钮,得换成卡片输出。

输出定了,下一节回头看知识库:一张表怎么喂进去,切块会不会把答案切断。

相关笔记