We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode Real World AI Agent Stories // Zach Wallace // #283

Real World AI Agent Stories // Zach Wallace // #283

2025/1/15
logo of podcast MLOps.community

MLOps.community

AI Deep Dive AI Chapters Transcript
People
Z
Zach Wallace
Topics
Zach Wallace: 我主导了Nearpod的数据平台转型,旨在解决数据分散和难以处理的问题。我们通过整合各种数据源,并利用DBT和Redshift等工具,实现了数据的有效处理和转换。我带领团队构建了一个数据产品交换平台,作为数据网格的基础,使得我们能够以一致、可靠和自信的方式处理大规模数据。虽然我们正在朝着完全的数据网格迈进,但目前仍处于过渡阶段,因为我们需要定义清晰的领域,并实现流式数据产品的传输。我认为数据产品是数据和数据定义的交集,它能够清晰地表达数据的含义和用途。

Deep Dive

Chapters
This chapter details Nearpod's journey of transforming its data platform using dbt and Redshift. It describes challenges with disparate data sources, the implementation of a data product exchange, and the transition towards a data mesh architecture.
  • Nearpod used dbt and Redshift to consolidate data from disparate sources.
  • They implemented a data product exchange, laying the groundwork for a data mesh.
  • The process involved ELT (Extract, Load, Transform) for real-time data updates.
  • Data products were defined as the intersection of data and its definition, enabling consistent data sharing across the system.

Shownotes Transcript

嘿,大家好。我叫扎克·华莱士,是Nearpod的工程经理。我们在美国和全球各地为K-12教育领域提供服务。我的咖啡怎么喝?我一直都喝黑咖啡。是的,我在大学时为了省钱学会了这个,因为奶油很贵。

好吧,我觉得这家伙正处于我脑海中那张维恩图的正中心。说实话,我知道我和扎克会成为朋友。我知道的。我让他来这里了。这是一次很棒的谈话。我为什么知道呢?因为他写了一篇完整的博客文章,讲述了Nearpod如何提高其数据平台的效率。而且......

他刚开始就说,你知道吗,我一直在做一些非常疯狂的事情,那就是深入研究代理的世界。在打破公司部门之间的障碍方面,我已经做了一些疯狂的事情。所以我们讨论了所有这些。欢迎回到另一个ML Ops社区播客。我是你的主持人,德米特里奥斯。让我们开始吧。让我们从这个开始。

我们本来应该来这里讨论你对数据平台所做的所有转换。也许你可以给我们一个TLDR,就像超级......

CLDR,因为我们要在这里做一个曲线球,走一条完全不同的道路。但我感觉你在数据平台上所做的事情有很多有价值的信息。所以让我们快速回顾一下,然后向左转。是的,当然。所以

尽我所能总结一下。我的,你知道,我在Medium上写的10分钟阅读感觉像是一个总结。所以我将尝试做得更好一些。所以基本上,我们的数据分散在许多不同的系统中,许多不同的数据源中。即使在数据、数据架构方面,我们也有整体架构,在数据架构方面也有微服务。有了这些,我们的数据到处都是,我们并没有真正找到一种好的方法来处理

压缩数据、转换数据或以任何方式处理报告。对。我们能够做到的是利用dbt的组合。我们内部使用的是dbt core。它非常棒。我的一些工程师完全爱上了它,因为它可以转换数据。

对于进入数据工程领域的工程师来说,最好的描述方法是,感觉就像你在设计数据一样,就像你在用数据进行软件工程一样。然后我们使用Redshift,过去它有很多非常大的问题,但我们像在Apache Spark中一样使用它。它只是用于传输数据并将数据带到我们需要的地方。

然后我们将它传递到其他区域,例如,我们是一家大公司的子公司。所以也许我们会把它发送到Snowflake,或者也许我们使用S3来处理数据的其他区域。我们为自己构建了一个数据产品交换,这是数据网格的基础。因此,您可以识别数据产品之间的交互。

您将如何与我们系统中的数据产品进行交互。再说一次,我们有大约20个不同的数据源。然后它们的行数从数百万行到数十亿行不等。所以我们在某种程度上谈论的是大规模数据,而不是Meta大规模数据,对吧?但比POC大,如果你愿意的话。因此,我们能够以一致性、可靠性和信心来做到这一点。是的。

老兄,所以解释一下,不同的数据源是什么样的,你是如何将它们导入的?或者你只是将它们中的每一个都做成了自己的API?我想我不太清楚的是......

