We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode Creating tested, reliable AI applications

Creating tested, reliable AI applications

2024/11/13
logo of podcast Practical AI: Machine Learning, Data Science, LLM

Practical AI: Machine Learning, Data Science, LLM

AI Deep Dive AI Chapters Transcript
People
C
Chris Benson
C
Curt Maggi
D
Daniel Whitenack
朋友
Topics
Chris Benson 和 Daniel Whitenack 探讨了如何构建可靠的 AI 应用,特别关注从原型到生产环境的过渡。他们强调了测试的重要性,指出许多 AI 应用在 80% 的时间内运行良好,但在其余 20% 的时间内却会失败。他们建议将 AI 工作流分解成可测试的代码单元,并使用行为测试方法,包括最小功能测试、不变性测试和变异性测试,来评估模型的可靠性和对输入变化的敏感性。他们还讨论了低代码/无代码工具在 AI 工作流构建中的作用,以及这些工具的局限性。他们认为,虽然这些工具适合快速原型设计,但要实现生产环境的可靠性,仍然需要将工作流转化为可测试的代码。Curt Maggi 介绍了 Fly.io 平台,这是一个允许开发者快速构建和部署应用程序的平台。朋友介绍了 TimescaleDB,这是一个用于构建 AI 应用的 PostgreSQL 数据库。 Daniel Whitenack 指出,AI 代理的采用速度比预期慢,并且大型语言模型的发布速度也放缓。他认为,即使当前一代模型成为最佳模型,AI 仍然可以在企业和个人生活中产生显著的变革性影响。他强调了对现有工作流程进行评估和优化的重要性,以充分利用现有 AI 工具。 Chris Benson 认为,即使大型语言模型不再有新的突破,开源模型的兴起也会使商业模型的价值降低,并加速 AI 的普及。他指出,当前的大型语言模型可以作为工具的编排层,与其他专用工具结合使用,实现更复杂的 AI 应用。他认为,当前可用的 AI 工具已经足够强大,可以对文化和社会产生变革性影响。 朋友介绍了 TimescaleDB,这是一个用于构建 AI 应用的 PostgreSQL 数据库,它允许开发者使用熟悉的 PostgreSQL 和 SQL 语言来构建 AI 应用,无需学习新的技术。

Deep Dive

Chapters
The episode discusses the challenges of creating reliable AI applications, focusing on the transition from prototype to production and the importance of behavior testing.
  • AI applications often work well 80% of the time but fail 20% of the time.
  • Behavior testing and the flow from prototype to production are crucial.
  • The release of frontier models has slowed down, affecting expectations.

Shownotes Transcript

欢迎收听实用人工智能播客,让人工智能变得实用、高效且人人可及。如果您喜欢本节目,您一定会喜欢星期一发布的 Changelog 新闻、星期三的深度技术访谈以及星期五的精彩访谈节目,以及周末的精彩节目。通过搜索 Changelog 来找到它,感谢我们的合作伙伴 Fly.io,让您的 AI 应用在五分钟或更短的时间内启动。访问 fly.io 了解更多信息。

大家好,我是 Curt Maggi,Fly.io 的联合创始人兼首席执行官。如您所知,我们非常喜欢 Fly.io。

Fly.io 是 Changelog.com 的家园。我想知道您如何向开发人员解释 Fly.io。首先说说您的故事。

我可以根据我正在与之交谈的开发人员的几乎是代际来改变我的解释方式。对我来说,我在 Heroica 上构建了一个船舶应用程序,您可能从未使用过。Heroica 就像今天构建和发布应用程序一样。

它是 2024 年而不是 20XX 年,无论如何。让我感到压力的是,我卡住了。如果您可以在 Heroica 上使用 PostGres 构建 Rails 应用程序,那么您也可以在 Heroica 上以相同的方式构建船舶应用程序。

但是,一旦您想做一些有趣的事情,例如,我想添加以前用于弹性增长的功能。我想在我的应用程序中进行全文搜索。您可能会遇到一些限制,您可能无法真正做到这一点。

我认为最近我们看到的是人们希望在 Heroica 上的应用程序中添加所有推理内容。然而,这些天他们开始发布抽象,并让您这样做。但是我不能只运行模型。

我在这些非常专业的平台上本地运行这些黑盒平台,这些平台与我同龄的人不同。这总是很棒,但我同意。我感觉我应该真正做的事情,我在使用 Heroica 时,是让它靠近东京的用户。

