We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode 859: BAML: The Programming Language for AI, with Vaibhav Gupta

859: BAML: The Programming Language for AI, with Vaibhav Gupta

2025/2/4
logo of podcast Super Data Science: ML & AI Podcast with Jon Krohn

Super Data Science: ML & AI Podcast with Jon Krohn

AI Deep Dive Transcript
People
J
Jon Krohn
V
Vaibhav Gupta
Topics
Vaibhav Gupta: 我是Boundary的创始人兼首席执行官,我们开发了一种名为BAML的编程语言,旨在简化与大型语言模型(LLM)的交互,并显著提高开发效率。BAML的设计理念借鉴了网页开发的早期经验,它提供了一种更具表达能力的跨语言兼容方案,解决了现有AI SDK受限于编程语言本身的问题。BAML通过算法工作,重构了用户处理提示工程的方式,就像TypeScript提升了JavaScript一样。在开发BAML之前,我们经历了13次转型,最终选择专注于开发AI编程语言。 BAML的优势在于其清晰的语法,即使非技术人员也能轻松使用。此外,BAML的热重载循环极大地缩短了测试时间,使开发者能够在更短的时间内尝试更多提示。我们还解决了RAG(检索增强生成)中的痛点,例如如何有效地将上下文添加到提示中,以及如何处理提示中的歧义和错误。BAML通过强类型和语义化分块来处理这些问题,提高了AI应用的可靠性。 BAML通过模式对齐解析技术提高了令牌效率,并与不支持函数调用的模型兼容,例如DeepSeq R1和OpenAI O1。我们已经看到客户轻松节省了20%到30%的令牌。BAML的模式对齐解析技术可以处理模型输出,而无需显式JSON格式,这使得它与各种现有模型兼容。 未来,我们将继续改进BAML,使其支持更强大的功能,例如条件语句和循环语句,并改进数据平台以简化数据管道管理。我们还将提供更多工具来辅助用户使用BAML,例如在线playground和多种语言的安装包,以及代码生成工具。 Jon Krohn: 通过与Vaibhav Gupta的对话,我深入了解了BAML编程语言及其在提高AI效率和降低成本方面的优势。BAML通过提供热重载循环、令牌效率改进和与不支持函数调用的模型的兼容性等功能,显著简化了与大型语言模型的交互。此外,BAML的内置类型安全性和错误处理机制,提高了AI应用的可靠性。Boundary公司独特的招聘流程也给我留下了深刻印象,他们不进行技术面试,而是通过候选人自荐、深度参考面试和试用期来评估候选人。

Deep Dive

Shownotes Transcript

这是第 859 集,嘉宾是 Boundary 的创始人兼首席执行官 Vaibhav Gupta。本集由开放数据科学大会 ODSC 提供赞助。

欢迎收听 Super Data Science Podcast,这是数据科学行业收听率最高的播客。每周,我们都会为您带来有趣且鼓舞人心的人物和理念,探索机器学习、人工智能和相关技术的尖端领域,这些技术正在使我们的世界变得更美好。我是您的主持人 John Krohn。感谢您今天的收听。现在,让我们化繁为简。

欢迎回到 Super Data Science Podcast。今天我们有一集技术含量很高的节目,我知道你们很多人喜欢这样的节目,嘉宾是才华横溢、口才出众的工程师和企业家 Vaibhav Gupta。

Vaibhav 是 Boundary 的创始人兼首席执行官,Boundary 是一家位于西雅图的 Y Combinator 支持的初创公司,该公司开发了一种名为 BAML(B-A-M-L)的新型编程语言,使开发人员更容易更高效地使用大型语言模型 (LLM)。在他十年软件工程师的职业生涯中,Vaibhav 曾为 Google、Microsoft 和著名的对冲基金 D.E. Shaw 等公司构建预测管道和实时计算机视觉解决方案。他拥有德克萨斯大学奥斯汀分校的计算机科学和电气工程学位。

如本集开头所述,这是一集相对技术性的节目。大部分内容会吸引那些直接使用代码与大型语言模型或其他模型 API 交互的人。

在今天的这集信息量很大的节目中,Vaipav 详细介绍了他的公司如何在确定开发 AI 编程语言之前经历了 13 次转型,为什么创建编程语言是他所说的“非常愚蠢”的事情,但为什么它最终会变得非常出色,包括 BAML 已经为公司节省了 20%-30% 的 AI 成本。

他谈到了当今 AI 工具与早期 Web 开发之间的有趣相似之处,以及他非常规的招聘流程。我从未听说过任何类似的东西,以及这种非常规招聘流程有效背后的心理学原理。好了,准备好收听这精彩的一集了吗?让我们开始吧。Vibe Hub,欢迎来到 Super Data Science Podcast。我很高兴能邀请您来到这里。您今天从哪里打电话进来?

我目前在旧金山,但通常我会在西雅图。你知道,你这么说,但事实上,我只在旧金山见过你。这是真的。事实上,很多人也只在旧金山见过我,主要是在星期二我在这里的时候。不过,我的样本量很小。这是关于你所在位置的 N 等于 1 的样本量。我只在现实生活中见过你一次。那是在 12 月份 Gen AI Collective 举办的一次活动上。

那是一次非常酷的活动。而且你已经克服了很大的障碍,被邀请成为在 Gen AI Collective 上展示的 10 家初创公司之一。数百家初创公司申请参加。然后你又获奖了,对吧?你是获奖的公司之一。

最佳技术奖,这有点令人惊讶,但看到社区对我们所构建内容的积极反应也感觉很棒。是的。然后我想说,对我个人来说,我给你颁发的奖项是,我不知道我是否当面提到过,我本来打算在开始录音前让你难堪,但我心想,不如就在节目中说吧,那就是你的演讲绝对是最有趣的。

我记得一些事情,所以你有一些东西,我不知道这些是不是你随着时间的推移逐渐掌握的妙语。你会得到观众的反应,然后你会说,这个我必须记住,以便将来有类似的推销站立机会。但比如你一开始就说,我们做了一件非常愚蠢或非常傻的事情,那就是创建了一种编程语言。绝对不应该做的事情。

是的,也许这很有趣,但这也有点真实。你可能永远都不应该创建编程语言。而且你有点让我陷入困境,因为我现在必须达到在这个播客上努力搞笑的期望。现在让我们看看听众的期待是什么。是的,你很自然地就能做到。我之后和你相处了一段时间,我知道你会成功的。尽管有时人们可能只是心情不好。你可能正处于人生中最糟糕的一天。是的。