给我一个细分。你这边有这个数据库,那边有另一个数据库,你必须用DBT连接这两个数据库,然后你将它们连接起来,然后将它们放在另一个数据库中,然后在这个数据库周围有这个数据契约或其他什么东西。它是一个数据产品。在实践中它是什么样的?当然。是的。所以我们有数据。所以我们的数据存储在这些不同的系统中。

它们大多数是Aurora DB,有些是Dynamo。但关键点之一是Redshift启用了所谓的零ETL。本质上,这是一个ELT。它不像你通常看到的那样是一个ETL,但它为这些不同系统中的任何数据提供实时更新。如果你连接它,你就可以将数据传输到Redshift,并且

然后,如果你想在Redshift中处理数据,你就可以处理数据,或者我们已经用DBT设置了曝光。因此,我们能够将数据从那里带到任何其他系统,例如Snowflake。对。所以将它带入Snowflake,并使我们能够在Snowflake中进行非常强大的转换。所以,再说一次,我们几乎使用Redshift来处理所有事情。

在一个批处理的Spark中,这是一个疯狂的心理转变,因为零ETL的设置非常容易。所以我们设置它,每个数据库可能只需要5分钟就可以设置好,你知道,使用AWS控制台。然后我们能够发送它并根据我们的需要进行处理。

我们使用S3作为Redshift之外的不同数据源之间的中间体,对吧?所以微服务进入Redshift,数据库进入Redshift,然后从那里,它们将进入S3或Snowflake或其他什么地方。

但是dbt是什么时候介入的?我没有抓住那部分。是的,完全公平。所以dbt是我们如何处理和转换我们任何区域的所有数据的方式。所以我们根据它所在的域有多个dbt存储库。

所以DBT通常会存在,我们在Redshift内部有一个,在Snowflake内部有一个。所以如果我们想处理Redshift内部任何域相关区域的数据,那么我们将通过DBT运行它。然后它被传递到Snowflake,我们可以在那里进行更多转换。

不错。好的。你确实提到了2022年的流行词,我认为是数据网格。你为什么觉得这是数据网格,但它不像完整的全面的数据网格?对。所以数据网格本身提供了发送数据并将数据定义到系统中任何想要去的地方的能力。问题是

类似于你构建微服务的方式,你必须考虑到域来构建它,对吧?所以当我们构建它时,我们现在正在朝着数据网格努力,我们正在定义域,但这需要一段时间才能分解微服务和整体数据架构,并真正定义正确的域。所以我们现在有一个团队正在研究这个问题,他们已经研究了大约

12个月。我们有一些数据产品,可能,你知道,大约20个,也许30个,能够在我们的架构的不同区域之间进行传输。但最终目标是实现

实现流数据产品,你可以通过。现在,我们只进行批处理,对吧?所以在这个时间点,零ETL非常适合批处理,但不适合流处理。所以我们必须构建这方面的另一面。这就是为什么我说我们是

某种数据网格,因为你可以从批处理中获取数据,但不能从流处理中获取数据。我们需要真正定义其他团队如何参与其中,因为这是一个,你知道,当你谈到从,

传统的MySQL数据,你知道,也许是PHP,也许是某种TypeScript类型的ORM那种事情,对吧?你正在定义这些系统以及它们如何工作。但现在我们将这些带到一个单独的区域,并从我们的事务层实际实现它们。我们能够将其发送到分析层,然后返回到事务层以进行进一步处理或实时更新或任何其他操作。这就是

这就是我们仍在努力学习的地方,如果你愿意的话。你所说的数据产品是什么意思?

是的,这是一个很好的问题。所以我们定义的数据产品是一个你会听到18种不同定义的词。所以你自己定义它很重要。这就是为什么我说,好吧,对于家里的听众,也就是我,在你看来数据产品是什么?是的。所以,正如我们所定义的那样,数据产品是数据和数据定义的交集。所以

所以,嗯,它将是,你知道,一组数据的传输,它对是什么有明确的定义。例如,让我们说一个用户,例如,你发送,你知道,用户登录的时间,你发送用户在你的应用程序中完成某项操作的时间,突然之间,这就是用户使用情况,对吧?这本身就是一个数据产品,因为你能够准确地定义它是什么,并且你正在发送数据,无论是聚合的还是,你知道,只是一行,一堆行。不错。然后理论上你会有很多不同的

类型的数据产品。也许有用户使用情况,但有用户个人资料,还有用户其他你能想到的东西。没错。好的。所以现在让我们......

