🐦 第2章 扣子 AI 应用开发平台介绍
📄 一句话概括

平台拆成五层: 模型、能力(插件与卡片)、编排(工作流与对话流)、知识(知识库与数据库)、应用与发布。 五层不是五个功能,是五个能单独拔掉的槽。拔掉哪一层,症状不一样。 这一节把五层填满跑一遍,再逐个抽掉看它怎么坏——坏法比功能表更能说明每一层管什么。

📝 本章和前面几章的关系

前四节讲平台是什么、为什么选、给谁用。这一节讲它的内部结构。 这一节是全书的结构图:后面每一章都在讲这五层里的一层,或者几层的组合。 看的时候可以对照目录:第 3 章讲能力层,第 4 章讲编排层,第 5 章讲知识层,第 7 章讲数据, 第 2.6 节把五层串一遍。

一、五层,五个槽

模型层:调哪个模型、温度多少、上下文多长。它决定「话说得像不像」。 能力层:插件和卡片。插件让它能办事,卡片决定办完怎么摆给用户看。 编排层:工作流和对话流。它决定「先干什么、后干什么、什么情况下拐弯」。

知识层:知识库和数据库。前者只读、用来查;后者可写、用来记。 应用与发布层:人设、开场白、渠道。它决定「用户从哪儿进来」。 五层的关系是:上面四层都在为最后一层服务。用户只看见最后一层,但决定体验的是前面四层。

二、模型层:换一个看差别

同一个问题,换个模型,差别不在「对不对」,在「像不像」和「敢不敢编」。 演示里换成弱模型之后,它不再编十五天了,改成「建议咨询人事」——听着更负责,其实还是没答。 所以换模型不能解决「没有资料」的问题。资料的问题只能在知识层解决。这是全书最常被搞混的一件事。

三、能力层与编排层

能力层是「会不会」,编排层是「按什么顺序」。 一个智能体挂了十个插件,但不知道什么时候该用哪个,结果是一边超时一边乱调。 这是编排层的问题,不是能力层的问题。 反过来,编排做得再好,没有插件也办不成事——工作流里那个节点只能是空的。

两层的分界可以这么记:能力层回答「能不能」,编排层回答「什么时候」。

四、知识层:读与写分开

知识库存的是「资料」,只读,用来查。数据库存的是「记录」,可读写,用来记。 为什么分开?因为两者的用法完全不同。资料要切分、要向量化、要算相似度; 记录要建表、要定字段、要增删改查。 放一起会出现什么?要么检索效率差,要么改数据时把资料改坏。这个坑第 7 章还会讲一次。

五、应用与发布层

这一层最像「包装」:人设、开场白、推荐问题、渠道。 但它决定了一件事:用户第一次打开时,知不知道该问什么。 演示里那条链跑出来的答复是对的,但如果开场白写得含糊,用户根本不会问出那个问题。

所以别把这一层当收尾工作。它跟提示词一样,属于「说清楚要什么」的一部分。

六、动手 Demo:把五层拼成一个能跑的对象

平台上的智能体,剥掉界面就是一个带五个槽的对象:模型、提示词、插件、知识库、数据库。 逐槽填真东西,然后改一个槽看答复怎么变。

class MiniAgent:
    def __init__(self, model, prompt, plugins=None, kb=None, db=None):
        self.model, self.prompt = model, prompt
        self.plugins, self.kb, self.db = plugins or {}, kb or [], db or []

    def ask(self, q):
        hits  = retrieve(q, self.kb, top=1) if self.kb else []
        fact  = None
        for k, fn in self.plugins.items():   # 插件:按关键词触发
            if k in q:
                fact = fn(q)
        if hits:            return '按制度,' + hits[0][1]
        if fact:            return fact
        if self.model == '弱模型': return '建议咨询人事。'
        return '公司规定每年可享 15 天年假。(编的)'

实跑输出:

--------------------------------------------------------------------
把平台五块拼成一个能跑的对象
--------------------------------------------------------------------


  ① 五个槽各就位
  --------------------------------------------------------------------