所以你是 Boundary 的首席执行官兼联合创始人,Boundary 是 BAML(B-A-M-L)的创建者,这是一种编程语言。它是一种用于文本生成的表达性语言。所以我们的听众,我们可能有很多听众正在

调用大型语言模型,为了各种目的微调它们,而 BAML 就是为他们设计的。所以,跟我们说说 BAML,首字母缩写是什么意思,你为什么决定做这件“愚蠢”的事情。是的,让我们先从首字母缩写开始。BAML 代表 Basic Ass Machine Learning(基本的机器学习),但如果你告诉你的老板,你可以说基本上是一种虚构的语言。所以......

但 BAML 的前提实际上来自于关于 Web 开发如何开始的理论。所以,当我们所有人开始编写代码时,至少对我来说,当我开始编写网站代码时,它都是一堆 PHP 和 HTML 拼凑在一起以使网站正常工作。然后我记得在 Meta 实习时,他们创建了 React。我认为他们创建 React 的部分原因是他们的代码库开始变得难以维护。

想象一下,有一堆字符串连接你的 HTML 语法,现在一个实习生,像我一样,忘记了一个结束 div 标签,现在你的新闻提要坏了。这并不是我们想要编写代码的方式,数十亿美元的企业依赖于实习生正确地关闭字符串。这甚至不是实习生的错,因为他们怎么能真正阅读一个巨大的代码块呢?我几乎不读论文。实习生怎么能做到呢?但是像 React 这样的编译器......

实际上可以纠正这些错误。如果你通过创建新的语法将 HTML 和 JavaScript 添加到相同的语法中,这些想法就更容易表达了。现在,在两毫秒内,你会看到一条红色的波浪线,提示你关闭 div 标签。在这个 Web 开发循环中,它重新定义了我们所有人开始思考 Web 开发的方式。与其像事情会坏掉一样,我们可以进行状态管理,因为 React 为我们处理了它。

我们可以做一些事情,比如热重载单个组件并让周围的状态保持不变,因为 React 为我们做了这件事。它做得很好,即使它需要学习新东西。我们问,在这个我们都将走向的 AI 世界中,我们认为一些事情将会成为现实。首先,每个代码库在以后的每一年中都会比前一年包含更多的提示。

如果这是真的,我们可能不希望所有这些未关闭的 div 类型的错误永远存在。当你提到提示时,你的意思是大型语言模型提示吗?是的,就像大型语言模型一样,是的,调用某种大型语言模型。我认为大型语言模型是一个开始,但我认为从长远来看,所有模型都将被使用。对于那些对机器学习一无所知的人来说,模型只会变得越来越容易使用。

所以,是的,我们最近做了一些节目,例如,人们可以收听第 853 集,我们讨论了大型语言模型向更广泛的基础模型的泛化,例如视觉模型,在这种模型中,你并不一定需要语言输入或输出。但即使是这种模型,即使是在视觉用例中,

它也可能会有所帮助。如果可以使用自然语言提示而不是编写代码,它可以使调用该视觉模型的人更容易一些。是的,完全同意你的说法。越来越多的情况下,我们调用的模型,无论是大型基础模型还是

包括大型语言模型或小型模型,在其中使用自然语言提示可以很容易地获得你想要的东西,甚至可能只是从一个情节中获得。是的,完全正确。我认为,随着这些东西变得越来越普遍,我们必须考虑的是随之而来的开发者工具。就像 React 必须存在才能出现 Next.js、Tide Trip 和所有其他东西,使我们的生活在 Web 开发领域变得更好一样。

在大型语言模型和一般 AI 模型的世界中,我们作为开发人员(而不是作为可能正在生成模型的人,因为那是不同的世界),而只是作为使用模型的人,我们问必须存在什么。无论模型变得多么好,在某些时候,你都必须编写机器上翻转的位,那就是代码。它必须以一种有意义的方式插入到你的代码库中。

就像 JavaScript 很糟糕一样,TypeScript 更好,因为它具有类型安全性和静态分析错误。当我们制作 BAML 时,我们想要做一些算法工作来重新定义用户的问题。很好。我从你开始录音前就了解到,这可能是我打算在节目后半部分讨论的内容,但我现在觉得在你谈论为什么创建 BAML 时,这很有趣,那就是

你是一家 Y Combinator 公司。当你被 Y Combinator 录取时,你预计会成为 Slack 的竞争对手。这就是你的申请书上的内容。实际上,在你最终确定 BAML 之前,你经历了 13 次转型。你想跟我们说说这段经历吗?我的意思是,你甚至可以告诉我们为什么一开始要加入 Y Combinator。是的。是的,最初的想法和所有这些转型。

我和我的联合创始人八九年前在 2015 年大学毕业时认识的。我们都在 UT 奥斯汀毕业。我们只是成为了朋友,因为我们都喜欢,我们都是喜欢自找苦吃的人。八九年前,他在亚马逊工作了一段时间。我在其他一些公司工作了一段时间,比如微软、谷歌和一些对冲基金。我想,那真的很有趣。但我有点想做一些愚蠢的事情。

愚蠢的事情是我想从头开始创新和创造一些以前没有人见过的东西。因为我们都是建设者,而建设事物会带来满足感。所以当我们开始的时候,我记得在教育科技领域玩了一段时间。我们尝试过创作者经济。

我们都认为我们有优势,因为我之前在那个科技领域做过事情。我的联合创始人曾经运营过一个 YouTube 频道,有趣的是,它曾经有过数十万,我认为是数百万的观看次数。所以我们利用了我们的优势。然后最终我们想,哦,我们都讨厌远程工作。让我们来解决这个 Slack 问题,因为 Slack 很糟糕。我不知道。Slack 肯定比电子邮件好得多。

但它太遥远了,Slack 上的每个人都感觉像是一个同事。我喜欢工作的原因是拥有朋友。我和 Aaron(我的联合创始人)成为朋友也是同样的原因。所以我们试图解决这个问题,并带着它申请了 Y Combinator。在过去的 10 到 12 年里,我已经四次申请 Y Combinator 了。这是第一次,不仅......所以我们去面试过几次。我已经去面试过那四次中的三次了。当我最后一次得到它时,