向左急转弯,谈谈你最近一直在做什么,因为那几乎就像你过去的生活。你刚刚告诉我,在过去的三个月里,我一直在深入研究代理架构。我想,好吧,这太完美了,因为我也完全专注于代理。所以我确实喜欢谈论ML和AI以及数据平台的数据工程。

但我现在也对代理很着迷。那么你的故事是什么呢?我会改述我们所说的“向左急转弯”。我会说这是下一步。在这个架构中......

你整个系统中需要的关键是数据,对吧?你需要你的用户、你的系统、架构的数据,以便能够利用LLM提高系统的质量。这是关键,因为你可以要求LLM做任何你想做的事情,它会给你它如何解释它的结果。但是如果没有数据,它就不会拥有你提供可靠和自信的答案所需要的质量,或者

你知道,对你的用户的建议,无论你将如何使用它。因此,数据平台确实是第一步。它将数据放在现在可以利用这些数据来获得更高质量的响应或更高质量的LLM响应的地方。而且

所以我们对代理进行了尝试。我们试图看看,好吧,市场要求我们在某种程度上使用LLM。我在教育科技领域,这是一个危险的领域,可以进入LLM,对吧?因为我们必须考虑学生、家长、州立法机构。我们必须考虑国家立法机构,我们是一家全球性公司。所以如果我们走向全球,这将如何影响世界各地的不同文化?

这是一个很难解决的问题,正如你可能已经看到的那样,无论是语言障碍,因为LLM在跨语言适应方面并不擅长。在某些情况下,它们擅长翻译,但不擅长跨语言适应。它们不擅长识别具有文化意义的事件或特定文化的事件。

敏感话题。细微差别。是的,“细微差别”是一个很好的说法。所以当我们进入这个领域时,有很多事情需要考虑,对吧?我们首先想到的是问题生成。我们在教育科技领域,我们试图为教师提供价值。他们几乎在每个我听说过的国家工作。他们工作时间很长。他们一天的时间不够做他们需要做的事情。他们筋疲力尽了。学生受到这种倦怠的影响。家长也受到了影响。每个人都受到了影响。所以我们把重点放在老师身上。这是一种强大的方法。所以对于问题生成,我们如何减少教师生成问题所需的时间?

我们开始构建代理来做到这一点。这非常有效,因为我们能够定义,我将定义这些代理的方式是

几乎就像三岁的顾问,如果你愿意的话。所以当你开始的时候,对吧?所以你将把这些投入生产,但你基本上是在要求一个三岁的孩子为学校老师生成学校问题。我们知道现在他们不需要这个,对吧?我们知道这一点,但它使我们能够开始构建这些领域专家。这就是有趣的部分,因为它......

我们花了7个小时来构建这样的东西,对吧?这在过去是不可想象的。我们本来需要60个,

至少,对吧?至少。也许需要8个月才能做到这一点,甚至做一些遥远的事情。但是开发周期已经大大缩短,可以快速推出概念验证,因此我们现在实际上正在构建其他团队可以访问并提供见解的独立服务。所以我们需要其他人,公司中的其他团队来帮助我们。过去,我们一直是瓶颈,但现在我们是问题。

但现在我们为其他团队提供了以前从未能够如此紧密地与工程师合作的机会。当你提到其他团队时,你是指其他工程团队,还是指任何部门的任何人?其他部门。

是的。这就是关键。是的。对。因为我们拥有所有这些知识。我们可以快速构建它。你已经看到许多不同的教育科技公司推出了问题生成或幻灯片生成。但是如果你把这些带给老师,至少据我所知,他们都会说这些质量真的很差。是的,他们会生成课程,但他们实际上并没有做到他们没有达到任何标准。他们没有帮助你设计一个你可以在课堂上立即使用的真实课程。为什么是这样?因为工程师正在构建这些。我们不是,我们自己也是三岁的顾问。所以现在我们是告诉其他三岁顾问该做什么的三岁顾问,对吧?所以我们需要让这些主题专家更接近代码,更接近开发周期。你为什么说

你正在使用代理,或者为什么这是一个代理问题,而不是仅仅是固定一个LLM?是的。所以当你从顾问的角度考虑这个问题时,对吧,你正在构建一个非常特定领域的代理。

来定义和处理问题。所以当我们经历这个过程时,给你,我们有一个输入验证代理。它所做的就是验证我们的输入。我们有很多立法需要处理,我们有很多需要考虑的全国和国际文化中的敏感话题。我们不希望,因为这是来自我们公司的,我们不想表达立场