对于现代开发人员来说,这从来都不是可能实现的。它更依赖于版本。版本控制很棒,对吧?但是,其中一个硬性限制是您可能卡住的地方。我们有一家公司,我不能说出这家公司的名字,但他们的口号是“五分钟启动,永远运行”。要掌握这种五分钟启动的理念,Fly.io 就像您可以快速启动,但平台上存在很多债务,您永远不会。

用完它。与 Heroica 或 Vessel 等很棒的平台不同,我们在这里最喜欢 Fly 的地方在于,无论我们想在平台上做什么,我们都有基本功能,我们有能力,作为开发人员,我们可以根据自己的目标在 Fly 上构建。这是一个为开发人员构建的无限制平台,我们认为您应该尝试一下,访问 fly.io 了解更多信息。启动应用程序只需五分钟,非常简单。再次访问 fly.io。

欢迎来到另一期实用人工智能播客。在本期节目中,我和我的嘉宾将与您保持联系,了解人工智能领域发生的一切,并讨论一些最新的趋势,并分享一些学习资源,以提升您的机器学习和人工智能技能。我是 Daniel Whitenack。

我是 Prediction Guard 的首席执行官,我们正在创建一个私有且安全的 AI 平台。我与 Chris Benson 一起加入我们,他是莱特马丁公司的首席 AI 研究工程师。

Chris,Daniel 做得很好。我知道你正在旅行,而我讽刺地认为我下周会在你所在的地方,但我想你会离开。

交换位置。

就是这样。我们在这里交换地理位置。

是的,是的。我不知道为什么 11 月总是举办很多会议,对我来说,夏季是会议月份。我不知道为什么在年底之前会有最后一点时间。

也许是为了让你获得那只你打算享用的素食火鸡。

完全正确。是的,我已经安排好了。我们准备好迎接感恩节了。

当然。

很棒。说到其他值得庆祝的事情,我想在今天开始其他讨论之前提到,我们的朋友们在 MLOps 社区中,Demetrios 和他的团队,他们正在举办一系列虚拟会议,其中一个关于 AI 代理在生产中的应用,另一个关于数据工程和人工智能,他们最新的系列活动名为“生产中的代理”,听起来非常令人兴奋。

如果您正在收听,当它上线时,您仍然可以参加活动,但您也可以在之后收看内容,我相信,因为它是录制的,看起来像一个关于 AI 代理从研发到现实应用的精彩会议。你准备好了吗?

所以去看看。他们的活动总是很棒。我想在节目开始时提到这一点,因为,您生活中是否有任何活跃的 AI 代理?你知道吗?我实际上。

现在没有,但我可能应该。我感到抱歉,我不能说“是”。但我最近读到,代理的采用速度比预期要慢。

是的,比预期要慢。你知道,这有点像炒作,我认为这很难。所以也许我们可以讨论一下。

是的,也许可以讨论一下。我看到很多新闻文章,特别是关于我认为过去几周或任何时候人们意识到,GPT 5 不会发布。我不知道今年是否会发布,但无论如何,它不会按照人们的预期时间表发布。

还有迹象表明,这些 AI 模型功能的下一个飞跃可能比最初想象的更困难。我有一个问题,Chris,假设我们永远不会获得 GPT 5,我们只能使用我们现在拥有的所有模型。所以,世界不再有新的模型了。您认为 AI 的价值及其在企业、商业和个人生活中的整合,您认为它仍然会产生人们所说的那种高变革影响吗?

我们之前在一些节目中谈论过炒作周期等问题。如果您认为我们已经触及了天花板,我认为这并非因为没有更多模型。我认为发生的事情是,会有更多开源模型出现,并且至少会追上一些领先的模型。

而且,商业模型的价值会降低,因为有更多开源选项可用。我们已经在行业中看到了这一点。我知道并非每个人都希望将他们的数据发送给 OpenAI 或其他做同样事情的公司。因此,我认为开源模型的可用性无论如何都会发生,我认为这只会让它更快地发生。如果领先的模型不再有新的、更好的模型出现来追赶,它们就会追赶上来,这会让整个领域更快地商品化。

是的,我认为我的一点想法是,无论模型是开源的还是封闭的,如果我告诉您,Chris,您是一位积极整合 AI 功能的 AI 工程师,我告诉您最好的模型,您将获得开源模型,也许是长期模型 3.1 或其他版本,而对于封闭模型,也许是最新云模型或 GPT,无论是什么。如果是这样,我们是否无法实现我们希望用 AI 做到的所有事情?或者您认为当前一代模型仍然可以实现什么样的变革?