这是我们第一次成功。但我清楚地记得面试中的合伙人说:“这个 Slack 项目不会成功。你们还有其他想法吗?”幸运的是,我们之前都处理过棘手的技术问题,所以我们可以谈论它们。但我还清楚地记得我说:“我们认为它会成功。我们可能不应该改变我们的想法。”但对我们来说,关键的见解是 Aaron 花了九年时间从事分布式系统的工作,

我花了大约九到十年的时间构建算法和汇编。我们可能应该构建 UI,这只是一个小的预感。在 Y Combinator 批次的一段时间后,我们实际上决定放弃 Slack,并尝试在机器学习领域做一些事情。原因是在我们加入的批次中,是 23 年的获胜者。那是 ChatGPT 推出的一个批次。

那一个月在旧金山很疯狂,我想在我们待在那里的三个月里也是如此。一切都在飞速发展。信息量巨大。但有一件事是始终如一的。由于我们的背景以及我们比其他人更有经验的工程师,我的意思是,这并不是说他们不好,只是我们在行业中工作的时间比其他很多人要长一些。我们自然而然地回答了我们很多批次伙伴的很多问题。

我们发现大多数问题都是机器学习问题,我们只是帮助他们。这很有趣。我们在我们的初创公司之外做这件事,而我们的初创公司与 AI 完全无关。所以后来对我们来说,转向那个方向就变得有意义了。当我们意识到我们真正想要参与的方向时,它不是微调。它甚至不像任何

SDK 层,因为根本问题是,无论你构建 Python SDK,还是构建 TypeScript SDK,比如 Vercel AI SDK,还有 Pydantic AI 和许多其他系统。问题是自然的表达。你可以在这些 SDK 中表达的内容受到语言的限制。

最后,我认为世界上每个人,世界上所有的软件都将以某种形式使用 AI。无论你是 C++ 商店,Java 商店还是 Go 商店,所有这些都将使用某些东西。每当我们需要具有跨语言兼容性的东西时,它始终都是一种新的语法。JSON、YAML、TOML,它们都是全球支持的新语法。

我认为这是我在许多系统中看到的被忽视的一点。人工智能正在改变我们开展业务的方式。但是,我们需要的人工智能解决方案不仅要有雄心壮志,而且要实用且适应性强。这就是 Domo 的人工智能和数据产品平台的用武之地。借助 Domo,你和你的团队可以将人工智能和数据转化为创新的用途,从而产生可衡量的影响。

虽然许多公司专注于狭窄的应用或单模型解决方案,但 Domo 的一体化平台更加强大,具有值得信赖的人工智能结果、连接、准备和自动化工作流程的安全人工智能代理,帮助你和你的团队轻松地通过针对你角色量身定制的引导式应用程序获得见解、接收警报和采取行动。该平台提供灵活的选择,可以选择使用哪些人工智能模型。

Domo 不仅仅提高生产力。它改变了你的流程,帮助你做出更明智、更快速的决策,并推动真正的增长。世界上最好的公司都依赖 Domo 来做出更明智的决策。了解如何利用 Domo 释放数据的全部潜力。要了解更多信息,请访问 ai.domo.com。网址是 ai.domo.com。很好。这对于 BAML 解决的问题进行了非常好的背景介绍。

其中一个关键点显然是这个提示,解决围绕提示的一些接口问题。我们将讨论与之相关的许多细节。但首先,我想解决这个问题

更普遍的提示工程,并获得你的一些想法。我们的研究人员写道,这是一个笑话学科,我的意思是,从某种意义上说,它确实不是工程学。将来不会有人从事机械工程和电子工程,然后你又有一个为期四年的提示工程专业。是的。

所以,你知道,它是一种应用于提示工程理念的工程学。当你使用这么强的词语时,这有点像个笑话。所以,是的,这种提示工程,一部分是工艺,一部分是炼金术,它随着大型语言模型的不断发展而变得越来越好。

有点预料到人类正在提供什么,但你可能已经,你已经长时间在细致的层面研究提示输入和输出了。如何使创建高质量提示成为一种严格的实践,达到我们对其他软件任务所期望的枯燥可靠性?-是的,我认为你提到的关键部分是可靠性,因为这就是我们想要的。提示只是一种将我们提供的一些数据转换为我们真正想要的一些数据的方法。

在分类问题的情况下,你获取一个成绩单,并将其分类为:这是医生和病人之间的对话吗?这是关于医疗保健、一般健康状况还是其他类别的对话?当我想到那里的严谨性和练习时,你认为这不够严谨或不够复杂,这很有趣。因为我过去也这么说。我记得当这些事情第一次发生时,Aaron 说 AI 工程师成为一个术语。

我非常反对这个说法。我感到被冒犯,因为这个术语被用来指代提示工程人员,因为我想使用的术语是 AI 工程师是研究网络并拥有博士学位,并且可以描述并就此事进行详细讨论的人。我觉得自己就像草坪上的老爷爷一样,说,滚出我的草坪。这就像攻击我的核心一样。但我实际上已经开始欣赏

随着时间的推移,我实际上认为在使用人们给予好评的模型方面,还有更多细微之处。例如,我们将提示工程视为将字符串放入模型的这种想法。但我们过去认为 Web 开发只是将纯文本放在那里的这种想法。它发展成为反应式组件,随着时间的推移,它具有各种复杂性。

我认为如果我以前看待我网站上的人的方式相同,我会说,啊,那不难。太容易了。这不像真正的软件工程。前端工程不是真的。但现在当我们看待前端工程时,它很复杂。这是一门艺术。构建一个漂亮的网站需要大量的技能。当我想到提示工程时,我认为我们仍然处于纯文本 HTML、没有 CSS、没有交互性的早期阶段。但我认为我们正朝着那个方向前进。

最终将出现一个名为提示工程师的术语。我认为随着时间的推移,它将成为一个经过充分研究的学科。有趣。是的。好的。所以这是一个大胆的预测,我想。是的。我的意思是,这很有趣。嗯,

什么样的东西,你知道,我们已经讨论了 BAML 解决的各种问题。你能给我们一些关键用例或提供一些颜色吗?我们实际上,我们一直在讨论你如何在其他播客上进行屏幕共享以使其可视化。我认为我们将尝试,如果我们在这里可以的话,主要坚持音频描述。是的。