在这些问题上,无论我们对这些问题的看法如何。我们需要法律,我们需要课程开发。我们需要让这些其他团队更接近我们,对吧?对于实际的问题生成,这是一个独立的领域,它只是生成问题。这个顾问的全部目的是为我们所有的老师生成问题,对吧?当你考虑它时,你实际上正在构建,再次,这些小型顾问,但你开始理解这些任务是

需要被分解,因为你可以是,你知道,这是过去的一个习语。你是样样通,样样不精吗?或者你精通一样,而不知道其他方面?我完全搞砸了,但你明白了,对吧?在很多情况下,我们不想构建一个样样通的人。所以你将开始看到这些代理遍布我们的系统,以至于我们现在正在构建一个代理注册表,它能够在我们的系统中被看到和使用。

其他工程师或任何想要的人可以从货架上拿走它们,并说,我将把这三四个代理放在一起创建我的产品。没错。哇。这就是为什么你可以......

授权其他部门。是的,没错。没错。所以假设,你知道,我们在公司中有12到13个不同的团队。假设其中一个产品工程团队说,哦,我需要去构建产品,产品功能XYZ,对吧?好吧,我想为此使用一个代理。那么,哪些代理可供我使用?我需要创建哪些代理?哪些代理

这些代理如何交互?为了尝试给我们一个非常具体的例子,假设你想解决,我需要把它从教育科技中拿出来,因为我不想越界分享太多。理论上,如果你在另一个业务中,比如电子商务。对,比如电子商务,没错。所以假设你进入电子商务,你的产品功能目标是识别或将正确的用户、正确的产品放在他们面前。

对。所以你会考虑代理来理解,好吧,但是需要发生哪些单独的功能?而且,而且,

我该如何在大规模上将它们关联起来?对。我是否需要非确定性编排?我是否可以使用确定性编排来查找需要执行这些过程的哪些步骤?所以对于电子商务示例,你知道,你需要了解,这个用户是否曾经在你的网站上购买过任何东西?他们通常喜欢哪些产品?也许你会抛出一些曲线球,你知道,以激发对其他领域的兴趣。

所以你会有一个代理来了解,比如,这个用户的兴趣是什么?你会有一个代理来了解我们今天通常销售什么。然后你会有一个代理来将这两者结合起来,以创建你试图生成的这个用户个人资料。然后还有很多其他事情,无论,你知道,你可以考虑输入验证,你可以确保你没有抛出错误。但这就是数据平台发挥作用的地方,因为你可以,再次,你正在前端发送数据。

但是如果你正在从这些代理收集数据,并且你正在考虑,好吧,所以这些代理抛出错误的频率是30%,希望不会那么糟糕,但你知道,这是一个例子。然后,但是代理让你拥有一个成功值,即有人在我们的平台上,在这个电子商务平台上购买了东西,你可以开始识别哪些工作良好,哪些工作不好。所以当你完成这个过程时,你可以进入数据平台,开始处理这些数据。

建立一个反馈循环来了解我们可以在哪里更新,我们可以在哪里自主地进行操作,如果使用ChatGPT或OpenAI之类的工具,代理现在实际上正在学习,你知道,它们没有......我想不出这个词了,但是你......将数据带回来并让它自己学习,但是如果你正在重新训练,是的,或者微调,是的......而且

你可以,但是你可以,你可以通过使用RAG并更新你传递给它的数据等等来定制它。所以就像有一些方法可以实现一个反馈循环来将整个系统联系在一起。是的。它让我想起了这个家伙,汤姆,我前段时间采访了他,他正在为语音代理做Mixpanel。所以对于语音代理,你可以更清楚地看到它,因为你在打电话,它是实时的,你正在与他们交谈。如果事情出了问题,你会想知道。或者如果有一个预期的通话时长,突然之间你所有的通话都只持续了三秒钟,而你认为它们应该持续或平均持续一分钟或一分钟半。

你想看到这类东西。我没有考虑过你正在谈论的代理,你希望这种Mixpanel类型的视图能够理解代理在哪些方面成功,在哪些方面不成功。

在推动对你来说很重要的指标方面,这很重要。是的。是的。所以你,这就是代理的力量,说实话,因为你现在可以有一个分析部门来处理一个代理,构建这些成功的含义是什么?你可以让你的产品工程团队致力于实现这个确切的东西。

代理流程。对。然后你有了这样的想法,好吧,我们为什么要在四个或五个不同的地方重新创建同一个代理?对。在某些情况下,这有点像面向对象的编程,因为你必须回到基础,并理解