这很有趣。我知道我们之前谈论过。一些听众会记得我们之前的对话,但人工智能远不止生成式模型。它们在过去几年中获得了所有关注,但您可以做很多事情。

说实话,我每天使用 AI 的事情,不是生成式 AI。我关心的事情,我感到最有效率的事情,不是生成式 AI。所以,您可以使用 AI 做很多事情来提高效率?当然。

我们仍在学习如何做到这一点。我认为这比人们意识到的更难做到。我认为这是人们感到沮丧,并陷入炒作周期幻灭阶段的原因之一。

但是,我们将有许多其他事情。但我认为这提醒我们,正如我们最近所说,要关注 AI 功能的更大范围,以及我们过去曾兴奋过但现在很少谈论的其他事情。深度强化学习仍然很棒。如果您将其与机器人技术和其他领域结合起来,那么有很多非常有成效的工作正在进行,但它们并没有获得太多媒体关注。

我的想法是,如果我们考虑通用推理 AI 模型,当前可用的模型已经足够好,在我看来,足以在某种协调层上完成大多数任务。我的意思是,如果您想进行时间序列预测,我认为您在生成式 AI 方面看到的任何模型都不是最好的时间序列预测模型。

但是,您知道,确实有一些非常好的工具可以做到这一点,这些工具已经存在。例如,Facebook 的 Prophet,您可以使用生成式模型作为工具的接口。您可以说,我想知道六个月后的评论会是什么,进行预测,使用模型提取进行预测所需的数据,然后调用像 Prophet 这样的工具来实际进行预测并获得结果。

因此,我认为即使我们只能使用现有的模型,正如您所说,有各种各样的专用工具和非生成式 AI 工具,无论是基于规则的工具,还是机器学习模型、统计模型,等等,都可以完成我们想要完成的许多重要任务。我们现在拥有的生成式 AI 模型可以作为这些任务之间的协调方式,创建一些非常吸引人的工作流程、自动化和灵活的界面等等。所以,我的想法是,我不担心 GPT 5 或其他模型需要一段时间才能出现。

当我想到我职业生涯的其余部分,我将继续作为一名开发人员和 AI 从业者,我可以保持忙碌,没有问题,我可以使用所有可用的工具来创建一些非常有趣的产品、工具、功能和兴趣。我认为。

这是一个很好的见解,对吧?如果您查看人们在职业生涯中所做的所有不同工作和工作流程,并且您知道,如果您考虑我们今天拥有的所有这些工具,那么我认为,对于实用人工智能来说,下一步将是评估您的工作流程,评估这些工具和模型如何产生影响,并进行一些流程工程,以弄清楚如何做到这一点。

我认为,大多数组织都没有充分做到这一点。他们可能已经对一两个工作流程做了,但他们还没有深入研究。大型公司有成千上万个工作流程。有很多地方可以通过识别人们在工作流程中遇到的问题,以及这些模型可以提供帮助的地方来提高生产力。这可能是他们想要投资并从中获得长期收益的地方。但是,下一个模型,无论我们谈论的是哪个模型,无论模型系列是什么,总是会获得关注,而不是深入研究您的流程,找出您可以节省大量时间和精力的地方。

我认为,人们会将这一波 AI 技术与互联网和网络的出现进行比较。我认为,构成这一波浪潮的基本组件很多,并且许多最具影响力的基于技术的文化和生活方式都受到了塑造。

这些构建模块在网络的早期阶段就已经存在。并且存在一些代际飞跃,例如,流媒体的出现以及我们现在通过流媒体消费的所有内容,在某些类型的互联网连接和技术下是不可能实现的,对吧?因此,当然存在代际转变,但构建模块。

或者没有。而且,在那些早期日子里使用这些构建模块的人可能无法想象这些基本构建模块的变革性和文化定义性影响。因此,我认为我们处于类似的情况,我们拥有的 AI 构建模块,无论是生成式 AI 还是非生成式 AI,都足以我认为,不会太夸张地说,改变我们文化的某些方面。

听起来有点大言不惭,但我认为这将是未来。但是,很可能会有我们尚未预料到的代际飞跃,无论是 GPT 5 还是其他语言模型系列,等等。但是,我们已经拥有的工具、已经拥有的构建模块足以创造出变革性的技术、产品和系统。