如果我只是使用 OpenAI API 并向其提供自然语言提示,BAML 会做哪些我不会得到的事情?如果我使用 BAML 而不是使用 OpenAI API,我会错过什么?我认为有两件大事,人们通常,至少人们告诉我们他们喜欢 BAML 的地方。

首先,语法非常清晰,即使他们的项目经理也可以使用它,这对......妙语连珠。这对人们来说非常有价值。第二部分是真正的热重载循环。

同样,我会再次提到 Web 开发,因为我认为这是机器学习工作方式的一个很好的类比。当我进行 Web 开发时,我会更改我的代码,然后查看浏览器。如果它与我想要的不符,我会返回,更改我的代码,按 Command S,然后刷新该内容。在大约 10 分钟内,我可以尝试 15 种不同的样式,并使其与 Tailwind 和 React 以及我想做的任何其他事情一起工作。今天,当我看到人们在不使用 BAML 的情况下尝试 AI 管道时,

我看到他们在 20 分钟内尝试了大约五个提示,因为他们的测试循环完全坏了。他们没有热重载循环。使用 BAML,在 20 分钟内,他们可以进行 240 个提示,因为每个提示的测试时间为 5 秒。而这个热重载循环是......

你不会感到无聊,因为你不会坐在那里摆弄那个 XKCD,就像我的代码正在编译一样,这在提示工程领域是如此真实。你实际上只是在等待模型运行。你会想,哦,我必须运行这五个命令来运行这个,运行我的测试用例。或者我必须端到端运行我的整个管道才能体验这个位于......深处的提示。而实际上,你只需要编写一个快速的小型单元测试,但在 Python 或 TypeScript 或任何这些语言中编写单元测试并不是很有趣,因为它们不是为此而设计的。

Rust 有一个非常酷的片段,你可以在任何文件中编写测试。在任何 Rust 文件中,你都可以编写测试。当你在任何 Rust 文件中编写测试时,在 VS Code 中,它们有一个小插件,上面写着运行测试。你只需点击它,它就会为你运行测试。速度非常快,你只需编写更多代码。Rust 代码不会神奇地工作。它只是更容易测试,所以它更神奇地工作,因为人们编写了更好的代码。

我们对提示也做了同样的事情。很好。我喜欢这个说法。太棒了。也许我们可以把它变成一个 YouTube 短视频。

很好。感谢您对为什么 BAML 会有所帮助的总体概述。除了代理人工智能之外,目前非常流行的另一个大趋势是 RAG(检索增强生成),人们拥有大量他们想要搜索并获得自然语言响应的文档。所以假设......

你的公司有一百万份文档。它们都是保险索赔之类的。你可以使用编码来

大型语言模型将这百万份文档转换为这种向量表示,这允许你随后非常快速地搜索相关文档。所以现在你是一个保险索赔人员。我不知道人们,我不知道保险公司有哪些职位。我不知道我为什么进入保险行业。我对它一无所知。但你是一家保险公司的员工,并且

你想,你有一个新的索赔进来,你想查看与该索赔类似的索赔。因此,你可以使用检索增强生成来说,你知道,这是我提出的问题,或者这是我提出的索赔。这与我们过去处理过的索赔有何关系?你拥有的新索赔,或者保险公司员工拥有的新的自然语言查询是,

实时地,非常快速地,在数百毫秒内也转换为向量表示。然后你可以进行非常简单、快速的数学运算。有一些技巧可以让它在非常大的空间中工作,即使你拥有数十亿或数万亿个文档。并且

你将带回最相关的文档。所以假设在这个保险公司示例中,我们有一百万个。可能有六个文档被确定为在语义意义上密切相关,并且自然语言与用户的查询相似。这六个文档返回,然后我们可以将所有这六个文档作为大型语言模型的上下文,该模型可以根据这些文档提出一个很好的答案。所以检索增强生成

将许多不同的技术和编码大型语言模型、生成式大型语言模型联系在一起,以便能够根据大量文档提供潜在的巨大见解,而人类永远无法,你知道,手动查看这些文档,并且关键字搜索会错过很多信息。所以 RAG,非常酷,非常强大。那么,RAG(检索增强生成)中有哪些见解或痛点?根据我们对您过去采访进行的一些研究,RAG 本身就是促使您转向开发 BAML 的原因之一。是的,我们实际上最初主要索引 RAG 管道。

作为我们 1/13 次转型中的最初旅程。我们真正转向更普遍地使用大型语言模型的原因是,使 RAG 变得真正优秀的是真正高质量的数据。你提到的真正高质量数据的一个要素是能够提取相关文档。

这只是某人必须做的事情。你无法真正帮助他们。它非常依赖于数据,这就是我们远离它的原因,因为我们不相信存在适用于所有事物的通用 RAG 解决方案。就像没有适用于所有地方的完美手风琴的通用 Web 组件一样。你必须使用 Shad CN 并构建自己的与你的主题和样式相匹配的手风琴。RAG 中许多人没有考虑到的一个要素是关于如何将上下文实际放入提示本身。

想象一下,如果我在每句话之间说“嗯”和“呃”。你们会立即失去兴趣。这将不是一个有趣的播客和对话。但是,每当你将一堆 JSON 块作为上下文添加到你的提示中时,你就是在做同样的事情。你放了很多模型不关心的东西。你放了很多引号。你放了很多转义字符,很多冒号。

这实际上并没有使模型更容易阅读提示。它只是使你能够在其上运行 JSON.parse。而这些就像模型必须去除的“嗯”和“呃”一样。如果你将图像放入提示中,你定向图像的方式、你使用的尺寸,甚至你围绕图像放置的文本以帮助它理解图像的上下文,无论你将其放在图像上方还是下方,都会产生影响。

我们发现很多人并没有关注这些事情,但有了BAML,我们就能清楚地知道你在做什么以及在哪里做,并且能够检测到这些词素。因为就像你在VS Code中处理Markdown文件一样,你可以看到Markdown文件的渲染效果。我们实际上会向你展示提示符在输入时如何与图像和音频一起渲染。

因此,你可以找到这些“喜欢”和“嗯”,并且可以这样想:“这对我来说看起来很丑。这可能意味着对模型来说也很丑,这可能意味着模型很难理解,因为这些模型是用人类数据训练的。”

好的,除了RAG之外,另一种常见的情况是,除了“喜欢”和“嗯”这些在提示中可能出现的口语上毫无意义的东西之外,除了这些相对无害的东西(它们就像良性肿瘤),还有一些恶性肿瘤。