我们如何才能在另一个领域重新利用它?我们如何理解问题的细分,以分解,你知道,标准问题或一些非常特定领域的更复杂的问题?我想当我想到代理时,我想到的一件事是它们如何能够

接受某种问题或某种请求或指令,然后从它们可以采取的所有可能的行动中找出,好吧,我将使用这个工具,而且我首先必须理解这一点。所以他们必须知道,我应该请求更多上下文吗?我是否真的应该澄清这里想要什么?他们试图达到的结果是什么。然后,好吧,我可以去,我可以抓住这个工具,我以前听说过。

我的朋友萨姆谈到,在每种情况下,你都希望尝试缩小你试图让代理做的事情的范围,但要缩小工具正在做的事情的范围,所以当代理与工具交互时,你希望尽可能地缩小这个范围一百倍,因为,他给了我一个例子

如果你试图让一个代理编写一个SQL语句,或者如果代理有数百个它可以选择SQL语句,并且它选择了正确的SQL语句,因为它知道你试图做什么。是的。是的。这是一个强大的概念。你提出的有很多含义。让我们来讨论一下。是的。所以,

我们现在正在学习很多关于如何定义令牌数量以及将其与处理此所需成本和时间相关联的内容。所以当你拥有专门的代理时,你通常会拥有更少的令牌,对吧?

所以它们可以更快地从LLM中获取它们需要的东西,而不是拥有高度专业化、高度定义的代理,这些代理需要更长的时间来处理信息,理解所有内容,你知道,所有上下文等等。好的。所以,所以你的意思是,当它非常狭窄并且你拥有这个较小的范围时,嗯,

你不仅可以节省资金,而且更可靠。没错。这就是你开始考虑多代理方法的时候,对吧?所以当你使用代理时,我们对我们所做的一切都使用多个代理,因为这使得我们的流程更容易被工程理解,也更容易调整。所以让我给你一个关于这个项目的时间要求的细分。

所以我们注意到,实际构建POC并为最终用户提供一些东西大约需要10%到20%。但是评估质量和理解这如何与其他部门合作,或者深入研究我们所说的误报,也就是你

代理以一种认为它正在正确地做某事的方式做出反应,但它并没有像在某种程度上那样产生幻觉。嗯,当你试图用你的提示或代码来微调它们时,并且两者之间存在一种融合,这需要你花费90%、80%、90%的时间来调试它。所以现在,嗯,

现在,再次,它有点颠倒了,对吧?所以你需要能够准确地沟通每个代理中发生的事情,准确地理解任务是什么,以减少团队中工程师之间的沟通渠道、公司中的部门之间以及其他沟通渠道。

所以你可能已经到了处理数千个代理的地步,或者它没有那么分散?现在还远没有达到那个地步,但我们会达到的。好的。所以这就是结束。这有点像,如果你将它向前推断几个月或几年,嗯,

你预计会发生这种情况。是的。是的。我的意思是,你已经看到从HubSpot到Salesforce再到扎克伯格,每个人都在谈论代理的数量将超过人口数量。我的意思是,这些代理可能是你看到的手机上的移动应用程序。你可以把它想象成我将来可能看到的代理规模。所以我真的很喜欢深入研究这个想法,并且

将代理视为DAG的一部分,它只是DAG中的一个步骤,碰巧的是,在这个步骤中,它有点非确定性,我们从DAG中的其他步骤向它提供信息,但是它可以......

在我的脑海中,它可以是那种可视化表示。你倾向于这样构建它们,还是以不同的方式看待它们?是的。这是一个很好的问题。有时识别这一点可能有点复杂。所以我会从基本情况开始,然后从那里向上移动。所以假设,你知道,你正在构建一个,

只是一个标准的代理,这是一个单一代理,它的流程是,你知道,你正在编码,然后你有一个你正在调用的DAG中的一个节点,它将给你某种响应,对吧,无论你的意图是什么,如果我们转向电子商务,它会说,哦,这些是用户兴趣,对吧,所以它将能够识别这些......

然后,如果你将其扩展,并开始说,好吧,我们想添加更多内容来理解,那么,企业今天感兴趣销售什么?对。因为你的所有产品、不同的利润率等等都会有不同的估值。所以下一步就是说,好吧,与其只称之为用户兴趣代理,我们还要调用。

这个下一步,这个其他步骤,这个其他工具,它识别业务需求。所以你实际上几乎必须构建第三个节点来协调这个,对吧?这就是非确定性编排发挥作用的地方,它变得非常吸引人。