我同意,我想可能还有另一个节目,我们可以谈谈我们认为未来社会和文化变革是什么。我不认为现在这个节目是,但我同意你的观点,我们今天所拥有的可以深入你的观点。我在上大学时互联网出现,所以我确实记得,你知道,那些非常早期的构建模块,以及尝试想象,这与我们今天所处的世界不同,那时的IT。

好的。

朋友们,我听说时间尺度上的新朋友。索恩,所以索恩,请帮我理解时间尺度到底是什么?所以时间尺度。

是一个PostgreSQL公司。我们在云端和开源系统中构建工具,让开发人员可以使用PostgreSQL做更多事情,例如时间序列和指标,以及最近的AI应用程序,例如RAG和代理。

如果我们的听众想开始使用PostgreSQL时间尺度AI应用程序开发,你会告诉他们什么是一个好的。

建议,如果你对构建AI应用程序感兴趣,或者你对该领域正在进行的所有创新感兴趣并想参与其中,那么好消息是,今天的任何开发人员都可以使用他们已经了解和喜爱的工具成为AI工程师。

因此,我们在时间尺度上与PG-AI项目所做的工作,让开发人员可以使用他们已经了解的工具和数据库构建AI应用程序。这意味着你可以提升你的职业生涯,从事大胆、新颖和有趣的新项目。你可以在不学习一整套新技术的条件下增加更多技能。

最棒的是,PG-AI和PG向量缩放都是开源的。你可以去时间尺度网站,在你的本地机器上运行它,按照教程和博客中的步骤,构建这些尖端应用程序,例如RAG和代理,而无需学习十种不同的新技术,只需使用你可能已经了解并熟悉的PostgreSQL单一语言。所以,是的,这就是今天开始的方式。这是一个PG-AI项目,只需访问任何时间尺度网站,获取报告,或者PG-AI或PG向量缩放,并按照教程开始使用PostgreSQL成为AI工程师。

好的,只需使用PostgreSQL,并使用PostgreSQL进行AI开发,构建RAG、搜索AI代理,访问时间尺度网站,尝试AI,使用PG-AI,使用PG向量缩放,所有这些都在本地桌面环境中,都是开源的。

我最近一直在教授研讨会。我下周在UKON有研讨会。所以,在UKON的你们,期待见到你们,看起来是一个很好的活动。但我最近在思考研讨会时,是如何思考你的AI工作流程从原型到一定程度的生产的。

我认为我们之前在节目中谈论过这些问题,在PG-AI之前,关于如何测试、监控和思考AI工作负载的部署。但我猜想,可能有很多新加入节目的听众来自不同的背景,在PG-AI阶段之后。我将此与人们经常使用这项技术能够快速达到一个阶段联系起来,在这个阶段他们看到一个非常棒的工作流程开始成形。它在一段时间内运行得非常出色,但在其他时间却失败了。但他们尝到了好处的滋味,可能不知道如何走完剩下的路。

我想到一个有趣的类比,因为有些人正在使用这些低代码、无代码AI工作流构建工具,对吧?无论是像Flowise或Gumroad这样的工具,你可以在这些小界面中将事物组合在一起,或者像Altera这样的工具,可能更注重企业,但他们构建了这个工作流程,它在一段时间内运行得很好,但在其他时间却无法运行。他们可能正在使用AI调用作为该工作流程的一部分。这让我想到,我不知道你是否还记得,克里斯,在过去,我们AI播客的某个阶段,我们真的试图说服人们不要在生产环境中运行笔记本。嗯,你还记得这些数据科学的时代吗?

我确实记得,那已经过去一段时间了。是的,我确实记得。

所以,对于那些不熟悉的人,当我说笔记本时,指的是像Jupyter笔记本这样的东西,这是一个交互式的基于Web的代码编辑器。如果你想象一下,也许你们中有些人过去使用过数学,类似的,但你进入屏幕,有一个单元格。你可以在其中放置代码并执行它,你可以做笔记,你可以执行另一个单元格中的代码,所有这些状态都保存下来。

所以你可以执行单元格1,然后转到单元格5,执行单元格5,然后转到单元格3,执行单元格3,然后转到单元格7,执行单元格7。发生的事情是,如果我们把思维方式倒退到旧时代,我作为一名数据科学家,正在构建一个模型或创建工作流程,我正在使用笔记本电脑来完成这些工作,这种工作流程通常非常适合实验,并且由于其本质而产生非常糟糕的代码。所以它非常适合实验者。

但我发现一直在跳来跳去,我并不真正了解后台的状态是什么。我一直在单元格之间跳来跳去,我可以给你同一个笔记本,你永远无法重现我的操作,即使代码完全相同。你永远无法真正重现我确切的操作步骤。