歧义和错误。那么BAML是如何处理输入数据可能导致输出模糊或不正确的情况的呢?这种能力如何提高人工智能驱动应用程序的可靠性?是的,我认为这就是语法真正闪光的地方。因为英语的问题在于,它是一种非常非常糟糕的语言,无法真正描述你想要什么。它对于像我们现在这样快速流利的对话来说非常棒。对于书面指示来说,它很糟糕。

如果你曾经给别人列出20个要点清单,让他们遵循,他们一定会搞砸其中一个。他们这样做有几个原因。一,因为你可能在自然地写出来的时候,其中有一些矛盾。你依赖用户的推断来知道哪些与你的上下文相关。他们对你了解得越多,做得越好。但我们所做的是,我们说每个提示实际上只是一个函数。

一个函数接收参数,每个参数都是类型安全的。它不仅仅是一条消息,而是一条具有角色和内容的类消息。它不是发票,而是实际的发票及其所有参数。所以它是强类型的。每个函数都必须描述它将返回什么。因此,如果你要返回一堆类别,你将返回枚举,它具有一组已描述的特定类别。

与其将你的提示作为巨大的字符串注入,不如将你的提示分解成语义上有意义的块。例如,让我们以你之前谈到的保险为例,你的保险公司可能正在处理数百万种不同类型的文档。其中一个文档可能是新的索赔。另一个可能是对现有索赔的更新。另一个可能只是一个普通的新的客户来电。

与其在核心提示(用英语)中描述所有这些规则,不如在枚举的每个类别旁边附加一个描述。现在你的代码变得更易读。要理解成为新的客户来电意味着什么,你只需要阅读提示的那一部分。这自然会让你编写更短的提示,并且几乎让你像编写代码一样编写提示,但具有英语的灵活性。我认为这兼顾了两全其美,但我们希望这些提示能够做任何事情。

但我们也不想要一篇没有人最终会阅读的两页论文,我们只是不断地添加内容,最终意识到我们有一系列矛盾,难怪模型在过去六个月里一直表现不佳。

你是否曾经感到孤立,周围的人都不分享你对数据科学和技术的热情?你是否希望与更多志同道合的人联系?别再犹豫了。Super Data Science 社区是连接、互动和与 600 多名数据科学、机器学习和人工智能专业人士交流想法的理想场所。除了人际网络之外,你还可以通过导师计划获得直接的职业支持,经验丰富的成员帮助初学者学习。

无论你是想学习、合作还是提升你的职业生涯,我们的社区都能帮助你取得成功。加入 Kirill、Adelaine、我和数百名每天都联系的其他成员。立即开始你的免费 14 天试用,访问 superdatascience.com 并成为社区的一员。

很好。是的。所以你在这里提供了很多例子,说明BAML如何通过提示使调用LLM或其他类型的模型更好,获得更好的结果。我们已经讨论了诸如能够快速进行提示测试、能够快速迭代这些测试、能够处理RAG用例、能够处理模糊错误等方面。最后一件事

我想谈谈的一个优势。还可能会有其他一些内容自然而然地出现,但你在12月份旧金山Gen AI Collective路演中谈到的一些内容,

是的。

是的,这实际上是受到过去10年在性能优化和手工编写汇编方面的启发。我在这段旅程中学到的真正经验是,我是一个非常优秀的高性能工程师。但是编译器每次都打败我,不是因为它写的代码比我好,而是就每美元时间的价值而言,编译器在相同的时间内可以优化比我更多的代码。

因此,对我来说,优化代码的某些部分是有意义的,但不是所有代码。我认为对于提示和令牌效率,我们有类似的看法。你可能应该对对你来说超级重要的一个或两个提示进行超优化。但对于90%的提示,你只需要一些东西能够做得非常出色。我们对性能优化的想法是,首先,每个人都在使用结构化输出。结构化输出或函数调用是这样的一个想法,即LLM

它获得了一堆工具。假设我让它访问天气API,并且它描述了天气API接收邮政编码或城市和州。然后,LLM还可以访问一个餐厅预订器,它必须接收餐厅的名称和某种地址。最后,它得到一个餐厅查找器或其他什么东西,我再次给它一个城市和州。我问模型,今天天气怎么样?

它应该选择餐厅工具,并根据提供的任何上下文填写参数。这样做的想法是,今天在模型和你的软件之间发送数据的最佳方式是JSON。正如我们之前讨论的那样,JSON有很多“喜欢”和“嗯”。我们没有理由强迫模型遵循我们建立的标准,该标准对于Web开发来说非常棒。

所有这些引号,它在定义中严格要求你必须在那里有引号。你只能使用单行字符串。你甚至不能在JSON文件中添加注释。对我们来说,我们说的是,如果有一种不同的格式呢?所以我们花了大约八个月的时间编写了一种名为模式对齐解析的新算法,它实际上能够获取模型的响应

并自动将其推断为你提供的针对它的数据模型。如果它犯了一些错误,例如它忘记了数据模型上的引号,忘记了行尾的逗号,它在你期望数字时给了你一个字符串,所有模型会犯的各种错误,因为它们本质上是概率性的。我们在不到5毫秒的时间内通过算法对其进行了纠正。再说一次,这并不是说它是完美的,

但它与C编译器所做的事情相同,那就是它做得更频繁,更正确。很好。然后通过具有令牌效率,即使是,我不知道,例如,平均而言,你认为它大约是多少?它节省了你大约10%的令牌数量?我们已经看到客户轻松地节省了20%到30%的输出令牌。哦,真的吗?是的,它快得多。哦,哇。

但我认为被忽视的一点不仅仅是它更快更便宜,还在于它适用于所有现有的模型。例如,DeepSeq R1最近发布了,他们发布的模型没有函数调用。OpenAI的O1模型也是如此,它们发布的模型没有函数调用。我们有BAML用户今天正在使用这些模型的函数调用,因为模式对齐解析不需要修改模型就能实现这一点。哦,这太酷了。

太棒了。除了你刚才给出的那种用例之外,还有一个非常有趣的用例,它能够进行工具调用或O1工具调用。你从用户那里看到的一些其他意想不到的或创新的BAML用途是什么?我认为我看到的一个很酷的用例是这家公司正在为Xcode制作Cursor。