因为你现在可以说,好吧,我希望你根据你所看到的情况将这两个工具都投入使用,对吧?你可以选择带一个、不带任何一个或两个,或者任何其他数量。因此,它会根据需要调用这些工具并压缩信息。这就是你的高级非确定性编排。但假设它并没有产生高质量的结果,对吧?

对。所以非确定性编排会给你某种总结,但它不可操作。你会怎么做?好吧,让我们添加另一个代理。对。所以你开始拥有这个第三个节点,它在这个 DAG 中处于同一层级。对。因为实际上,你只是在调用和接收响应。所以你正在从前两个节点获取信息,然后你将发送它。

到下一个节点。所以与其说同一层级,不如说 DAG 中前三个节点在一个层级中,然后你收集所有这些信息,将其传递给你的分析工具或任何其他工具,你的摘要工具,如果你愿意的话。我不知道在这里该怎么称呼,因为我不熟悉电子商务,但你明白我的意思。所以你把它传递给下一个节点,然后它总结并协调一个高质量的响应。

但是假设你实际上希望它根据当前事件灵活变化。那么你可以将其设置为非确定性代理。现在你将拥有这个 DAG,它只是一堆非确定性代理,它们不断运行。它们都有单独的用例或单独的。这就像你赋予代理更多功能。没错。你正在使用 DAG 中所有这些不同的步骤来丰富代理。没错。

是的,这很有趣。你如何看待成本?因为我知道你之前提到了这一点。是的,是的,所以......

这是一个有趣的方法。对于我们的代理,我们构建了一个自定义评估框架。所以我们基于 OpenAI,但我们必须将评估带给我们的工程师。我们是平台团队。所以我们的目标是提高工程师的生产力,对吧?他们目前正在使用 Python 或 TypeScript。对于我们的特性工程师来说,Python 非常容易,对吧?你只需要那个基本的

OpenAI 模型,但对于 TypeScript,现实世界中没有任何东西存在。所以我们构建了自己的自定义评估框架,可以深入处理这个问题。在其中,我们将它连接到 CI/CD 以获得信心和不同的杠杆。我们能够评估

每个代理的成本是多少,这基于我们的评估,并根据使用情况和其他我们正在关注的指标,创建一个关于它在生产环境中将花费多少的近似值。哇。你是怎么做到的?因为这太吸引人了。我甚至不知道从哪里开始。试着想想,你是如何分解这个问题的?哦,我的天哪。是的,是的。所以我们能够利用......我......

我在我被允许分享的内容和我不能分享的内容之间划了一条细线。对。所以我们有内部物流能够定义和衡量 LLM 的成本使用情况,并确定我们能够使用什么,我们如何在我们的内部逻辑中使用它。

将其与我们评估的非常接近现实世界的实际货币价值相关联。然后我们在任何你用来评估的遥测数据中拥有所有测量和监控数据,好吧,我们预计有多少用户将使用它,并将这些数字与我们正在进行的实际调用相关联。我们发现

使用代理,特别是对于任何迭代或任何回顾或反思,我们能够确定我们正在获得非常准确的结果,在我们的评估中准确率达到 98% 到 100%,成本更低,因为我们能够使用更好、更便宜的模型等等。你认为这是为什么?因为你,

传递更多上下文,你提供给它更好的信息。是什么......

归根结底,一半是提示工程,一半是软件工程。所以我们需要确定如何减少令牌大小,如何减少调用次数。你陷入了这个优化循环中。你永远不会做到完美,对吧?但是我们团队有很多优化狂热者非常关注成本和质量,以及我们如何针对这些进行优化。

当他们查看成本时,他们会想,我们能否去掉提示中的这句话?因为这意味着更少的输入令牌。当你乘以......

我们将要使用这个代理的提示数量以及现实世界中将要使用这个代理的所有人员,这开始累加起来。没错。如果你从顾问的角度考虑这个问题,你可能会要求他们在某些情况下做更少的事情,对吧?这与他们相关的 时间和金钱更少。

也许你会解雇他们,因为,你知道,现在我们谈论的是 LLM 代理而不是顾问,对吧?所以让我改一下说法。所以回到正题,假设我们考虑顾问,对于这些顾问,你会有这样的概念,有时你

你要求他们少做一些事情,少花钱,少花时间,少花钱,你知道,运营成本。但在其他时候,你会说,好吧,我们已经完成了这项任务,我们不再需要这个代理了。我们不再需要这个顾问了,因为我们正在做不同的事情。有了这个,我认为这很强大,因为你可以考虑这些,因为它们很容易启动。