我被人们的做法震惊了,这几乎就像我们忘记了它并不那么有效。现在我们只是在这些低代码、无代码工具中或使用在各种任务之间跳跃的代理来做这些事情,对吧?这部分原因与笔记本电脑的糟糕之处相同。

产生良好可靠的代码是同样的原因,我认为人们正在从他们使用的工具中获取AI工作流程并使其健壮可靠。这就是我今天的观点。你的想法是什么?

不,我认为这很好。首先,我必须说,这让我以不同的方式再次感到老了。事实上,Jupyter笔记本曾经是热门话题,我们正在谈论它,那曾经是很酷的事情。

是的,甚至像管理所有笔记本电脑之类的产品也是如此。

这感觉就像你刚刚发表了悼词。你知道,在某种程度上,对笔记本电脑的赞美。所以这提醒我们,事物一直在不断变化。

所以你提出了一个很好的观点,我们正在从那个环境中继承一些挑战,并且只是在现有的新工具中重新创造它们。我曾在另一家公司工作,我不会在洛克希德之前透露公司名称。在那家公司,我记得当时有些人知道AI建模,有些人知道软件,但他们似乎从未交叉。

当你提到你正在进行的工作流程开发,以及如何将其提升到一定程度的生产时,我认为有很多人都知道这一点,但可能在过去几年中没有真正改变。我的意思是,他们可能没有。

人们倾向于关注他们想做的事情。正确的开发工作流程是什么,以及如何开始进入生产环境?我知道你近年来在这方面积累了大量的经验。你如何看待这个问题?你能稍微解释一下吗?

你深入研究了吗?是的。我正在从我们以前在数据科学领域使用笔记本电脑以及这些工作流程有时运行,有时不运行的经历中思考这个问题。

实际上,在生产环境中运行代码的答案不是下载并运行脚本,因为那永远行不通,因为状态和工作流程没有保存下来。在过去,如何将工作流程生产化,是将工作流程中执行的逻辑步骤从笔记本电脑中提取出来,并将其嵌入到实际代码中。在这种情况下,你知道,将代码放入函数或类中,并像软件工程师一样为这些函数或类附加测试,因为这确实是软件工程。

然后,弄清楚,你知道,再次在前端进行测试,无论是UI系统、API还是其他任何东西,以确保你正在测试的行为以及你的笔记本电脑实际上有效。这有点令人沮丧,因为它需要重新实现,对吧?在某种程度上,你可能不必丢弃所有东西,因为你已经让笔记本电脑运行起来,你可以将其带入并使其工作。但这确实需要实际工作才能从笔记本电脑状态转换为生产代码。

所以,我认为如果你看看这些工具,我认为一些低代码、无代码助手构建器、带有AI功能的工作流构建器,在构建个人生活中的良好工作流程方面很有用,例如电子邮件助手,用于自动化将新闻文章转换为播客或其他你想要做的事情。但最终,这些工具有自己偏好的跟踪、测试和调试方式,就像调试Jupyter笔记本一样。但如果你正在调试常规代码,你会有略微不同的工具和工作流程。

所以,我认为答案,不幸的是,如果有一个,就是我认为我们将在AI工程领域看到类似的动态,就像一个业务人员,只是我认为这里的规则不同。这与数据科学家以前在Jupyter笔记本中构建工作流程,然后软件工程师将其集成到经过测试并具有某种实际代码形式的实际代码中类似。在这种情况下,数据科学家可能与业务人员互动,角色略有不同,因为数据科学家几乎不存在。

但是业务人员可能会进入像Gumroad或Flowise这样的工具,构建一个工具,该工具获取市场分析信息并生成,我不知道,文章摘要,发送给公司或他们创建的任何工作流程的电子邮件。他们会说,是的,这似乎有效,但它似乎并不完全有效,因为他们没有考虑所有边缘情况。

而且很难深入调试,很难知道何时出现问题。所以,我认为现在就像业务人员将工作流程带入,如果它真的需要在整个组织中扩展或作为产品发布,你只需要将这些步骤提取出来,并将它们放入可以测试的代码中的函数和类中。我们稍后可以讨论测试技术。

所以,我认为低代码、无代码工具很酷,很棒,并且有其用途,就像笔记本电脑有其用途一样。我仍然使用以前的Google Colab,不是本地的Jupyter,而是Google Colab,笔记本电脑。我仍然使用笔记本电脑。