因为显然,如果你在Mac世界中,你必须使用他们自己的专有工具。了解苹果公司,他们可能需要很长时间才能构建任何类似的东西。我们了解到的一件有趣的事情是,你需要工具调用才能做这些事情,才能构建像Xcode或Cursor这样的东西。但是当你生成代码时,我不知道你是否曾经在Cursor中看到过这种情况,它总是会弄乱我的Markdown内容。因为它试图使用三个引号,而它们的解析器由于某种原因无法正确处理。

如果你在JSON块内生成代码差异,它们总是会出错,因为你需要很多转义字符。每一行都需要改为反斜杠n。每个引号都需要反斜杠引号。但由于模式对齐解析非常灵活,我们实际上发现他们只是告诉LM,“嘿,用三个引号输出我的代码”很有趣。

模式对齐解析获取不需要转义的三个引号文本,并将其转换为正确转义的常规字符串。但我认为这是我一段时间以来看到的最酷的事情之一。我看到很多使用BAML的动态UI和很多生成式UI。我认为这些是体验中最酷的视觉效果。你能举一个生成式UI的例子吗?是的。

是的,很难描述生成式UI,但我将尽力而为。因为它只是一个新概念,在很多地方并不存在。让我们以食谱生成器为例。当我有一个食谱生成器时,我们都可以去ChatGPT并要求它输出一个食谱。这很好。它会做这件事。

但我真正想要的是一些几乎可以向我展示碳水化合物的东西,这里是我拥有的所有配料,以及我想要的数量。碳水化合物完成后,我想显示并说,“嘿,这里有一个单独的部分,说明你必须遵循的步骤。这里还有最后的准备步骤。如果有一个微调器沿着每个部分移动,显示它当前正在处理的内容,那不是很好吗?”

这类事情,就像在过去的Web开发时代一样,需要你做很多事情,比如状态管理。你需要很多代码才能做到这一点。我们揭示了一个名为语义流的新事物,它允许你以类型安全的方式使用该数据。你现在可以构建这样的UI了。现在你的聊天应用程序突然不仅可以响应文本,还可以拥有动态图表,可以拥有动态模型。你的聊天应用程序突然不再像ChatGPT了。

因为如果你试图围绕聊天构建一家公司,我认为你必须问问自己,为什么我的用户不会直接去ChatGPT?我认为你可以做的一个巨大的价值主张是为你要提供的产品构建最佳用户体验。如果你试图分析股票,请实时向我显示股票代码。向我展示图表。

诸如此类有趣的事情,ChatGPT根本不会去做。很好,是的,这些都是很好的例子,我喜欢这些食谱卡和股票,这确实使生成式UI的含义易于理解。很好,即兴发挥,或者你可能知道现实世界中的一些例子,但这些都很酷。那么,你认为接下来会如何发展?你一定

你看起来像一个非常有创造力的思想家,非常敏锐。你可能有数百万个潜在的方向,并且相对于你认为可能发生的事情,可能会有任意数量的转变。但在不久的将来,我们可能会期待BAML有哪些新的特性

或功能?在某些方面,设计编程语言最困难的事情是知道不要做什么。因为如果你真的在发明一种新的语法,你技术上可以使任何事情发生。如果你的编译器可以读取它,你就可以做到。因此,我们经常尝试练习说我们没有做什么,而不是我们正在做什么,因为尝试承诺一切太容易了。但最重要的是,我们正在尝试将更强大的功能引入BAML。

我们认为未来会变得更普遍的一种范例是,你会想说类似这样的话:“嘿,我想把我所有的免费用户发送到像GPT-4.0 Mini这样的模型,我想把我所有的付费用户发送到像GPT-4.0 One这样的模型。”你如何在代码中以优雅的方式表示这一点?你如何能够重现付费用户与免费用户在前面提到的热重载循环中看到的完全相同的内容?

我们将尝试引入这样的概念,你可以在BAML中使用if语句、for循环和条件语句,因为这主要是一直以来用户要求的方向,比如让它更强大,这对我们来说有点可怕。但实际上,另一个方面是围绕BAML可以预期的工具。

在过去的10年中,我从机器学习中学到的最重要的一件事是,我相信我们都听过无数次了,但数据是关键。数据是你所能拥有的最重要的事情。很多时候,人们的数据管道都出错了。

这并不是说他们故意这样做。只是说你可以踩到一千个地雷而犯错。许多公司做的另一个大问题是,他们开发某种人工智能功能,假设他们需要的数据存在,而他们只是没有数据。没错。而且你可以,然后人们能做的最糟糕的事情是,他们使他们的数据管道变得如此僵化,以至于

然后他们所做的是更改他们的代码。现在他们的代码正在发送不同的数据,这意味着你的数据管道需要大量的工作。因此,每一次更改都是一次巨大的更改。现在你的发布速度变慢了,因为你必须去更新你的数据管道。BAML由类似于protobuf的数据模式版本支持。但没有protobuf带来的所有麻烦,

因此,对于那些不知道的人来说,protobuf是一种以与语言无关的方式表示数据模型的方法,它能够对它们进行版本控制。因此,如果你随着时间的推移更改了模式或枚举并向其中添加了一个新类别,你可以知道枚举已更改,并且仍然可以序列化和反序列化旧值。BAML允许你以一种非常符合人体工程学的方式做到这一点,而无需在你的代码中实际维护它。我们的数据管道会自动发展以做到这一点并解决这个问题。因此,如果你有

一个具有五个类别的枚举,三个月后你有一个具有50个类别的枚举。我们实际上能够呈现这种差异。我们将在未来一两个季度分享更多关于数据平台的信息。很好。所以我们现在知道了使用BAML与仅发送没有BAML提供的这种结构和可靠性的提示相比的许多优势。如果我们有一个想要立即开始使用BAML的听众,

他们该怎么做?第一次使用BAML是什么样的?你如何安装它或获得使用它的经验?是的。因此,BAML需要,我们非常努力地使它非常易于安装。我们感谢任何愿意学习新语法并使用它的人。因此,我们有两件事可以帮助你。首先,我们有一个在线游乐场,你可以在你的存储库中完全不安装它的情况下体验BAML。

因此,你可以直接访问promptfiddle.com,并且可以体验在VS Code、Cursor或你想要的任何其他地方使用BAML会是什么样子。你可以做的第二件事是,根据你使用的是TypeScript、Ruby、Python、Java还是其他任何语言,我们支持每种语言。你可以使用你选择的包管理器安装BAML。我们在我们的存储库中有关于如何操作的说明。你只需执行pip install BAML-py。然后将几个BAML文件添加到你的存储库中。