与之相关的开发时间使我们能够更快地删除内容,并说,好吧,你看,你花了两个小时在这个上面。对不起,但这将不再被使用了。对于工程师来说,这是一个更容易的对话,因为

与花费六个月、十二个月、多年迭代来删除他们一直在做的项目相比。是的,你的投入要少得多。你花了几个小时把它放在一起。当你谈到市场时,我也能想象你也会在那里标价。例如,如果你使用这个代理,预计它将花费 X 数量的钱。

如果你一起使用所有这些代理,它可能会进行一些复杂的计算,并将你计划在生产环境中使用的所有不同代理的价格加起来。因此,你可以得到一个估计,好的,好吧,

这个代理可能会花费我们 X 数量的钱。我们能接受吗?我们能收回成本吗?有人能够将某些东西直接发布到生产环境中吗?它如何从我在某个随机部门开始?我现在想创建我的代理,并将这几个不同的小型代理组合在一起,然后我说,好吧,我认为我做到了。让我们发布它。

然后呢,我该如何发布它?我该如何从拥有某些东西到生产环境?这是一个非常好的问题。所以组织动态将会改变。这是我在过去几个月里遇到的最疯狂的认识之一。回到我们之前谈论的内容,我不记得我们当时是否在录音,但是,但是

本质上,我们必须让部门更紧密地合作,对吧?所以当你拥有这个产品特性时,不再是人们坐在一个封闭的房间里弄清楚用户的需求。而且,你知道,你有两个人在构思这个,然后他们把它发送给工程师,工程师会说他们能做什么和不能做什么,并给你一个时间评估。是的,这仍然是一个因素,对吧?

但是确定这一点并启用实际的 POC 或 MVP 的速度要快得多。这就是这其中的疯狂之处。因为你现在可以说,好吧,

你知道,如果构建这个需要七个小时,我们可以给你一个 POC 来看看,我们是否根据你部门对这个的设想满足了用户的需求?过去,即使我们迭代很快,我们也在使用 CI/CD,所以我们正在更新生产环境,但只是拼图中非常小的部分。

在这个过程中,你几乎拿起了整个拼图,并把它交给另一个部门,说,嘿,看看这个。我们在这里错过了什么?我是一个三岁孩子,记得吗?所以,像,在这个时间点上,我没有理解我们所拥有的这种语言差距?然后他们可以给你关于你需要在哪里集中你的时间作为工程师的可操作反馈。但这对于教育科技来说,这是将课程开发带入进来,这是将销售带入进来,这是将营销带入进来。你正在将这些其他部门带入

比我们以往见过的更紧密的合作。但这对于新的产品,对吧?对。或者你仍然觉得

对于庞大的代码库和整体而言,这种能力仍然存在,你会回过头来说,好吧,我们想要这个特性。好的。如果它是新的代理,我可以在几个小时内创建它。如果是,我必须去挖掘约翰尼两年前所做的工作。这将花费我几个月的时间。是的,这是一个很好的问题。作为每个软件工程师,

我们会说这取决于情况,对吧?因为工程师有很多上下文,并且需要继续拥有这些上下文,用于整体以及应用程序的其他领域。但我认为我们将开始看到的是,将会有方法来弃用旧的代码库或可能是一些更具技术挑战性的代码库。它们可以用代理来更新,以解决过去我们看到的一些问题

我们过去看到的问题。哇,这真是令人着迷,因为归根结底,最终用户只想要墙上的洞。他们不需要钻头。他们不在乎是不是锤子在做这件事。他们想要墙上的洞。所以如果你用代理给他们,而且这实际上是一种更好的体验,那么

在你的方面,后端要简单得多,更容易启动并更快地获得验证,这感觉就像双赢。它也感觉非常可怕,因为你......

对你来说也是如此,对吧?好的。不仅仅是我。是的。所以回到我们如何将这个投入生产?因为我并没有真正回答这个问题。我只是对这部分内容感到兴奋。组织动态。所以我们将开始看到的是,发布第一个 LLM AI 非确定性软件开发周期是一件非常可怕的事情。这非常非常困难。而且

我们采取了一种方法,我们的评估是我们系统的唯一真理。我们有数千个非常类似于 TDD 的评估。你可以把它们想象成测试。

对。我们正在生成用户提示,不是来自生产环境,而是我们预见到在生产环境中会发生的提示。这些提示正在添加到我们的评估中,以评估我们正在看到的边界是什么?我们的 LLM 如何为我们评估这些边界?敏感话题是我们必须非常小心的事情。