我只是意识到它们的局限性,对吧?有时可能比其他时候更好,但我意识到它们的局限性,然后我最终编写了软件。所以,我认为这些新兴工具也是类似的,它们很棒,允许快速原型设计,并且业务人员可以将他们的工作流程和想法转化为运行良好的工作流程。但最终,这必须成为软件。如果目的是将其作为你发布的功能或在整个组织中扩展的东西。

让我问你一个问题。我只是好奇,当你使用Colab并决定是时候编写软件时,你会如何进行转换?你做了这么久,你的转换过程是什么样的?你是否坚持使用Python?你是否将其中一些内容转换为Go或其他语言?或者你如何思考这个问题?

我认为这取决于具体情况,但通常我会说,如果我在Colab中做某事,那可能意味着我正在做需要在生产环境中运行的事情,所以,你知道,我正在做一些在Ranch或Bytorith中需要做的事情,无论是什么。然后,我认为当我准备好时,我的脑海中会有两个想法,关于它将在哪里运行。

要么它将在REST API中运行,因为你将使该功能可用于你的其他软件。所以它将在REST API中运行。它将集成到你的现有软件中,对吧?所以它有一个代码库,或者它将作为脚本运行,一种离线脚本,以某种方式提供答案或类似的东西。

所以,如果它是AI应用程序场景,你知道,我写了很多使用FastAPI的代码。我可以复制这些项目中的一个,删除不相关的部分,放入相关的部分,从笔记本电脑中复制过来。但如果它更像是本地软件迁移,我认为这真的取决于它是什么类型的应用程序,它的架构是什么,等等。这可能涉及语言更改或你使用的基础架构类型或你连接到的数据库类型,等等。

这是一个我非常感兴趣的领域,因为,你知道,从历史上看,我们一直在Python中开发这些模型,然后主要在Python中部署它们,因为工具和资源仍然在那里。

但是,在许多情况下,特别是当我们展望自主性和机器人技术等领域时,Python 并非部署平台的最佳语言。因此,开发环境与您试图瞄准的截然不同的生产或部署环境之间存在这种不一致。因此,在我的领域中,许多以 Python 开始的事情可能应该以 Rust 结束,考虑到我们在这里要实现的目标。我认为,这仍然是一个非常不成熟的部署领域,需要再次努力。我希望在未来几年,大型提供商能够提供更多工具,这些工具是开源的,这样我就可以在不同语言之间进行转换,以确保所使用的语言始终是针对特定情况的最佳选择。

作为朋友,我喜欢我的八小时睡眠,八小时睡眠网站。我从未睡得这么好。你知道,我喜欢生物黑客。

我喜欢睡眠科学。这完全是关于睡眠科学。结合人工智能,让您在睡眠中保持最佳状态。

这项技术正在突破卧室中可能实现的界限。让我来谈谈八小时睡眠的超极端睡眠舱。睡眠舱的主要功能是什么?这是一个高科技床罩,您可以轻松地添加到任何床上。

但这不仅仅是一个普通的床罩。它装满了传感器、加热和冷却元件。所有这些都由先进的人工智能算法控制。这就像拥有一个睡眠实验室、一个智能热调节器和一个个人睡眠教练,所有功能都集成在一个设备中。

睡眠舱使用传感器网络来跟踪各种生物指标,跟踪睡眠阶段、心率变异性、呼吸率、温度等等。真正酷的部分是,它无需佩戴任何设备即可完成所有这些操作。该设备的准确性堪比专业睡眠实验室。

现在,让我谈谈我最喜欢的功能,自动驾驶模式。每天,我的睡眠舱都会告诉我它在晚上帮助我睡得更好的自动驾驶模式做了什么。它说,昨晚,自动驾驶模式提高了我的睡眠质量 62%。这意味着它调整了我的温度,使其保持凉爽或温暖,以帮助我精确地调整睡眠。

想要精确的技术控制来获得最佳睡眠?睡眠是我们每天最重要的功能。正如你所看到的,我非常喜欢我的睡眠舱,但我认为你应该也拥有一个。访问八小时睡眠网站,使用代码 CHANGELOG。目前,黑五期间(11 月 11 日至 12 月 14 日)有很棒的交易,使用代码 CHANGELOG 可享受高达 600 美元的超极端睡眠舱折扣。代码有效期为 11 月 11 日至 11 月 17 日。再次访问八小时睡眠网站,使用代码 CHANGELOG。我喜欢它,我每天晚上都使用它,它绝对改变了游戏规则,它会再次改变你的游戏。八小时睡眠网站,使用代码 CHANGELOG。