就是这样。这就是工作。对于那些真的、真的不想学习BAML语法的人,我们有一个聊天,你可以询问,你可以向它描述你的问题,它实际上会生成BAML代码加上几个测试用例

以及Python或TypeScript代码片段,以向你展示如何在选择的Python或TypeScript中使用该BAML代码。非常酷。好的。因此,听众们,你们现在有了另一个工具。去看看Boundary的BAML。你不会很难找到它。当然,我们在节目说明中也提供了一个链接。呃,

我个人还没有使用过它,但是下一个LLM项目,使用BAML似乎是理所当然的,利用BAML相对于仅提供我的纯文本提示并从我发送给它的模型API获得任何返回内容所提供的所有效率和功能。

如果我们的听众想与你一起工作,他们可以查看Boundary网站,看看你是否正在招聘。但我认为你可能想让他们了解你有趣的招聘流程。是的,我们有点奇怪,就像我们所做的一切一样。我们喜欢做一些不同寻常的事情。

但我们实际上从未在网上发布过招聘信息。部分原因是,招聘愿意制作编译器的人,我们只是想要一群想要这样做的人。互联网上并非一定有很多积极寻求这样的人。

但我们所采用的招聘方法是,我们想要组建一支具有良好品味并知道如何为开发人员构建工具和复杂工具的工程师团队,这样我们的用户就不必这样做。到目前为止,我们的方法很简单,那就是你只需给我发一封电子邮件。我想如果我们愿意的话,我们会把我的电子邮件放在下面,标题是“为什么我很棒”。

然后吹嘘你自己,对吧?你做过的三件令人惊奇的事情。我们真正索引的是复杂性,但实际上也是你沟通得有多好。因为我们的语法是与用户沟通的一种方式。我们必须做得非常好。如果进展顺利,那么我们就会进行一个简短的电话交谈,并确保我们彼此不讨厌。如果进展顺利,我们会联系你的三个推荐人。

如果你被推荐,我们实际上不会面试你,我们会面试你的推荐人,我们会深入研究他们与你一起工作的技术。这实际上给了我们一个更好的信号,了解你做了什么,你能够做什么,你如何与其他人一起工作,并让我们对我们认为你如何融入团队有一个很好的了解。到目前为止,这就是策略。然后你就会收到录用通知。

非常酷。所以他们不会直接被问到任何技术问题?是的,通常不会直接问。然后我们做最后一件事,在我们给你录用通知之后,我们会给你机会来和我们一起待一周,这样你就不必真正正式承诺加入我们的公司。你可以感受一下我们实际的线下氛围,因为我们一周五天都在线下工作。我们做的最后一件事,一旦一切顺利,我们彼此都有了感觉,你真的、真的非常兴奋,希望我们也真的、真的非常兴奋,

就是你告诉我你想在哪个公司工作,我会帮助你去那里面试,我会亲自帮助你找到那份工作。我很高兴地宣布我的朋友们,第10届年度ODSC East,开放数据科学大会East,2025年你不想错过的唯一一场会议,将于5月13日至15日返回波士顿。我将在那里主持一个关于代理人工智能的实践研讨会。

此外,你明天就可以开始学习了。你的ODSC East通行证包括从1月15日至2月6日举行的AI Builders峰会,你可以在那里深入了解LLM、RAG和AI代理。无需等到5月。无论你的技能水平如何,ODSC East都将帮助你获得人工智能专业知识,从而将你的职业生涯提升到一个新的水平。不要错过。早鸟折扣即将结束。在odsc.com/boston了解更多信息。

非常酷。我想深入探讨一下,线下工作的事情,因为在大流行之前,我一直都在线下工作,我现在非常想念它

在你我开始录音之前,我们谈论过的事情是,我认为是在我们开始录音之前。有时很难记住。但我们谈论的是,例如,当你使用Slack时,当你使用Zoom时,当你完全远程工作时,你会有同事。但是当你亲自与人见面时,你真的知道人们生活中发生了什么。你会发现小组中的人,你会想,“我们下班后应该去喝啤酒。”这会自然而然地发生。你最终会拥有

我的意思是,我一生中很大一部分朋友都是通过认识的人,要么是和我一起工作的人,要么是他们的朋友。你会有这些人

是的,这是一种巨大的社会体验。它使工作变得有趣。自从大流行以来,我可能只笑了我以前笑的10%左右。因为你与可能拥有相似背景、相似兴趣并且通常非常聪明、有趣的人一起工作。所以这就像工作可以很有趣。是的,我们......

我记得当我们第一次开始远程工作时,我的意思是,我们当时是Slack的竞争对手,所以当我们一开始这样做的时候,我们是完全远程工作的。我们必须完成我们的使命。但是,就像,这实际上是关于人际关系的。当我和Aaron开始这段旅程时,我们告诉自己,“我不在乎我们能赚多少钱,如果我们彼此讨厌,那就是失败。我们不会......这是最糟糕的结果。当我们雇佣我们的第一个人时,情况非常相似。我们只是不希望他们讨厌我们。理想情况下,他们会喜欢我们。但是......

我认为线下工作是最好的方式。就像,不仅仅是为了我们,我认为对于我们的技术来说,我们需要线下工作,因为在关于语法之类的任何对话中,共享的带宽数量,你无法通过数字方式做到这一点,但这很有趣。你可以做一些奇怪的事情。你有自己的办公室。感觉像家一样,即使你的办公室作为一个小型公司来说很糟糕。它感觉像家一样。嗯,

而且很有趣。我记得我们的一位同事有孩子,他们把孩子带到了办公室。孩子们都很兴奋。你可以了解他们。你可以了解他们的伴侣,然后你们成为朋友。就像很多,就像我认为我和你的感觉一样,除了大学的朋友之外,我几乎所有最亲密的朋友都是通过工作认识的,100%。我认识他们十多年了。我喜欢这样。就像,我不会交换它。大学的事情并没有什么不同。就像你和其他人一样出现

在白天工作,有时熬夜工作,下班后喝啤酒,这真的差不多。是的,我不知道。我认为很多人对工作有一种看法,那就是他们做一份工作是因为他们有一份工作。但我认为,如果你能够找到一群你真正喜欢一起工作的人,即使那是世界上最无聊的事情,或者也许是世界上最令人兴奋的事情,但如果你有一群你真正喜欢的人,