| 槽 | 本例填了什么 | 管什么 |
|---|---|---|
| 模型 | 强 / 弱 | 决定话说得像不像 |
| 提示词 | 人设加口径 | 决定从哪个角度答 |
| 插件 | 实时汇率 | 补「今天」这类实时数据 |
| 知识库 | 三条制度 | 补「你公司」这类内部数据 |
| 数据库 | 问题清单 | 把发生过的事记下来 |


  ② 同一个问题,改一个槽看差别
  --------------------------------------------------------------------

| 配置 | 它怎么答 | 答到点子上 |
|---|---|---|
| 五槽齐全 | 按制度,年假:入职满一年 5 天,满三年 10 天,满十年 15 … | 是 |
| 抽掉知识库 | 公司规定员工每年可享 15 天年假。(编的) | 否 |
| 抽掉知识库+换弱模型 | 公司制度里应该有相关规定,建议咨询人事。 | 否 |
| 只留知识库 | 按制度,年假:入职满一年 5 天,满三年 10 天,满十年 15 … | 是 |

  抽掉知识库那句是关键:它没有变笨,它只是没有资料,于是编了一个很像的十五天。
  换弱模型之后,它连编都编不利索,改成「建议咨询人事」——听着更负责,其实还是没答。
  ! 这就是第 5 章要解决的问题:答不出来时,它不会说不知道,它会给你一个像样的错答案。

  ③ 换一个「今天」的问题,动的槽换了
  --------------------------------------------------------------------
  五槽齐全 → 今天汇率 1 美元兑 7.12 元
    用到知识库:否;用到插件:汇率
  抽掉知识库 → 今天汇率 1 美元兑 7.12 元
    用到知识库:否;用到插件:汇率
  同一个问题,抽掉知识库的配置照样答出来了——因为这个问题不该知识库管。
  ! 五个槽不是五个都要开,是每个槽只在自己的那一类问题上起作用。全开只会更贵,不会更准。

①五个槽那一张表是本节的骨架。 注意「管什么」这一列:模型管像不像,插件管「今天」,知识库管「你公司」,数据库管「记住」。 ②同一个问题(年假几天),五种配置四种答法。 最值得看的是第二行和第三行:抽掉知识库之后,强的那个编了个很像的十五天, 弱的那个改口说「建议咨询人事」。 ③换一个问题(今天汇率),答案就变了:抽掉知识库的配置照样答对,因为这个问题不该知识库管。 每个槽只在自己那类问题上起作用。 ④最后那句是全节的结论:五个槽不是都要开。全开只会更贵,不会更准。

30 秒实验

  1. 给你手上的智能体按五层点一遍,写每一层现在填了什么。空的那层就是它最弱的地方。
  2. 问它一个它答不出来的问题,看它是编还是承认不知道。答案会告诉你知识层做得怎么样。
  3. 把开场白改写成三个具体问题(不是「有什么可以帮你」),再看用户会不会问对。

常见误区

  1. 「换个更强的模型就能答对。」模型解决「怎么说」,不解决「说什么」。 没资料的时候,强模型只会编得更像。
  2. 「知识库和数据库差不多。」一个只读、按相似度查;一个可写、按字段查。混着用两头都不好用。
  3. 「开场白是装饰。」它决定用户第一句问什么。第一句问歪了,后面全歪。
自测三问(点开对答案) 1. 五层是哪五层? —— 模型、能力(插件与卡片)、编排(工作流与对话流)、知识(知识库与数据库)、应用与发布。 2. 能力层和编排层的分界是什么? —— 能力层回答「能不能」,编排层回答「什么时候」。挂十个插件不知道何时用,是编排的问题。 3. 为什么抽掉知识库之后,强模型反而更危险? —— 因为它会编出一个很像的答案。弱模型至少会说「建议咨询人事」,强模型让你以为拿到了答案。

五层看清了,该动手了。 下一节走一遍完整的入门流程:设计思路、接模型、建工作流、建智能体、发布到公众号——五步, 每一步都有明确的「怎么算过」。

相关笔记