世界各地的立法都不同。所以我们必须考虑世界各地不同的立法要求。当我们这样做的时候,

我们必须构建我们的评估。所以我们有这个产品团队带着这个基于用户的产品目标。我们确定你将与相关部门和工程师一起需要的产品设计冲刺。现在我们正在构建评估。现在,有趣的部分是,在一些公司中,工程师与最终用户做什么或实际输入到系统中的内容相去甚远。所以这个协作循环只是

在每一步都更加紧密。所以你正在使用我们的 CI/CD 管道构建这些评估。我们能够获得每个代理的数千个评估,以获得 98% 到 100% 的时间获得正确结果的置信度。当你过去进行测试时,对吧?当你测试确定性函数时,你会感到可靠。你会觉得你会发布可靠的工作,对吧?

有了这个,总会有一个概念,但是如果,对吧?因为它不是确定性的。如果它对我们来说像加拿大航空一样出问题了怎么办?这发生了什么?是的。这将永远存在。它本质上是非确定性的。你必须接受这一点。所以部分原因是关于接受生产部署中更高的风险。但是当我们正在经历这个并部署这个时,

我的意思是,实际上我们所做的只是设置不同的环境变量。你发布这个非确定性代理就像你在每一个其他生产部署中一样。你的风险只是增加了。还有一些其他领域吗?因为它感觉你可以把你公司现在正在做的事情复制到不同的

或用例?有些,我相信你已经考虑过了。嗯,我认为这也会成为这些问题的良好解决方法。你认为还有什么其他领域可以在这里派上用场?这是一个非常好的问题。

很多都取决于可用数据,对吧?所以,再说一次,这归结于质量。为了评估质量,你必须有一个关于什么是好什么是坏的概念。所以我曾在几个不同的领域工作过,但我专注于教育科技。所以我的主要理解是教育科技。但我非常喜欢奇幻足球和其他类似的领域,对吧?所以让我们考虑奇幻足球作为一种,

美式足球或者你说足球像足球?是的,两者都是。我在美国长大踢足球,但在世界各地都是足球。阿森纳的超级粉丝。所以我非常喜欢足球。

来自美国以外的地方,但我的所有朋友实际上只知道美式足球。所以我必须忠于我所知道的以及我的朋友所知道的东西。所以我们在这里要考虑美式足球,但你可以考虑,你知道,受伤分析。你可以有一个代理来考虑这个问题,好吧,这个球员会打球吗?这个球员要休息多久?你可以考虑,你知道,

你可以考虑球队在本赛季剩余时间的赛程强度,并确定你想要关注的交易目标。我认为这通常适用于许多不同的运动。但是有很多方法可以实现这种程度的代理。唯一重要的是数据在哪里以及谁拥有数据。在奇幻足球世界中,这真的很难找到,因为每个人都在抬高价格。

真的,就数据而言,要获得所有这些数据。是的,为了其他目的,对吧?像获得跨越许多不同系统的数据和高质量数据真的很难。

使你能够对它的表现进行回测和未来预测。但是假设你进入医疗保健领域,你有很多 HIPAA 规则。所以你必须小心这一点。但是有一些方法可以在那里聚合数据,以确定,你知道,有一个代理能够确定,你知道,

像硅谷热狗,不是热狗一样简单的事情。如果你看过那个节目,你可以把它带入到严肃的,不严肃的问题中。对。并帮助他们确定他们在该领域的各个要素中的位置。是的。我当时在想政府合同和可以帮助你确定政府合同或至少帮助你填写提案的代理。是的。

尽可能多地。是的。现在,我当时在想回到那个足球的例子,奇幻足球的例子,在你看来,是什么让这成为一个代理需求而不是传统的机器学习需求?这是一个很好的问题。所以我不认为两者是相互排斥的。我一直在看很多,你知道,

在 YouTube 和其他地方很容易定义代理的视频,因为我一直,我一直基本上一直在向我公司其他部门讲解这个。所以我正在尝试最好的方法来减少技术性。我会这样定义:ML 或 LLM,任何模型,对吧?无论是 LLM 还是传统的 AI、ML 模型,都是脑力。它们可以执行非常具体的任务。

代理能够使用这种脑力为你完成工作。所以这是关于,这与 LLM 和代理的集成关系不大,更多的是关于给予,使模型能够执行任务。这是我注意到的一个疯狂的部分。♪