00:00:00(轻快的音乐) - 非常感谢各位邀请我们。
00:00:11我是Jack,我和同事Nikita一起开发了Lightfield,一个AI原生CRM平台。
00:00:19我们从1月开始使用AI SDK V4,6月推出alpha版后立即采用了V5。
00:00:26今天我们想分享如何构建一个生产系统,让AI智能体对客户数据拥有安全的完全读写权限,如何处理人工干预工作流,以及所有这一切背后的架构决策。
00:00:40我们会讲解发现的模式、做出的权衡,以及AI SDK如何帮助我们快速迭代而不陷入困境。
00:00:49但首先,让我们谈谈为什么传统CRM已经过时,为什么这很重要。
00:00:54有谁熟悉CRM的?
00:00:59或许有?
00:01:00有些工程师?
00:01:01好的,理想情况下应该是这样的。
00:01:03你开始和客户交谈。
00:01:05也许你是创始人在做销售。
00:01:07也许你在销售团队。
00:01:10一开始看起来还能管理。
00:01:11你记得每个人。
00:01:13每次谈话都记忆犹新。
00:01:16然后,当你积累了10个、
00:01:1820个、
00:01:1850个客户后,你的销售团队成员会问,"Acme公司的Sarah之前说过什么关于我们定价的事吗?她对企业版有疑虑吗?"
00:01:26现在你开始搜索Slack。
00:01:31搜索你的邮箱。
00:01:32搜索Google文档。
00:01:34也许还有那个还没转录的Zoom录制。
00:01:38最后你在两周前的某条消息里找到了,但意识到从未更新过你的电子表格。
00:01:44所以你买了一个CRM。
00:01:47它承诺成为你唯一的真实来源,但最后只是又一个你忘记更新的地方。
00:01:52问题就在这里。
00:01:54传统CRM是几十年前开发的,基于一个根本假设:人类会进行手工数据录入。
00:02:01它们给你提供了僵化的字段和预定义的模式,但真实的上下文、
00:02:06谈话中的细微差别其实存在于你的邮件、
00:02:10Slack、
00:02:11会议记录等各个地方。
00:02:13CRM只是成了你销售副总的报告工具,而不是帮助你销售的工具。
00:02:20所以我们认为一定有更好的办法。
00:02:22如果系统能够自动记住一切呢?
00:02:25如果它能智能地捕获一切并代表你采取行动呢?
00:02:30这就是Lightfield。
00:02:31所以Lightfield重新定义了CRM应该是什么。
00:02:35它是一个为初创公司提供的记忆和行动系统。
00:02:39它具有自动捕获功能。
00:02:41谈话、会议、邮件,都能被捕获和结构化,无需手工录入。
00:02:50它拥有无损内存。
00:02:52我们支持结构化列表和可自定义的模式。
00:02:54你不需要预先知道要跟踪什么,也不需要花钱请顾问为你设置。
00:02:58它将记忆转化为行动。
00:03:02Lightfield利用所有捕获的上下文——结构化和对话数据——来起草后续行动、发现洞察并为你自动化工作流。
00:03:11传统上CRM是为销售团队跟踪销售机会而构建的,但由于Lightfield捕获并结构化所有这些对话数据,它对任何需要记住和行动客户上下文的人都非常强大。
00:03:26上周的培训中最常请求的功能是什么?
00:03:31客户成功团队理解支持对话中的模式。
00:03:35同一系统,不同的问题,但都由同样的记忆层驱动。
00:03:40这就是产品。
00:03:41让我展示一下它实际上是什么样子的。
00:03:43这里是向Lightfield智能体提问的例子。
00:03:48我认为我们在问'找出五个停滞的机会,并为每一个起草个性化的邮件'。
00:03:55所以它可以使用基于AI SDK构建的智能体搜索所有客户信息。
00:04:02它可以理解什么是停滞机会,然后使用这些信息为所有这些机会的人起草可定制的邮件。
00:04:23这是一个例子。
00:04:25然后,你知道,用户可以,我们现在可以为你发送那个邮件。
00:04:29那么,这一切是如何工作的呢?
00:04:34让我们走过一遍幕后发生的情况。
00:04:37用户采取行动。
00:04:39这可能是发送一条聊天消息。
00:04:41这可能是外部事件,如触发器,比如一封邮件或完成一次会议。
00:04:47智能体立即获得上下文。
00:04:50用户在应用程序中的位置在哪里?
00:04:52他们最近在做什么?
00:04:54他们的意图是什么?
00:04:55有哪些工具可用?
00:04:57然后Lightfield启动。
00:04:59它搜索相关数据,在CRM中采取行动,更新记录和响应。
00:05:05所有这些都通过为UI提供动力的同一统一数据层进行。
00:05:10让我展示我们是如何做到的。
00:05:11这是实现所有这一切的架构。
00:05:15这里有三个不同的接口。
00:05:19面向人类的UI、面向自然语言的智能体,以及面向自动化的工作流任务。
00:05:26关键在这里。
00:05:27它们都通过同一统一层——域对象进行交互。
00:05:32所以它们有相同的权限。
00:05:33智能体拥有与执行智能体的用户相同的权限。
00:05:37相同的业务逻辑和相同的数据访问模式。
00:05:41没有单独的智能体API具有不同的规则或有限的访问权限。
00:05:46所以我们汇集来自各种系统的存储。
00:05:51结构化数据、对象存储,以及在各种搜索平台上建立索引。
00:05:57所以我们提供相同的功能和相同的界面。
00:06:01所以我们用来构建平台的一个原则是智能体UI奇偶性。
00:06:10如果用户可以访问,智能体就可以访问。
00:06:14跨所有数据的完全读取、创建和更新功能。
00:06:19所以相同的权限、相同的可见性、相同的操作。
00:06:24好吧,这对我们来说是从第一天就做出的产品和架构选择。
00:06:28这就是为什么从零开始构建AI原生系统比将智能体硬接到旧系统上要好。
00:06:34所以Lightfield中的智能体代表你采取行动,拥有相同的权限,通过为UI提供动力的同一数据层。
00:06:42它们只是另一个访问你数据的界面。
00:06:44所以当我们选择用来构建Lightfield的工具时,我们需要不会强制我们为智能体和用户采用不同架构的原语。
00:06:54这个约束影响了我们整个技术栈,包括我们选择的AI框架。
00:06:58而对我们来说,2025年构建AI产品的关键是没人有完整的剧本,对吧?
00:07:10所以我们试图优先考虑学习速度而不是完美。
00:07:14所以我们实际上用Lightfield来验证这个概念。
00:07:19当我们的工程团队需要理解客户问题时,他们不必浏览CRM。
00:07:25他们可以直接问它。
00:07:26所以自然语言真的是我们想要的界面。
00:07:35所以AISDK给了我们灵活性在不重写一切的情况下进行迭代。
00:07:41但关键是心态。
00:07:43我们专注于构建功能和解决实际问题,而不是与框架战斗或过度设计抽象。
00:07:50所以关键是快速移动和快速学习。
00:07:53所以我们一直在反复使用这句话。
00:08:02"重复远比错误的抽象便宜"——来自Sandy Metz的名言。
00:08:08我认为这在今天构建AI产品中非常普遍。
00:08:13现在快速构建软件非常容易。
00:08:17比一年前还要快。
00:08:19确保存在正确的框架真的很重要。
00:08:23而拥有错误的抽象会更加昂贵。
00:08:27所以让我们在实践中更多地讨论这个。
00:08:34所以当我们构建Lightfield时,我们在今年1月开始开发AISDK。
00:08:43所以我们采用它来支持模型切换,并开始使用流文本等原语。
00:08:54因此,我们能够在几周内为特定智能体发货早期任务。
00:08:58所以我们开始构建越来越多的智能体和越来越多的聊天功能。
00:09:042025年6月,我们开始采用useChat API,特别是因为发布了自定义传输选项。
00:09:16所以这里的主要事情是我们能够采用AISDK从V4升级到alpha V5。
00:09:25所以我猜V6很快就会发布,迁移相当平稳。
00:09:34我们内部有个笑话,我们会发现AISDK需要一个功能,第二天就会看到AISDK团队的一条推文。
00:09:46而今早学到的是,Nico有一个智能体就专门生成那些推文。
00:09:51所以看到这一点非常有趣。
00:09:53所以这正是你想从框架中得到的。
00:09:57它随着你成长,而不是强制你重写或减速。
00:10:00所以这里是Lightfield实际运作的一个例子。
00:10:05所以在聊天中,我输入一个问题,这个账户接下来会怎样?
00:10:16Jordan Lee在我们上次通话中提到了什么?
00:10:19所以注意用户不必做什么。
00:10:21他们不必说账户是Streamline Protocol,也不必特别问某次会议。
00:10:30所以我们使用AISDK构建了我们称为自适应上下文构建的功能。
00:10:37所以它结合了来自用户的信号和智能检索来找出什么真正重要。
00:10:45所以让我分享一些我们如何使用SDK做到这一点的例子。
00:10:49所以SDK有一个叫Data Parts的API,我们用它来提供从客户端到构建上下文的服务器的信号。
00:11:01我们可以在客户端上使用不同的实体并使用Data Parts API提供不同的信号,然后我们在服务器上完整地水化这些。
00:11:11我让我的同事Nikita更多地讲述我们如何使用Data Parts来构建更多功能。
00:11:19(轻快的音乐)
00:11:24(轻快的音乐) - 非常感谢,Jack。
00:11:28所以另一个类似于自适应上下文构建的例子是我们如何将文件注入聊天线程。
00:11:35AISDK为我们提供了一个非常简单的方式来做到这一点。
00:11:39我们可以简单地使用useChat钩子的send message函数,提供用户的查询和文件列表,它可以立即与任何提供者合作。
00:11:50但这引发了一些关于可扩展性的实际问题。
00:11:54例如,我们如何确保避免如果直接编码文件则直接在数据库中持久化该数据?
00:12:01如果我们使用S3 URL,我们如何确保不会意外将私人用户数据暴露给公众?
00:12:09我们的解决方案是让客户端将后端发送的内部ID引用上传到我们自己数据存储中的文件。
00:12:21在后端,我们将遍历所有文件部分,并用签名的S3 URL替换这些内部标识符。
00:12:30这使外部LM提供者仍然可以查看这些附加文件,但签名URL的过期时间防止了未授权访问。
00:12:41我们在Lightfield中保护用户数据的另一个例子是通过这个上下文工具集合的概念。
00:12:50每当用户与Lightfield的聊天产品交互时,我们会动态构建特定于用户的工具集。
00:13:00我们将这些依赖项直接注入工具中。
00:13:03例如,在这个数据检索工具中,我们直接将用户ID注入工具本身。
00:13:11LLM永远不会直接向数据库发出查询。
00:13:15它总是通过用户通过CRM界面其余部分访问的同一统一数据层。
00:13:23所以我们有这个维护CRM UI和智能体能力之间奇偶性的设计哲学。
00:13:34当用户可以通过UI中的这个模态界面创建CRM实体(如账户、
00:13:40机会和联系人)时,我们希望他们也能通过基于聊天的界面做同样的事情。
00:13:48LLM可以发出工具调用来创建这些账户,并将使用UI内显示的相同输入呈现一个表单。
00:13:57我们通过利用AI SDK的人工干预工作流抽象来构建这个。
00:14:03基本工作方式是当LLM发出需要确认的工具调用时,它会将该工具调用转发到前端客户端。
00:14:13客户端将呈现一个界面,并根据用户的操作附加工具结果。
00:14:20在后端,就在我们将输出提交给LLM之前,我们根据用户提交的内容执行功能。
00:14:31描述我们如何做到这一点的模式如下所示。
00:14:37所以用户的初始输入是这个工具调用。
00:14:43LLM建议一组输入值,在这种情况下是表示账户名称和其域的项目数组。
00:14:51用户编辑值后,输出变成用户的编辑值以及指示他们是否批准该特定项目的附加字段。
00:15:03实际函数执行后,我们在将其发送给LLM之前将该结果附加到工具输出。
00:15:11例如,账户创建是否成功或由于某种原因失败,例如也许账户已存在于CRM中?
00:15:19这为LLM提供了与交互历史记录的完全可见性。
00:15:26它可以看到整个流程,最初建议的值和输出。
00:15:33这为它提供了适当建议下一步的能力。
00:15:38所以我们还有这个让用户塑造CRM以适应其需求的设计原则。
00:15:45每个企业都有其独特的方面和独特的销售流程。
00:15:52我们希望你能够定制CRM并定制你与智能体的体验以适应你的具体需求。
00:16:00在Lightfield中,您可以为每个CRM实体构造自定义数据模型。
00:16:08例如,如果你是一个B2B业务生产力工具,试图向初创公司出售你的编码工具,你可能特别感兴趣跟踪你的客户的技术栈、
00:16:20工程团队的规模,以及也许你与他们有的任何共同投资者。
00:16:26在Lightfield中,您可以指定所有这些类型的字段。
00:16:30而且你可以指定智能体应该如何在其流程中使用这些字段。
00:16:38您可以在这些字段的含义上提供其他说明,以及在各种后台工作流中更新它们时应该如何使用这些字段。
00:16:48例如,如果你创建了一个字段,你可以要求智能体通过在网上进行深度研究来回填它,并为系统中的所有账户丰富这些字段。
00:17:03或者你可以要求它通过搜索你的CRM记录来回填,这包括你的会议转录、邮件和与账户的其他交互。
00:17:13这在后端的样子是我们在运行时创建这个工具,该工具具有基于你公司特定配置的模式。
00:17:28实际的工具模式本身是从该数据库派生的。
00:17:32当LLM建议值时,我们将验证类型以确保它们与该模式匹配。
00:17:38这使我们能够构建这些非常灵活和高度可靠的工具。
00:17:42在Lightfield中,您也可以配置这个知识部分,您可以为LLM提供关于您的业务的其他上下文。
00:17:53您可以提供有关您公司产品的信息,也可以为LLM提供有关应该如何运行后台工作流的说明,例如会议准备。
00:18:06在每次会议之前,Lightfield会为你准备一份文件,准备你进行讨论。
00:18:15它将列出关键参与者和关于他们的其他信息。
00:18:19它将列出关于你正在开会的特定账户的信息,以及其他重要的关键讨论要点。
00:18:27会议后,它将根据你讨论的内容建议后续行动项和建议的字段更新。
00:18:35所有这些基本构建块结合起来释放了强大的新功能。
00:18:42因为Lightfield拥有你所有销售互动的完整上下文,并拥有高度定制的知识,它可以与你协作快速生成你代表的高质量电子邮件。
00:18:56例如,会议后,你可以使用这个工具访问你的Google日历来查看你的可用性。
00:19:05当这个草稿电子邮件工件生成时,它可以根据你之前的讨论适当地建议后续时间。
00:19:14这些草稿电子邮件仍然受到用户批准的限制,所以你可以确信LLM智能体永远不会在没有你明确批准的情况下采取行动。
00:19:25这些后续行动项和电子邮件草稿为你准备好了,我们会向你发送通知,以帮助确保你跟上你正在处理的每一笔交易。
00:19:37好了,回到你,Jack,把这一切联系起来。
00:19:43- 好的。
00:19:46(观众鼓掌)谢谢Nikita。
00:19:53所以我们在使用AI SDK构建Lightfield时发现的核心原则。
00:19:59原则一,智能体UI安全奇偶性。
00:20:03从第一天起就设计好了。
00:20:05智能体需要通过人类使用的同一数据层进行完全的读写访问。
00:20:09不要构建单独的智能体API。
00:20:11你最终会维护多个系统,而且两者都不会感觉完整。
00:20:15原则二,快速迭代优于完美的抽象。
00:20:19早期优先考虑学习速度,而不是预先完美。
00:20:23我们在聊天智能体、API功能和后台工作流中有类似的代码。
00:20:28一些重复确实比错误的抽象便宜,特别是当惯例正在形成时。
00:20:35原则三,用户信任的人工干预工作流。
00:20:41人们需要保持控制,特别是在高风险交互中。
00:20:45我们拦截了工具层。
00:20:48智能体看到原始建议、用户的编辑和执行结果。
00:20:53完全透明,完整历史。
00:20:56这就是赢得信任的原因。
00:20:58原则四,用户和智能体可编程的系统。
00:21:02真正的客户需要自定义数据模型。
00:21:04每个企业都以不同的方式跟踪事情。
00:21:07用户和智能体都可以定义新字段,系统可以适应它。
00:21:13这意味着你的产品适应客户如何构造他们的数据,而不是相反。
00:21:18构建起来更复杂,但这是人们容忍的产品和他们离不开的产品之间的区别。
00:21:24所以我们很想听听你正在构建什么,以及你正在发现什么模式。
00:21:28之后来找我们,或访问lightfield.app查看这些原则的实际应用。
00:21:34谢谢。
00:21:35(轻快的音乐)