生产中的代理[有限剧集播客] - 第三集探讨了网络代理的概念——人工智能驱动的系统,它像人类一样与网络交互,使用浏览器而不是仅仅依赖 API。讨论涵盖了为什么网络代理正在成为人工智能发展的自然步骤,它们相对于基于 API 的系统的优势,以及它们对电子商务和自动化的潜在影响。对话还强调了使网站对代理友好的挑战,并设想了未来代理可以无缝处理预订航班或订购食物等任务。 嘉宾: Paul van der Boor - Prosus 集团人工智能副总裁 Chiara Caratelli - Prosus 集团数据科学家 主持人: Demetrios Brinkmann - MLOps 社区的创始人~~~~~~~~ ✌️联系我们✌️~~~~~~~ 收听所有剧集、博客、新闻通讯等:https://go.mlops.community/TYExplore 加入我们的 Slack 社区[https://go.mlops.community/slack] 关注我们的 X/Twitter [@mlopscommunity](https://x.com/mlopscommunity) 或[LinkedIn](https://go.mlops.community/linkedin)] 注册参加下一个聚会:[https://go.mlops.community/register] MLOps 礼品/商品:[https://shop.mlops.community/] 在 LinkedIn 上联系 Demetrios:/dpbrinkm</context> <raw_text>0 今天我们讨论的是网络代理。本集将完全围绕流程团队如何利用网络代理以及为什么您甚至想要尝试让网络代理工作展开,因为这是我最大的疑问。它不只是增加了复杂性,您可以使用这些 API 代理吗?让我们
让我们进入本集。这是 MLOps 社区和流程协作。我们正在进行这个关于生产中代理的有限剧集。好了,网络代理,我们来了。我们将深入了解它们是什么,它们不是什么。你前一天或两天告诉我一些关于计算机使用是计算机的充分利用的信息,就像名称所述。然后网络代理几乎……
是 API 和计算机使用的混合体?什么是网络代理?它们为什么有用?让我们开始吧。是的,我们谈到了这样一个事实,即,代理是什么?我回到这一点的简单定义是,代理是与世界交互的大型语言模型。与世界交互的一种方式是
当然,我们人类与世界互动的一种方式是通过……互联网。网络,对吧?更具体地说,是浏览器。因为在 Prozis,我们是大型科技公司,我们通过我们的公司及其产品与大约 20 亿遍布全球的消费者互动,这些产品几乎全部都在网络上或通过应用程序。对。
当我们考虑代理的下一阶段时,我们当然也在探索网络……
如何被代理用来帮助用户导航、查找、发现、交易、购买等等。这就是为什么我们有一个活跃的团队致力于代理的网络使用。为什么只有网络代理,为什么不完全采用计算机使用?是的,我认为……
我们开始赋予这些代理与世界互动能力的方式是循序渐进的。这种渐进性增量性在于,您可以增加复杂性并考虑第一个
我们赋予大型语言模型访问世界其他部分的方式是通过简单的 API 和函数调用。现在我们说,也许它们实际上可以通过浏览器与世界互动。当然,在那之后,很可能就是计算机,正如我们已经看到的那样,然后也许在那之后是物理世界。因此,网络浏览器是我们想要采取的下一步,自然的一步。
也是因为正如我所说,我们与消费者、客户的互动很多都是通过网络进行的。
我知道你们做了很多电子商务方面的事情,例如 OLX 就是一个很大的例子。如果您使用代理进行网络浏览,为什么不使用 API 呢?您将如何构建一个针对代理网络浏览进行优化的电子商务网站?您是如何考虑这个问题的?是的,让我们从为什么我们要这样做的问题开始。好吧,
正如我提到的,我认为这是一种我们今天与世界互动非常重要的方式。我们发现事物的方式,我们学习、购买、购物和交换商品的方式。这就是为什么我们试图解决这个问题。在 Prozis,我们所有的公司都拥有与世界互动的网络界面。而且……
然后问题是,好吧,你如何开始走这条路?我的意思是,为什么不通过 API 呢?事实是,实际上,你知道,我们想要让代理访问的大多数东西都不是为代理访问而设计的。它们还没有被 API 化。所以……等等,这是什么意思?像……
网站上的照片或什么没有被 API 化?好吧,如果我,比如说我想要,所以我们在市场上做出的一个预测是,明年将有 10% 的电子商务交易将由代理代表消费者完成,对吧?无论是否是 10%,我认为可以肯定的是,代理将在不久的将来开始代表我们在网络上采取行动。
但问题是,好的,哪种类型的行动?假设您想订购航班或订购比萨饼送到您家。今天,您显然会访问浏览器,您有鼠标,您可以四处点击。目前还没有所有这些操作的 API,对吧?您访问一个 URL,然后代理需要弄清楚,好的,它在哪里点击,例如?它是根据视觉、站点地图来做的吗?是的。
所以这不是一个常规的 API。显然,您正在与之交互的网站背后有很多 API,但是没有明显的地方可以以一种非常结构化的方式将代理插入其中,例如,今天代理与我们赋予它们访问权限的所有其他工具进行交互。是的,我还想指出,我已经听说了 API 的优缺点以及
和网络浏览或计算机使用代理。我们将就这个特定主题进行一场完整的辩论,听取工程师关于为什么使用一个以及为什么使用另一个以及为什么它是未来的不同想法和观点。
所以当我想到网络代理时,一个明确的价值主张是您可以一次构建它,它就可以出去做它需要做的事情。您不依赖 API,这是一个巨大的卖点,因为 API 非常挑剔。所以我以前说过,你……
不必考虑构建一堆不同的 API 调用,然后代理必须选择它将使用哪个工具,它将去查找哪个 API。您不必担心,哦,这个 API 现在改变了它的工作方式。所以我们必须更新,然后它会破坏代理。您只需构建网络代理。它会出去探索。它以我们与网络交互的方式与网络交互。
想想与网络互动。所以它更像人。现在,让我们来看这的第二部分,即您如何考虑构建网站,尤其是在电子商务中,这些网站对代理友好,网络浏览器代理友好?我的意思是,那……
随着代理的发展,甚至不清楚代理友好意味着什么。但回到你的问题,为什么不使用 API 呢?正如您将了解到的,今天的 API 监听这个播客,您有一些参数输入,您将其发送到其他地方,并且您期望一个标准的响应。即使在 Gen AI 世界中,它也可能是这样的,嘿,我有一个提示发送到 API,该提示用于将文本转换为图像,到文本到图像模型,并以某种格式返回图像。是的。
而且你知道期望什么,你知道你可以期望什么回来。例如,亚马逊或……甚至 LinkedIn 都没有 API。你不能说,好吧,假设亚马逊,你知道,我侄女的礼物。你不能说,这就是查询。然后,你知道,将一些东西添加到我的购物篮中。实际上,我们作为人类需要采取一系列步骤才能到达那里。您显然会查看,您会在网上搜索。
使用查询,您搜索,查看某些项目,四处点击,也许阅读评论。所以很多事情都融入到购物体验中。顺便说一句,订购食物的体验也是如此,正如我们所讨论的那样,或者在分类广告空间中查找二手商品,您需要与卖家交谈。所以所有这些步骤都是
是我们现在使用网络和浏览器进行的事情,我们正在探索代理在价值链中执行这些步骤的程度。你不能用 API 来做到这一点。这是一个非常清楚的……
为什么您想用网络代理来做。是的,如果它已经为我们设计好了,我的意思是,这就是数十亿人今天通过浏览器与网络互动的方式。如果您能够可靠地做到这一点,那么这意味着您可以非常快速地开始赋予这些代理大量其他功能,因为您可以说,嘿,去网上查看并为我预订两天的餐厅
对。然后今晚 7 点,它将能够查看可用的内容等等,因为您可以像您或我一样浏览网络。我会说,自从我们在过去几天里谈论代理这么多以来,整个星期我都在流程办公室进行代理训练营,并与团队中的每个人讨论他们正在从事的工作,他们如何处理代理,那里的一些挑战是什么?
当我打开我的日历来查找我们录制此播客的地点时,然后我必须将该位置复制并粘贴到 Uber 或 Google 地图中,我坐在那里,我想,这太……
落后了,因为代理将接管这个,或者我的手机至少不需要是代理。我的手机的智能如何不知道我此时有一个日历邀请?也许我应该已经订购了 Uber,这样我才能准时到达那里。是的,我认为您已经在导航方面领先了几步,首先是在操作系统、多个应用程序之间
我们正在研究为此而设计的框架,因此实际上是在应用程序之间进行这种计算机使用。某些基准测试,如 OS World,就是针对这些需要打开目录、加载一些文件、读取它们并将它们放入 Excel 并打开数据透视表之类的任务进行衡量的。这些都是某种多应用程序操作。也许像您提到的那样复制地址并通过他们的应用程序订购 Uber。
我认为这肯定即将到来。但即使是之前的步骤,您在一个网站内,对吧?假设在像 OLX 网站、Glove 或 iFood 或 eMag 或 Takealot 这样的电子商务网站内,所有这些我们集团拥有的网站。如果您想购买东西,即使那样也是……
很难,因为弹出窗口会不断出现。有,你知道,如果你想点一些食物,它会说,你知道,你想要什么配菜?你想要什么配料?显然,会有,你知道,一大堆其他的过滤器。有时我们设计的东西。我是人类吗?或者,你知道,你是机器人吗?像 CAPTCHA 等等。所有这些都是……
让它,比如说,很难完成获取食物或订购任何东西的整个任务。即使对人类来说也很难。好吧,对我们中的一些人来说很难,当然。目前对亚洲人来说更难。是的,它让我想起了几集前我们进行的关于认知负荷的整个对话,以及我们如何希望我们所做的事情
希望认知负荷尽可能少,这样我们就可以将所有宝贵的脑力用于真正需要我们全部认知负荷的事情。但是现在让我们跳到我们可以与 Chiara 交谈的部分,她在过去六个月里一直在研究网络代理。她花了半年时间深入研究它,并真正接触到什么有效,什么无效,
玩转网络框架并向她学习并获得她的见解。太好了。Chiara,你来了。感谢你的加入。我很想从你一直在做的项目的简要概述开始,以便人们了解你所经历的网络代理之旅。
所以当我加入团队时,我做的第一个项目是构建一个可以帮助人们订购食物的代理。听起来像是一个简单的任务,但它实际上非常复杂。因此,您需要了解用户,他们想要什么,饮食限制是什么,上下文,以及一天中的时间,他们在哪里,该地区是否有活动。这个代理应该能够
订购食物。所以去食品平台,也许是几个平台,就可用的东西向用户提供建议,促销活动在哪里,最终能够订购食物。正如 Paul 之前所说,并非所有东西都可通过 API 获得。因此,我们决定将此任务委托给网络代理。网络代理
我的意思是,它们现在很流行是有原因的。你已经谈到了它。它们非常强大。我们看到目前有很多可用的。每个月都会出现一些。因此,了解如何浏览这个代理领域确实是一个挑战。所以我立即开始尝试所有这些工具。所以
有很多,比如 Multion 可能是目前最著名的,但也有一些来自公司和研究小组的开源项目。这些工具都非常好,但我们很快发现它们有很多局限性。
所以一件对代理来说真正的大问题是,网站是为人类而构建的。有很多信息根本不适合代理。您有动态内容和加载。页面的 DOM 可能很大,可能会发生变化。当然,还有像验证码这样的标准内容。听起来像……
对我们来说很容易。所以我们只会将此任务的执行委托给代理,但事实并非如此。MARK MANDEL:我的意思是,在这一点上,我们已经构建了数据分析师和其他东西,从我们的管理团队来看,要正确处理这些东西要复杂得多,因为您必须获取数据库,必须运行查询,必须有代码执行器,必须进行验证。
我们想,好吧,我们现在要做的就是我们将把这个代理发送到网络,基本上进行 beautiful soup 风格的导航。只是去,像……很简单。是的,是的。实际上,你知道,这花了很长时间。它甚至没有完成任何任务,即使是当时的 Multion。我们查看了所有其他框架。所以……是的,我们看到了……一个很好的例子是 WebVoyager,它是第一个网络代理之一……
他们还发布了一个基准测试。它是公开的。许多代理都以此为基准。而且
他们说,成功率在一个网站到另一个网站以及一项任务到另一项任务之间会有很大变化。例如,您需要执行很多操作的网站,例如 booking.com 或 Google Flights,对于代理来说很难导航。尤其是在一个操作可以触发代理无法预料的其他事情时。例如,当您预订航班时,您会选择一个机场。
目的地机场会根据出发机场而变化,对吧?所以这对代理来说非常复杂。所以是的,我们开始尝试所有这些工具。我们建立了很多关于它们的内部知识以及它们使用的所有技术。最后,我们决定自己构建,基本上。框架?构建我们自己的网络代理,是的。代理的……
逻辑如何工作,或者网络代理的主干做什么?因为我知道 API 代理使用工具,并且您可以进行函数调用或其他操作,但是对于网络代理,它是什么样的?它实际上归结为非常相似的东西。代理是可以访问信息并可以决定下一步做什么的东西,对吧?
所以在这种情况下,信息可能是页面的屏幕截图或 DOM、HTML,您可以从浏览器获取很多东西。它可以做的是人类也可以做的操作,例如点击、输入文本、滚动等等。这些就像它拥有的工具。是的。这些只不过是代理可以调用的工具。所以……
它的运行方式通常是存在一个规划器,一旦它获得任务,就会决定如何执行它。它可能包括几个步骤,例如涉及多个网站。然后有一个代理来选择使用哪个工具。
例如,如果有一个 Cookie 横幅,并且是点击接受,这可能是意想不到的事情。这就是为什么你需要一个代理。您需要能够对开放世界做出反应。顺便说一句,这是一个很好的例子,因为我们在 WebArena 上进行基准测试,并查看其他人对 WebArena 进行基准测试。
结果发现这根本无法转化为我们正在进行的测试,对吧?实际平均结果没有比较,而且它们也超级不可预测,对吧?所以有一次它们有效,有一次无效。因此,我们必须设计模拟,以便查看在 20 次中有多少次此操作会在我们关心的任务上成功,对吧?哦,哇。是的,大多数时候我们看到代理陷入循环中,对吧?
而且,是的,只是不知道下一步该做什么。你最终停了下来,因为也许任务不明确,或者规划器给出的任务不明确。或者动作空间不明确,因为我们也看到,你知道,你正在查看一个网站。对我们来说,这很明显,对吧?你查看一个网站,现在有很多,你知道,像,
我们都很熟悉。有一个搜索栏。滚动是这些代理很难执行的操作之一。但是您基本上拥有,您已经确定了这是网站。您通过一些大型语言模型进行了一些推理,告诉您下一步要做什么。但是在这个网站的什么地方点击才能做到这一点呢?只是理解与我想采取的操作相对应的坐标是什么,对吧?这并不是这些多模式图像模型擅长的事情。就像拍摄一张图像……
理解有哪些类型的操作是可以的,但是然后说,“好的,那么你需要点击这样的坐标来执行该操作。”或者向下滚动,因为它可能在页面下方,因为我看不到它。或者你看不到它,因为有一个隐私或 Cookie 横幅挡住了。是的,我们首先处理的事情之一实际上是滚动。
所以我们查看了周围的开源框架,并尝试使用类似的策略,但我们只选择了适用于用例的特定策略。我认为这非常重要,因为让代理成功的关键是尽可能限制它必须做出的选择数量。所有这些工具都针对一个特定目标进行了优化,即能够浏览网络。
但我们的目标不同。所以在我们的例子中,我们不能使用这样的工具。它对我们不起作用。因此,我们需要构建一个能够与平台交互以订购食物的网络代理。这是一个不同的任务。由于此任务的范围较小,我们可以为此进行优化。因此,我们构建了一个可以获取更多页面信息的代理。
根据我们正在使用的平台,我们可以提示代理以某种方式运行。例如,您首先在搜索栏中搜索,也许您需要输入您的邮政地址等等。有些事情总是同时发生的。
是的,这也是我们所做的另一件事。我们采用了一些工具并将它们合并在一起。例如,如果您总是同时执行某些操作,为什么为此使用两种工具呢?例如,当您搜索某些内容时,您会输入然后按 Enter 键。所以这两个是单独的操作,但您可以将它们组合成一个工具,因为我们需要它。
您基本上从不输入而不按 Enter 键。另一件事是改进滚动。当您有很长的菜单和餐厅列表时,您需要能够获取所有信息。因此,我们采用了这种策略来处理我们的用例,并且我们获得了不错的成功率。所以我认为这里的教训是,如果您想为特定任务构建网络代理,
记住您必须执行的任务并明智地处理它。如果您不需要某些东西,请不要将其添加到代理中。那么您是否绘制了这些食品订购应用程序上的轨迹和用户流程?也许就像您去 iFood 并说……
嘿,我想点披萨,然后自己完成这个流程,以便您可以将其用作网络代理评估的金标准数据集?所以我们做的一件事是手动完成所有这些流程。我认为,除非您尝试自己动手并了解痛点,否则您无法构建任何东西。所以这是我们做的第一件事。
然后我们尝试提示代理以某种方式与网页交互。这些指令是根据它所在的页面动态加载的。这是一件事。所以所有这些方法并没有真正改变代理的工作速度。
但我们所做的是还存储代理执行的所有轨迹。我们定义了代理可以运行的三种模式。一种是传统模式,它会抓取页面的屏幕截图,加载内容,然后决定下一步要采取的操作。
另一种是快速模式,不涉及屏幕截图,我们会在我们知道的页面上这样做。因此,如果我们搜索某种食物,食物会不同,但任务会相似,我们不会加载页面的屏幕截图,因为不需要这样做。因此,代理会确切知道在哪里点击,因为它之前见过这个任务。
还有一种模式,我们称之为“反射模式”,在这种模式下,我们将直接自动化网络操作,就像某种宏一样。假设某些部分可以自动化,那么为什么让代理来做呢,对吧?所以是的,我们将所有这些东西结合起来,代理会尝试以快速的方式做事,如果它没有成功,就会以较慢的方式做事。
所以这几乎就像慢速是备用方案一样,如果它不能快速完成,它会慢慢完成,你会给它更多一点推理,或者你会给它屏幕截图,它会更彻底。我认为这是一个有趣的,如果您试图了解我们认为这些东西会走向何方,那就是我们从一组工具和框架开始,这些工具和框架并非真正旨在与网络交互。但是通过 Kara 刚刚解释的这三种模式……
我们能够做到这一点,因为这些轨迹它知道在特定网站上针对特定任务是成功的,访问这些轨迹,你知道,学习的,比如说,学习的网站动作空间,然后它就有点,引用一下,熟悉了。是的。对。
我认为这是我们如果考虑我们的世界,就像您想要拥有的那样,就像当我们访问我们知道的网站时,我们很熟悉,我们可以导航,对吧?你进入 booking.com,你去了那里,对吧?你知道该怎么做。或者如果您多次订购食物,您可以看到,您不需要重新发现该页面。而这些代理本质上,我们开始看到,因为我们能够创建对网站的持久或学习的直觉,它们变得……
专家,首先是熟悉,然后是专家,并且可以更快地让您获得所需的输出,而且我知道我仍然试图区分网络代理与学习体验的不同之处和新之处,它已经看到的东西,您是如何保存它的,以及您是如何确保代理可以访问它的,您是否将其放入数据库中,您是否将其缓存,它是什么样的
我认为存储本身并不重要,只要这是符合隐私的,并且不会导致泄露用户信息即可。但是您正在存储它所采取的路径?
或者您正在存储操作?你在……因为你没有存储屏幕截图然后再次加载它,对吧?不,我们存储它所采取的所有路径以及页面所处的状态。因此,代理知道 DOM 的外观,它可以点击哪些元素。我之前没有提到的一件事是,我们做了一些工作来了解如何清理这个 DOM,因为那里有很多信息。
但是代理不需要所有这些信息。它应该获取尽可能少的信息。例如,我们只获取可点击的元素,并将此与屏幕截图结合起来。在快速模式下,代理可以更盲目一些,比如说,知道在哪里点击,因为任务非常相似。很好。现在,我认为我们还想谈论的另一件事是……
规划和执行之间的差异以及您对每个使用的模型,因为我们知道您可能正在使用推理模型进行规划,但是您是否将其卸载到一个较小的模型并仅执行或微调?它是什么样的?对于这个特定任务,我们使用基础模型。我们对模型进行了实验
所有主要的基础模型。当然,我们看到了一些差异。对于规划者来说,拥有一个擅长规划的模型当然会有所帮助,例如 O1。对于执行本身,您实际上并不需要一个擅长规划的模型,比如说,因为只要它知道该做什么,这是一个非常有限的动作空间,对吧?这是一个重要的……
正在出现的是,规划和执行的分离是
当您开始与世界交互时,对吧?我们现在谈论的当然是网络,因为规划本身需要大量的推理来理解用户的意图。如果您进行执行,则基本上意味着我实际上需要非常了解动作空间。并且能够将该计划转换为我世界的动作空间,从更广泛的意义上说,可能是网络,也可能是 iFood 之类的领域,
或 OLX,或 PayU,或我们熟知并了解的任何其他网站,第二个执行代理然后需要导航以帮助成功获得该结果。模拟是否就是从这里开始的?告诉我更多关于模拟是什么以及它们如何提供帮助的信息。
就模拟而言,我认为网络的真正优势在于,这与我们应用LLM的其他地方不同,你可以直接派这些代理去探索网站。就像网络爬虫,对吧?本质上就是这样。你可以基本上说,去OLX上帮我找一张在华沙的蓝色沙发。然后它就可以去探索了。只要我们定义了成功的标准,
例如,找到了沙发或将其添加到购物车等等,那么我们就可以进行一百次尝试,它就会学习最有可能达到该状态的轨迹。这就是它有点像,你知道的,它是模拟的,更多的是探索以了解这些网站能做什么和不能做什么。
这使你能够获得一个系统,该系统实际上非常擅长在你的产品目录或电子商务环境中执行操作。这基本上就像你正在绘制空间图。没错。然后一旦你有了地图,你就可以更容易地遍历它。
嗯,不,我认为我们在计算机使用中也看到了类似的情况,人们开始绘制应用程序的映射,对吧?所以,如果你知道Excel或Word或常用应用程序上的每个按钮,如果我走到你面前说,嘿,你知道,请用这种字体背景为我制作一个暗模式的演示文稿,
而你已经多次做过PowerPoint,你知道去哪里。我认为这种映射的动作空间是可以模拟的,因为你可以让你的代理去探索应用程序。你使用快捷键作为工具吗?你可以。例如,Tab就是一个非常有用的快捷键。了解所有操作。你可以通过Tab键完成网页上的大部分操作。是的,是的。
这也是……
这也是将规划器和执行器分开的一个原因,因为执行器只有有限的工具,只需要理解它是否已完成。因此,我们将有一个规划器告诉执行器一个非常具体的任务。例如,如果我要在Olix上搜索一件T恤,首先要打开Olix页面,在搜索栏中搜索等等。
规划器将承担所有这些子任务并执行它们,并在完成后停止,并将响应提供给主代理,然后主代理将处理它并决定下一步做什么。哦,不错。所以,是的,你可以绘制空间图,并从两方面为执行代理提供更好的信息,基本上,从规划器和执行器方面。
所以我认为一旦我们获得更多数据,还有很大的改进空间。好的,现在让我们谈谈你使用的一些框架。你提到了WebVoyager。你还提到了Multion。我想你肯定很喜欢其中的一些东西。其中某个Web框架有什么特别吸引你的地方吗?
特别是,也许是一种新颖的做事方式,或者是你觉得带回到你创建的自己框架中的好方法?所以我非常喜欢WebVoyager。它是其他框架中最简单的。许多框架都是在其基础上构建的。但规划器和执行器之间的分离非常清晰。执行器没有很多……
可用的工具,只是通过SDK进行基本的网络交互,在这种情况下,它使用的是Selenium,这是一个测试工具。我们决定选择另一个,但它的优势在于它的简单性。所以是的,我认为这非常强大,我也喜欢这种视觉方法。
因为DOM并不总是能引导你走向正确的方向,因为它可能包含误导性信息。但最终重要的是用户所看到的。所以,是的,我认为这种方法非常……
非常有用。其他框架在其基础上构建,并在规划方面增加了更多复杂性。例如,我们看到Agent E添加了一种更高级别的规划类型,这提高了成功率。它确实如此,但它也使任务更难执行,速度更慢。我们看到了其他方法,例如用于规划的蒙特卡洛树搜索。这也是Multion的一个开源项目。
最后,我们决定选择最简单的可能性,因为我们的任务很明确。我们知道我们必须做什么,我们最终使用了这种代理作为一种API。我们创建了一个非常模块化的代码,这样我们就可以将事情委托给一个Web代理,
我们不知道它在做什么。它在我们应用程序中是一种黑盒,会给我们提供响应,我们可以利用它采取行动并与用户互动,因为最终这是最重要的。基本上,我们处于你旅程未来六个月的时间点。根据你现在的了解,如果你可以回到六个月前,你会告诉自己关于这段旅程的什么?
很多事情。让我们从我认为最重要的一点开始,那就是真正理解你试图解决的问题。深入研究,尝试自己动手去做,因为Web代理正在自动化任务。所以尝试自己动手去做。尝试看看有哪些痛点。我会探索所有周围的可能性,但要提醒自己,
这些工具不一定是我的需要。另一个有帮助的方法是将其视为一个软件工程问题,而不是数据科学问题。我说这话是因为我来自数据科学背景。所以这对我来说真的非常重要。这是什么意思?有什么区别?是的,我会谈到这一点。所以这
不是一个数据科学项目,而是一个软件工程项目,其中包含一些LLM步骤。这意味着你可以采用软件工程的所有良好实践,例如保持模块化、分离职责以及尽可能保持简单,例如尝试获得更多控制
我认为你讨论过SQL代理,在这里这一点就更加重要了。但重要的是要理解你需要代理的地方和不需要代理的地方。并尽量减少LLM调用的次数。
我为什么这么说?因为当你处理这些代理项目时,你会非常想使用所有这些具有高级抽象的高级框架,通过代理完成所有事情。但这并不是正确的做法。我的意思是,做概念验证、玩耍是很好的,但如果你需要构建一个可用的东西,你需要有控制权。
所以考虑不同的模块真的很有帮助。我有一个规划器需要很好地思考,但执行部分不一定需要由代理来完成。例如,如果有些事情可以通过确定性方法来完成,那就好多了。
一个例子:在这个工具中,我们必须提取用户信息,因为我们必须了解用户的背景,例如他们是否有饮食限制,诸如此类的事情。我们并不总是需要它,但大多数时候我们都需要它。我非常天真地构建了一个可以与数据库交互、检索信息的代理,
但实际上,我们不需要这样做。如果你可以只提取数据并将其添加到上下文中,例如添加到提示中,为什么要使用代理呢?这对我来说是一个很大的启示,因为它使事情变得更加简单,并给了我们控制权。所以在需要的地方使用框架,但请记住,
你可以降低级别,并对重要的部分有更多控制。并测试事物,尝试查找边缘情况,尝试查找不起作用的内容并享受乐趣。这就是你会告诉自己的话。你没有玩得开心吗?我玩得很开心。在哪里使用代理以及何时使用代理的想法是……
这是一个非常吸引人的观点,因为正如你所说,你可以构建一个代理来做这件事,但如果你可以在没有代理的情况下做到这一点,它将更可预测。我听到过另一种说法,
我可以快速原型化一个代理或创建一个代理,如果我通过代理来做,而不是通过传统的软件开发来做,它几乎更快。你见过或对这方面有什么想法吗?我的意思是,我认为一般来说,对于原型设计,这绝对是正确的。你可以非常快速地制作很多东西的原型。但最终,我们的主要工作是将我们可以看到有效的东西进行扩展。
因此,由于我们平台的规模,我们的下一步总是将其扩展到数千万用户。如果可以的话,或者至少缩小范围,他们的确定性工作流程更受青睐。有很多原因,对吧?所以我认为我们倾向于,是的,以任何我们可以快速的方式进行原型设计。但之后,根据Chiara的观点……
我们需要将系统的实际本质提炼成一个可以投入生产并进行扩展的系统。通常,这可能仍然包括函数调用和代理组件,但它不像我们刚开始探索时那样自由自在。是的,是的,是的。你们在这个项目中创建了任何基准或特定的评估吗?
是的,我们选择了一些代表典型电子商务交互的任务,我们试图针对这些任务进行优化,然后我们添加了这些任务的变体,是的,尝试不同的可能性,直到我们对它感到满意为止。
你们是否需要达到某个精度分数?我们的目标是80%,是的。当然,这在很大程度上取决于任务、网站和用户本身,因为它确实取决于用户想要什么和需要什么。
例如,请求的具体程度。因此,当然有一个完整的规划步骤,代理与用户交谈并试图了解它是否拥有所有信息。然后是另一部分,执行需要拥有所有正确的信息才能执行任务。所以这一点非常重要。
例如,如果你没有地址,你就无法订购食物。用户必须愿意提供地址。所以这是一个挑战。回到确定性方法……
这里也有一些确定性组件,因为如果我需要执行某个任务,我需要通知Web代理。我需要提供正确的信息才能做到这一点。这是确定性的。规划器需要知道它需要提供地址、菜肴列表等等。是的,这非常重要,它大大提高了准确性。
我们尝试了两种方法,这绝对更好。我认为了解我们从所有这些工作中得出的结论的一种方法是,一方面,我认为如果我们只使用一个代理并想要访问我们现有的网站或平台之一,我们可以走得很远。
但我认为有一个最佳点,我们也可以,因为有很多东西我们没有在网站上显示,这些东西可能有助于用户完成电子商务旅程。举个例子,当我们在OLX时,实际上,作为OLX,我们知道,这是一个分类空间,买卖二手商品。
我们知道某些卖家的信誉如何。我们知道人们的位置。我们知道他们过去搜索过哪些东西。我们知道供求关系如何。我们知道各个类别的合理价格是多少。如果他们只是访问市场网站,这些信息不一定是代理可以访问的。但如果我们正在构建代理系统,
作为市场,我们拥有访问所有丰富的市场动态和信息以及客户评论的权限,这些信息在进行交易时肯定相关,我认为我们可以创建真正有用的代理。这当然是我们得出的结论,因为当然,我们在这里进行的实验纯粹是从外部进行的。但如果我们将两者结合起来,并建立关系
一个与平台集成的代理,并在用户想要查找或交换东西时向用户提供服务,这将创造一种全新的AI优先电子商务体验。我们希望能够讨论其中的一些内容。这又回到了为人类或代理构建网站的问题,因为你也可以公开这些数据供其他代理查看
使用,或者你可以选择不公开这些数据,我知道这是一个我们将要讨论的辩论话题,因为这就像,如果这对我有用,那么它可能对其他代理也有用,如果我们
以人类看不到的方式公开它,但如果代理出于某种原因正在使用该网站,他们将能够看到它。我不知道这会是什么样子,因为如果它没有在GUI中公开,而你正在使用Web代理,则Web代理可以访问GUI,对吧?或者它也可以访问DOM。是的。所以也许你把它放在那里,然后它就会公开它。我们看到一些网站已经开始添加markdown,例如,带有页面的描述。哦,不错。这已经非常有帮助了。
所以我看到在这个方向上有一些进展。这尤其有助于电子商务,因为你可能在一个页面中有很多商品。是的。所以如果代理可以加载它们,那就快得多。是的。我们吸取的教训是,我们必须对指令非常具体,尽可能地将它们分解。所以限制……
抱歉,执行器必须执行的思考量有限,将其委托给规划代理。因此,尽可能详细地提供说明,将它们分解成步骤,尝试使用所有可用的工具,但要以明智的方式选择它们,例如
如果你只需要在页面中进行特定的交互,只需为代理提供这些工具即可。不需要拥有所有空间。我在六个月内学到了很多东西。我不知道,如果我回顾六个月前,我现在完全是一个不同的人了。所以……
好吧,我们一直在寻找更多聪明的人。因此,实习生、其他人,如果你想来看看我们在做什么,请联系我们。很好。是的。非常聪明的人,除了坐在这张桌子旁的一些人。太棒了。Dimitris,你也是。这就是我们一起工作的原因。没错。就是这样。Process AI团队正在招聘,你可以在下面的节目说明中找到你需要了解的所有内容的链接。