00:00:00自从大模型的功能变得日益强大,许多开发者便开始着手构建非常酷的产品,
00:00:04将模型集成到产品中,并为我们解决各种难题。然而,这些系统会消耗大量的
00:00:09Token,尤其是当你通过 API 实际集成模型时。解决这一问题的方案其实比你
00:00:15想象的要简单得多。最佳架构并非某种极端的流水线或大规模的微调,
00:00:20而是一种构成 Unix 系统基础的古老哲学:即“万物皆文件”。
00:00:25我知道,前人提出这个哲学时并非在讨论模型成本,而是在谈论设备和文件。但
00:00:30令人惊讶的是,解决高昂成本问题的方案正基于这一相同的原则。这正是
00:00:35Vercel 的一位软件工程师所讨论的内容。在探讨为什么“文件”是解决方案之前,
00:00:41我们先来了解一下这些模型实际运作的一些基本原理。模型经过了
00:00:46海量代码的训练。这正是它们更擅长理解代码、
00:00:50目录结构以及开发者用来导航文件和查找所需内容的原生 Bash 脚本的原因。
00:00:56当智能体(Agent)使用 grep 和 ls 时,它并不是在做某种创新的尝试。它只是在以
00:01:01一种更受控的方式执行其早已掌握的操作。这种方法不仅限于代码,智能体可以
00:01:06导航任何包含任何内容的目录,无论是否为代码,因为它们已经熟悉
00:01:11这些命令并理解文件系统。每当智能体需要某些内容时,它会使用
00:01:17ls 和 find 等原生 Bash 命令在文件系统中搜索。一旦智能体通过 find 找到了确切的文件,
00:01:23它就会使用 grep 和 cat 进行模式匹配,在该文件中搜索相关内容。
00:01:27最终只有一小部分相关的切片信息会被发送给模型,而其余部分则保留在内存之外,
00:01:32从而保持上下文窗口的整洁。这意味着我们不会在模型不需要的
00:01:36无关数据上浪费 Token。通过这种方式,智能体能够返回结构化的输出。
00:01:41这种模式效果极佳,以至于 Vercel 专门围绕它开源了一个 Bash 工具,
00:01:46让智能体能够像开发者一样探索文件系统。
00:01:51在构建大语言模型系统时,通常有两种方式为模型提供正确的信息:
00:01:56要么通过详细的系统提示词(Prompt),寄希望于智能体能真正遵循它;
00:02:00要么将大量数据喂入向量数据库,并使用语义搜索进行提取。但这
00:02:06两种方法都有局限性。系统提示词的 Token 窗口有限,这限制了
00:02:10我们一次能发送给模型的信息量。为了处理更大型的数据集,我们使用语义搜索,
00:02:15它根据与查询含义的匹配程度来查找信息。但向量搜索侧重于
00:02:20语义相似性而非精确搜索。它返回的是匹配查询大致语境的数据块,
00:02:25而不一定是我们要找的具体数值。这就把从所有数据块中提取正确内容的任务留给了模型本身。
00:02:30然而,文件系统提供了一种不同的思路。在文件系统中,其结构实际上映射了你的业务领域。
00:02:35文件夹结构中的文件关系往往镜像了父级文件夹之间的关系。
00:02:40使用文件系统,你不需要将这些关系展平为模型可理解的向量数据块,
00:02:45这有助于避免在语义搜索中经常丢失的关系。这些层级
00:02:49连接被自然地保留下来,维持了数据中已经存在的组织逻辑。
00:02:54另一个优势是检索非常精准,因为 grep 和 Bash 工具返回的是精确
00:02:59匹配的结果。相比之下,向量搜索会返回所有与查询模糊匹配的数据块,然后
00:03:05交给模型去决定使用哪一个。而你现在只需获取所需的值即可。
00:03:10当智能体使用 Bash 工具时,上下文负载非常小,因为它们只接收所需的特定数据块,
00:03:15许多其他数据块并不会进入内存。这使它们能够保持一致性并专注于
00:03:20精确的信息片段,而不会在无关数据中迷失方向。
00:03:25其实这个想法你并不陌生。它已经被应用在 Claude Code 以及所有 CLI 智能体中,
00:03:30它们使用 Bash 函数通过模式匹配来缩小查找范围。我们一直在
00:03:36利用文件系统和 Claude Code 的能力来进行各种创意的研究评估。
00:03:41我们通常会将接触到的软件工具传入这个流水线,其中包含多个
00:03:46带有评估标准的阶段,研究必须通过这些阶段。所有这些都定义在一个
00:03:51Markdown 文件中,包含了测试工具的需求和目标、如何编写最终文档,
00:03:56以及每个阶段所需的所有信息。我们还会为 Claude 提供某些文档作为
00:04:01示例,作为风格匹配的参考,最终文档保存在研究结果文件夹中。
00:04:06为了引导研究,我们准备了一个 Claude.md 文件,解释如何逐一
00:04:11通过每个阶段,最终为我们生成一份符合所有检查项的研究报告。
00:04:17每当我们有需要研究的内容时,我只需告诉 Claude 这个想法或要研究的工具。
00:04:22然后它会通过六个阶段的验证流程,首先理解该工具或想法,
00:04:27然后逐个通过每个阶段。一旦想法走完了
00:04:32所有阶段,Claude 就会生成一份最终报告,我们可以通过阅读该报告来验证该想法是否具有潜力。
00:04:37这种文件系统方法通过自动化研究过程节省了我们大量的时间,
00:04:42否则我们必须分步骤手动完成。如果你想亲自尝试这个流水线
00:04:47来满足自己的需求,你可以在我们最近推出的 AI Labs Pro 社区中获取
00:04:52一个现成的模板,从而构建类似于我们的研究流水线。
00:04:57针对本期及以往所有的视频,你都可以获得现成的模板、提示词、
00:05:03所有命令和技能,你可以直接将它们应用到你的项目中。如果你觉得我们的工作有价值并想支持这个频道,
00:05:08这是最好的方式。链接就在描述栏中。
00:05:12我一直在研究他们的案例研究,其中解释了如何使用这种架构构建一个销售摘要智能体。
00:05:17他们还将其开源了,这给我带来了一个非常有意思的想法,我想亲自动手试试。
00:05:22当时我正在构建一个公司政策项目,手头有大量的 JSON、Markdown 和 TXT 文件形式的公司数据,
00:05:27且全部按部门分类。通常情况下,我会使用像 Chroma 这样的向量数据库来
00:05:32实现这个系统,但我决定尝试一下这个工具。于是我着手
00:05:39实现了这种架构。在后端,我包含了指向存放公司数据文档文件夹的路径,
00:05:44并赋予智能体访问 ls、cat、grep 和 find 命令的权限,
00:05:49同时附上了一份关于如何使用该工具以及何时使用每个命令的指南。我使用了 Gemini 1.5 Flash
00:05:55模型,为其提供了 Vercel 的 Bash 工具,并在工具内指定了文档路径。
00:06:01因此,当我测试智能体并向其询问任何与数据相关的问题时,它基本上
00:06:06能够基于公司政策(包括员工手册和休假政策文档)中的确切内容进行回答。
00:06:11为了验证其运作方式,我在终端上记录了它的工具使用情况。
00:06:16智能体首先使用 ls 命令查看有哪些可用文档,然后使用 grep 配合
00:06:21模式匹配来查找“休息日”或任何类似的关键词。这组命令处理了我们的查询,
00:06:27并给出了与 RAG 系统同等准确度的结果。如果你想要
00:06:32这个项目的源码,可以在我们的社区中找到,你可以从那里下载并亲自尝试。
00:06:38在研究这个工具时,我脑海中浮现的第一个问题是:
00:06:43让智能体在服务器上执行命令真的安全吗?我们确实在
00:06:47去年 12 月看到了 React Server Components 的一个漏洞,评分高达 10.0,是量表上的最高分,
00:06:52它就涉及到了在服务器上执行代码。所以,赋予智能体这种能力确实非常强大但也极具危险性。
00:06:57那么我为什么还是信任这个工具呢?因为它运行在沙箱中,具备隔离性。
00:07:03它只能访问我们提供的特定目录,不会修改其他任何东西。
00:07:08文中还提到,智能体在探索文件时无法访问生产系统,所以
00:07:14即便智能体试图在服务器上运行有害命令,你的生产环境代码也是安全的。它提供了两种类型的隔离。
00:07:19第一种是内存环境。在这种设置下,它仅使用 Bash 工具,
00:07:24只在它有权访问的文件上运行脚本,就像我们创建智能体时所做的那样。
00:07:29第二种是完全兼容的沙箱环境,利用 Vercel Sandbox 提供完整的虚拟机隔离。
00:07:35我们可以根据需求任选其一。内存方法更轻量、更快,适用于简单的用例;
00:07:40而全虚拟机隔离则在需要更强安全保障时表现更佳。
00:07:46尽管这种方法非常利于节省单次模型调用的成本,但它并非适用于所有类型的问题。
00:07:51如果你需要匹配词义,它肯定不是理想选择,因为 Bash 工具是进行精确匹配的。
00:07:56正如我们调用智能体时所看到的,它使用特定的关键词来定位所需的数据。
00:08:01它也不适合杂乱无章的文件结构,因为那样智能体会陷入频繁的工具调用中。
00:08:06智能体易于导航的结构会好得多。我个人的建议是,
00:08:11当你拥有高度结构化的数据,且你的请求对所需内容非常明确时,请使用 Bash 工具。
00:08:17而当你更关心文件中内容的含义,或者查询可能比较模糊时,请使用 RAG。
00:08:22在结束之前,听听我们赞助商的一句话。Brilliant。顶尖的工程师
00:08:27不仅仅懂得语法,他们还能从第一性原理出发拆解问题。这就是为什么我们与 Brilliant 合作。
00:08:32他们的哲学是:实践出真知。他们优先考虑主动解决问题,
00:08:37让你亲自动手实践概念,而不仅仅是死记硬背。例如,在名为“AI 运作原理”的课程中,
00:08:42你不仅仅是阅读,你还要操作实际的逻辑。你将亲身接触到一些技术细节,
00:08:47比如在损失空间中计算损失、进行插值可视化,从而建立起视频讲座无法提供的深刻直觉。
00:08:52通过他们的互动技术课程,你可以用最有效的方式真正掌握我们讨论的概念。
00:08:57你还可以获得年度高级订阅 20% 的折扣,解锁其全部数学、数据和计算机科学课程,
00:09:02为你提供完整的技能提升路线图。点击描述栏中的链接或
00:09:07扫描屏幕上的二维码,即可领取 30 天的免费试用。本期视频到此结束。
00:09:12如果你想支持这个频道并帮助我们继续制作此类视频,
00:09:17你可以点击下方的 Super Thanks 按钮。一如既往,感谢观看,我们下期再见。
00:09:22or scan the QR code on your screen to claim your free 30-day trial. That brings us to the end of
00:09:28this video. If you'd like to support the channel and help us keep making videos like this, you can
00:09:32do so by using the super thanks button below. As always, thank you for watching and I'll see you in the next one.