嗯,我开始谈论一些工作坊的测试和集成,我发现从我的经验和与人们交谈中,人们对如何进行这些操作存在一些普遍的困惑。所以,假设你相信你想从低代码或无代码工具中提取这些不同的工作流程部分,并将其放入某种软件中。

是 API、UI 或脚本数据管道,无论是什么。假设你已经完成了这些操作,那么问题来了:现在我有了这个功能,我代码中这个执行某种 AI 调用(调用 AI 模型)的类,我该如何测试它?以及围绕这一点需要考虑哪些因素?我经常发现,这会让一些人感到困惑。

这对我来说也是数据科学领域长期以来一直面临的问题,我觉得很奇怪的是,同样的问题出现在一个新的受众群体中。所以,我不知道你是否还记得数据科学的早期,当时有数据科学家会创建模型,并且这些模型具有特定水平的性能,例如 90% 的准确率。所以,它有时会出错。

所以,你将这个模型放入生产环境中,例如欺诈检测模型(欺诈或非欺诈),你将其集成到软件功能中。现在问题来了:你如何测试这个模型?因为它并不总是给出相同的响应,并且并不总是正确的。我不知道你是否还记得数据科学领域经常出现这些讨论。

是的,我认为你只是对数据科学的悼词。所以,你...

哦,天哪,这个对我来说一直很有趣,因为我的背景是物理学。所以,如果我们说这个模型不是确定性的,对吧?所以我们无法测试它。

如果我们采用这种物理学方法,我们基本上就不会拥有当今的技术,因为所有这些技术都基于量子力学,一切都是概率分布。所以,有一种方法可以测试像 AI 模型这样的非确定性行为。也许人们只需要对此进行一点提醒。我经常将其分解成几个类别。但是,我不知道你是否遇到过这样想法的人,尤其是在集成各种元素或类似事物时。

我认为有很多这样的人。老实说,我认为每个人都在努力弄清楚这一点。如果他们不在你所处的行业中,并且不断处理这些问题,我认为这是你关注的领域中最大的未知数之一:我该如何测试它?我想了解工作流程。我认为人们不知道...

至少你知道,在 45 分钟的播客中只能做这么多,但至少可以勾勒出一个框架,供人们思考。首先,我认为你应该在流程的每个步骤中为你的代码添加测试,对吧?如果你有一个基于元素的工作流程,第一个步骤是将某些内容翻译成西班牙语,然后下一个步骤是在一句话中总结它,下一个步骤是将这句话嵌入到模板中,然后是生成图像,无论你有什么字符串,你都应该为这些子任务中的每一个创建任务,特别是测试代理很困难,我认为这是一个有趣的话题,可以稍后讨论。

我认为这只是好的软件工程,你所描述的。如果你将它从 AI 世界中拿出来,谈论软件功能,你希望每个功能都是一个独立的功能,它可以做一些事情,并且你希望单独测试它,即使它们都连接在一起以完成某些事情。我认为这是非常合理的。

是的,而且代理相关的内容可能会使事情变得更加复杂,我们可以稍后讨论。但是,假设你有一个你想要反复执行的工作流程,这可能是大多数企业用例。所以,你将其分解成子任务,对吧?你可以测试的子任务。

接下来,我建议大家考虑创建一组测试,分为三类。这来自行为测试的概念。让我们以欺诈检测为例。

你问的是欺诈或非欺诈,对吧?所以,第一类测试是你想考虑的最小功能测试,这将是你可以想到的最欺诈的事情。它应该始终标记为欺诈,100% 的时间。

嗯,你知道,尼日利亚王子,随便什么,对吧?应该始终标记为欺诈,对吧?100% 的时间。这些不是最深入的测试,但无论你对模型或系统进行什么操作,它们都应该通过 100% 的时间。这些就像 100% 通过的测试。

所以,你可以对所有其他内容做同样的事情,即使它不是分类器,你也可以说,我正在创建一个询问有关预测守卫的所有信息的机器人。如果我问预测守卫的首席执行官是谁?他们应该始终返回相同的名字,对吧?

这是最小功能测试。这是一个非常简单的问题。它应该嵌入在知识中,你知道,这些是应该 100% 返回的内容,你可以稍后测试确定性内容,对吧?例如,该名称是否出现在响应中?这类事情。第二类是不变性测试。