我认为线下工作很棒。当然。线下工作很棒。它可以非常有趣。

是的,希望我有一天能再次弄清楚这一点。我们应该让你有时来西雅图和我们一起出去玩。是的,当然。我很乐意。是的,我的意思是,我确实。所以,你知道,当我有机会与客人一起亲自录制时,我很喜欢。最近在2024年,我录制了,我是英伟达、戴尔和AT&T六个电视广告的主持人。

在任何拍摄中,这都非常棒,因为感觉就像,你知道的,有20、25个人在拍摄,你可以在某种程度上了解他们中的每一个人。嗯,而且,我还与彭博电视一起做了所有这六个广告。所以,你知道的,来自彭博社的人员有很多重叠。所以,你知道的,我们会,我们会去旧金山拍摄。这就是我来到旧金山与你见面的原因。实际上,我当时正在为英伟达的广告拍摄。

所以,是的,所以,你知道的,有一些

在旧金山和我在一起的人,我已经,你知道的,在过去的一年里在其他五个城市见过他们,你会在之前和之后一起吃晚饭。是的,完全正确。这真的很酷。所以希望我的未来会有更多这样的事情。播客可能会继续保持远程办公。很好,伙计。好吧,在让我离开我的客人之前,聊天真是太好了。我总是会推荐一本书,你告诉我这很容易。

是的,我只有两种我非常喜欢阅读的东西。最近,它一直是Rust手册。请阅读它。如果你是一位任何类型的开发者,我认为它会改变你对代码的思考方式,比如它进行异常处理的方式以及其他所有内容,以及所有内容都是结果类型的方式。强烈推荐。

这与其说是阅读,不如说是,如果有人真的喜欢它,CppCon会发布精彩的讲座和精彩的演讲。我所见过的最好的演讲都来自CppCon。

我强烈推荐观看和收听这些。非常酷。Rust手册和CppCon讲座。非常好。或者说是演讲,我想。它们足够长,感觉像是讲座,但以最好的方式,而不是以......是的。你知道的,我甚至没有真正区分这两个术语,但我确实知道你的意思。是的,有些人不喜欢讲座。感谢你像你的Bama语言那样消除歧义。我有一个含糊不清的提示。

很好。好的。然后最后一件事情,你已经提供了你的电子邮件地址,我们会在节目说明中为我们的听众提供。人们在节目结束后还能通过哪些其他方式联系你或关注你?所以我的领英可能是联系我的最佳方式。不过,我的联合创始人对推特更活跃,对大多数人来说都是如此。有时我会在他的推特上打字,当他允许我的时候。但是我的推特已经死了。

然后是Discord。老实说,如果你需要任何提示工程方面的帮助,我喜欢看到新的问题。我见过这样的问题,一家公司试图解析一个100页的银行对账单PDF文件,我们与他们合作。现在他们能够可靠地处理这100页,没有任何错误。那很有趣。我学到了很多东西,只是在这个问题中遇到了一些奇怪的事情。

所以我们的Discord是一个提出这些问题的好地方,我会尽我所能学习帮助。太棒了。是的,我们会确保跟进,如果你能拿到Discord,这样它也会在我们的节目说明中。也许你甚至已经提供给我们了,我只是没有注意到。太棒了。

再见,Pav。我真的很喜欢这次谈话。你没有让我失望。你很有趣,正如我预料的那样。非常感谢你抽出时间与我们这些早期创业公司的忙碌创始人在一起。你抽出时间对我们来说意义重大。是的,我学到了很多东西。不,感谢你邀请我,John。这真的很有趣。这是度过星期三的一个好方法。

Vaipav Gupta聪明得可怕,但却非常平易近人,而且谈话也很有趣。我很高兴今天能邀请他来节目。在节目中,他详细介绍了BAML(基本机器学习),这是一种专门为自然语言生成与AI模型交互而设计的编程语言,它提供了诸如热重载循环之类的功能,该循环能够在20分钟内测试240个提示,而没有BAML的情况下,只能测试5个提示,

通过模式对齐解析提高20-30%的令牌效率,它可以智能地处理模型输出,而无需显式JSON格式。与不原生支持函数调用的模型兼容,例如DeepSeq R1和OpenAI O1。以及内置的类型安全性和错误处理,以实现更可靠的AI应用程序。

除了BAML之外,本集中另一个亮点是了解Boundary独特的招聘方法,该方法绕过了技术面试,而是让候选人分享三件让他们很棒的事情,深入的参考面试和为期一周的试用期。与往常一样,你可以在superdatascience.com/859上获得所有节目说明,包括本集的文字记录、视频录制、节目中提到的任何材料、VibeHub社交媒体资料的网址以及我自己的网址。并且

如果你想在现实生活中而不是在线上联系,我将在3月19日于弗吉尼亚州里士满举行的RVA科技数据和人工智能峰会上发表开幕主题演讲。门票相当便宜,而且有很多优秀的演讲者。所以这可能是一个值得关注的优秀会议,特别是如果你住在里士满地区。在那里见到你将非常棒。

当然,感谢Super Data Science播客团队的所有成员,我们的播客经理Sonia Brajovic,媒体编辑Mario Pombo,合作伙伴经理Natalie Zheisky,研究员Serge Massis,我们的撰稿人Zahra Karche博士和Sylvia Ogwang。当然......

本人,我们的创始人Kirill Aramenko。感谢他们为我们制作了另一集精彩的节目,感谢超级团队为你们创造了这个免费播客。我们非常感谢我们的赞助商。你可以通过查看节目说明中的赞助商链接来支持该节目。如果你想自己赞助播客,赞助一集,通过我们发布你的信息,你可以在johncrone.com/podcast上了解如何做到这一点。否则,

与那些喜欢学习BAML的人分享这集节目。在你最喜欢的播客应用程序或YouTube上评价这集节目。订阅,显然,如果你还不是订阅者的话。随意将我们的视频内容编辑成短片或任何你想要的内容。只需提及我们,但主要是BAML。

我,你知道的,如果你不做这些事情,对我来说并不重要。我只是希望你能继续收听。我很感激有你收听,我希望我能继续制作你多年来喜爱的节目。直到下次,继续努力吧,我期待着很快与你一起再次享受Super Data Science播客。