术语可能在各种保护中有所不同,但基本上,用非正式的术语来说,输入的变化应该导致输出的变化。所以,一个经典的例子是,如果我要求一个大型语言模型对“我爱美国,它太棒了,它太棒了”这句话进行情感分析,我会得到积极的情感反馈。如果我将“美国”改为“土耳其”,说“土耳其太棒了,它太棒了,它太棒了”,对吧?理论上,无论你个人如何看待美国或土耳其,它都应该始终返回积极的情感,对吧?输入格式、顺序等的变化都应该产生不变的结果。

然后,当然,最后一个是变异测试,这意味着输入的变化绝对应该导致输出的变化,对吧?例如,如果我将“我也爱美国”改为“我不爱美国”,

我实际上应该在输出中看到变化。这很容易观察到。所以,你所做的就是创建最小功能测试表、不变性测试表和变异测试表。

如果你有这些完整的表格,你基本上就可以探测模型的行为和模型对变化的敏感性。而敏感性正是人们在这些工作流程中卡住的地方,他们没有意识到模型对输入的微小变化有多敏感。所以,这让你能够量化系统的敏感性,通过这些测试来获得数值,然后系统地改进它。很有趣。

所以,我试图将所有这些结合起来,从我自己的学习中,我试图思考如何将其直接应用于工作流程。例如,你如何将它融入到进入生产的实际步骤中?你在工作流程中在哪里做...

...这些操作?是的。所以,我会采取一些步骤。假设我的工作流程有五个步骤。我会将每个步骤分解成五个函数或五个类,或者适合你代码的任何内容。对于对应于步骤 1 的函数 1,我会创建每个测试表的表格,这意味着输入等于输出,就像你正在测试 API 一样。例如,如果我将此输入传递给 API,我应该获得这个输出。

所以,你创建了该表格,并使用你使用的单元测试框架来遍历表格中的每个示例,检查输出是否与你期望的输出相符,以获得通过或未通过的结果。所以,步骤是:我有我的五个工作流程步骤,我将每个步骤分解成一个函数或类(或任何编程对象),然后我为每个函数或类开发这些测试。现在,这里可能出现一个问题:我的模型是否应该始终通过这些测试,或者该函数是否应该始终通过所有这些测试?我告诉人们,我应该始终通过 100% 的最小功能测试,因为你一开始就定义了这些测试作为最小功能测试。

所以,如果你没有最小功能测试,那么你的软件就不应该发布,对吧?然后,对于其他测试,基本上,我会说你永远不应该在这些测试中倒退,对吧?它们让你了解模型在这些变化中的敏感性。

你不想倒退。你想要系统地改进它们。所以,有些人可能会将这些视为需要高于某个阈值或类似内容的百分比。

明白了。这让我们回到了你之前提到的观点。这听起来就像好的数据科学。

是的,是的。这很有趣,因为角色发生了变化,对吧?我认为我们经历了数据科学从非常混乱的西部到良好的工程实践、测试等等的转变。现在,我们基本上将数据科学家置于中间,而业务人员正在开发这些工作流程并尝试将其集成到软件中。是的,我认为需要做很多提醒和学习。

这与我们今天开始讨论的主题——代理和生产代理——有关,因为你一开始不知道工作流程,对吧?代理会动态地确定它将完成哪些步骤。所以,如果你一开始不知道工作流程,那么你可能需要做一些有趣的事情来测试这些代理。但是,也许我们可以留到下一期节目中讨论,或者人们可以加入 MLOps 社区中关于代理生产的精彩学习机会。

当然,绝对是的。你知道吗?你一开始问我有多少代理,我说没有,我当时没有,这让我思考。现在我们正在谈论工作流程和测试,如果这些代理开始工作,我必须回到这个主题,我必须提出一些内容...

...来讨论。是的,我们会想出一些代理想法,也许会讨论这些代理的测试。

听起来不错。好的。非常感谢...

...今天的见解。是的,谢谢。美好的一天。我们地理位置互换。下周你...

完美。听起来像十一月。

好的,这就是我们本周的节目。如果你还没有查看我们的 Changelog 新闻通讯,请访问 Changelog.com/news。在那里,你会发现 29 个订阅的原因,是的,29 个订阅的原因。我会告诉你第 17 个原因,你可能会开始期待星期一。

听起来有人得了...

s 二十八。更多原因等待您在change of点com/news。再次感谢我们的合作伙伴Flight IO,为精彩的节目助兴,感谢您的收听。目前就到这里,我们下次再见。