Code[ish]播客回归了!加入Heroku超级粉丝Jon Dodson和来自Heroku AI团队的Hillary Sanders,收听我们“深度技术”系列的最新内容。在本集中,两人讨论了Heroku托管推理和代理——它是什么,它做什么,以及为什么开发人员应该使用它。希拉里还分享了为进入就业市场的初级开发人员提供的技巧,乔恩还假设性地将10名首席开发人员与100名刚毕业的训练营学员进行了对比。</context> <raw_text>0 您好,欢迎收听Kodish,这是一个探索现代开发人员生活的节目。加入我们,一起深入探讨编程语言和框架、数据和事件驱动架构、人工智能以及个人和团队效率等主题。本集面向开发人员和工程领导者,是我们的深度技术系列的一部分。
大家好,我叫John Dodson,我在Heroku的构建团队工作。自从我父母买了一台VIC-20电脑,我就开始编程了,我想自己制作软件,说实话,大部分都是一些奇怪的游戏。我是Heroku的超级粉丝,我很高兴能和大家谈谈Heroku的精彩之处。今天,我和Heroku的Hillary Sanders一起讨论Heroku的精彩之处。你好,Hillary。
你好。Hillary,我们直接进入正题。我想知道你能不能告诉我们一些关于你自己的情况以及你在Heroku的工作。是的,我是一名人工智能工程师和研究员,拥有统计学和神经网络方面的背景。我在Heroku AI团队工作,我们构建产品来帮助Heroku客户使用AI并将AI集成到他们的应用程序中。
我们还使用AI来构建定制的内部工具和管道,并改进现有的Heroku产品。听起来很有趣。那么,你作为软件工程师的历程如何?对于刚入行的开发人员有什么建议吗?是的,我的历程非常有趣和幸运。我认为它始于我在大学时,我爱上了统计学,显然。
常见路径。是的,常见路径。我到处闲逛,上了太多课,然后上了一门统计学课程。它可能并不完全像是一种宗教般的召唤,但有点像。我认为统计学就像研究如何最佳地评估关于世界的证据一样,我觉得这非常美丽和重要,并且真正体现了我的思维方式以及我认为世界应该如何做出决策以最大限度地发挥作用。
我意识到这句话对某些人来说可能听起来很可怕。如果确实如此,那么他们应该和我谈谈。但这就是让我对统计学感兴趣的原因。
我意识到,如果你将它与大数据和计算能力相结合,统计学不仅变得美丽,而且变得非常强大,即机器学习。在这个时代,当然在接下来的几十年里,它可能会非常强大。这就是我开始学习机器学习的原因。我只是爱上了统计学,并开始与一些教授一起进行研究,然后去了海湾地区。
说实话,我开始研究神经网络是因为我对它们的描述感到困惑,因为过去没有人能解释它们。实际上,我在大学里没有学习过这方面的内容。都是关于分层贝叶斯网络和马尔可夫链的。令人惊奇的事情。
但我最终开始研究神经网络,因为我非常好奇为什么没有人能解释它们的工作原理,这让我非常想弄清楚它们的工作原理。这帮助我获得了几年的神经网络优化工作,最终把我带到了Heroku。这就是我成为一名AI软件工程师的历程。
就建议而言,我会评论一下今天的就业市场,这部分感觉不真实,因为我以前从未经历过这么糟糕的技术就业市场。同意。情况很艰难。我的处境比大多数人都好。是的。是的。因为我认为,如果你是一名初级开发人员,情况比我将要经历的情况还要糟糕。但我犯了很多错误,所以可能有一些建议。
我的第一个可以忽略的建议是不要写求职信。我不知道这是否正确,但我认为它们需要很长时间。人们通常会假设你用LLM写的。
在写一封求职信的时间里,你可以申请很多工作。因此,除非你有一些真正有意义和具体的内容要说,并且问题非常独特,否则我认为最好跳过它。这不仅仅是为了时间上的权衡。我认为这是为了避免沮丧,因为我的朋友们已经面试了一年,并且变得非常沮丧。这就像成百上千份申请。
写所有这些求职信,倾诉你的心声,即使你试图不去做,这感觉非常令人沮丧。然后基本上被所有这些公司冷落。
所以,你知道吗?跳过它吧。我认为这太令人沮丧,而且没什么用。这是我的第一个没有数据支持的建议。对。不写求职信。检查。是的。另一个是,如果不好的公司拒绝了你,不要太在意,因为这是一个非常嘈杂的信号。绝对的。
我和我认识的其他人在同一周内获得了两倍薪水的职位,而其他公司支付的薪水只有原来的一半,而且听起来不那么酷,他们拒绝了我们。这很常见。事实上,我认为我注意到工作和公司质量与面试过程中提出的问题简单性之间存在正相关关系。
也许出于我不会深入探讨的原因。所以,如果你被一些地方拒绝了,不要太放在心上。也许把它看作关于关注什么的非常非常嘈杂的数据。
我的第三个建议是最不舒服的一个。我等不及了。是的,这太糟糕了。面试的一个重要部分,你知道,一旦你进入面试阶段,你获得工作的概率就会大大提高。这非常重要。你编写的代码以及你的表现很重要,但你的自我展现方式和沟通方式也很重要。也许经常被低估,因为你的沟通和自我展现方式对工作非常重要。
所以我建议进行模拟面试,并用摄像机录制自己,然后屏住呼吸,
回放观看,这可能会让你感到严重的恶心和情绪不适。但我认为,按单位时间投入计算,这在提高你的面试能力方面非常非常有效。我真的很推荐它,即使它是最糟糕和可怕的。我同意你的观点。我认为进行模拟面试是你能做的最重要的事情之一。也许可以和朋友一起练习。你找到工作了。
通常周围会有一个就业办公室,你可以和他们一起练习,或者像你说的那样,录制你自己。网上有很多面试问题可以练习。所以,是的,我认为这很好。这是很好的建议。Hillary,你在Heroku AI团队工作,这在Heroku仍然是一个相当新的团队。我想知道你能不能告诉我们一下创建它的原因以及团队试图解决的问题。
是的,我认为我们试图解决很多问题。本质上,Heroku 15年前非常酷,非常热门。我认为它现在仍然很酷。我们正在努力跟上时代,并确保我们在这方面做得很好。
因此,在人工智能方面,我们专注于两个主要领域。例如,一是使将AI轻松无缝地集成到你的Heroku应用程序中,并确保这些AI组件可以轻松地与你的数据库和Heroku空间中的其他组件进行交互。然后是使用AI来改进我们现有的产品。
因此,如果你在Heroku上拥有数据库或应用程序,或者如果你想使用游标或VS Code进行氛围编码,我们应该帮助确保AI能够使这种体验真正变得非常好。
游标应该有一个扩展程序,使LLM能够轻松理解如何将你的应用程序部署为Veroku应用程序,诸如此类的事情。因此,实现所有这些是主要目标。我认为这会导致许多真正有趣、有趣的产品和功能。Hillary,这是一个非常重要的问题。我儿子8岁。
他喜欢在YouTube上观看各种脑残视频,就像人们通常做的那样。其中一种无稽之谈是这些对比视频,例如10000个哈利波特对抗一百万个捕食者。就像我说的那样,非常重要。所以我们将把它应用于AI。你认为哪个团队能在六个月内更快地开发出更好的应用程序?10名没有AI的首席开发人员,还是100名拥有所有当前AI工具的新训练营毕业生?
哇。好吧。我对这个问题有复杂的感觉。有很多权衡。绝对有。我首先要提出一个担忧或讨论主题,即隐含的假设是,一百名工程师在一个应用程序上工作会使事情变得更好。
除非你组织得很好。我觉得这是这个问题的隐含前提。这是这个问题的第一个陷阱。绝对的。这真的很困难。对。是的。如果他们都必须在一个应用程序和一个代码库上一起工作六个月,在这种特定情况下,我会押注于10名首席开发人员。是的。
但是,有很多排列组合会让我肯定地押注于新训练营毕业生。哪种排列组合?好的,如果允许他们分成五人或十人一组。
从一百个人中挑选你认识的八个最聪明的人,让他们做不同的事情,然后进入一个房间。如果他们都可以被隔离并一起工作,然后也许在六个月后,你从所有这些小组中挑选出他们构建的最好的东西,我认为这肯定可以击败10名首席开发人员。我同意。我同意这一点。是的。
因为如果你是一个拥有良好产品愿景的新训练营毕业生,并且你正在使用AI,当然,很多时候你可能会走错方向,因为你并没有像经验丰富的开发人员那样在职业生涯中积累了所有美好的错误和经验教训。你可能会走错方向,但一两个团队可能会走对方向。所以在这种情况下,我会押注于他们。另一种排列组合是缩短时间段。
如果你有一天或一周甚至一个月的时间来构建一个东西,那么我可能会押注于训练营毕业生,因为你可以用AI快速完成很多事情。没有它就很难做到这一点。所以这是一个问题。此外,如果你有六个月的时间,而你没有集成到现有的复杂服务、官僚机构等中,你可以构建很多东西。这意味着你的项目变得非常复杂,你的代码库变得相当庞大。
特别是如果你使用了过多的AI。现有的LLM模型难以处理各种事情。它们很棒,但它们也难以处理常识推理,并且难以理解一个非常复杂的代码库,然后只做一些小的改动。
人们正在开发许多非常酷的工具,Heroku也对此很感兴趣,以使这更容易,例如将整个存储库推送到更大模型的上下文窗口中,或者尝试寻找好的方法来查找代码的相关部分以将其放入LLM的上下文窗口中,以便它可以编辑你的代码或调整某些东西。
但这在相当复杂的代码库上仍然不能很好地工作。所以在六个月的时间跨度内,我认为AI的边际收益递减,特别是如果你在一开始就走错了方向,那将不是一件好事。但如果时间很短,并且你有一个清晰的愿景,那么是的,初级开发人员使用AI可以构建很多东西。
太棒了。所以这里有一个不同的方向,Ruby和Rails,Ruby和Rails框架是Heroku选择的语言和平台,至少在历史上是这样。所以我们支持的不仅仅是这些,包括我们刚刚添加的.NET,我对此非常兴奋。但从历史上看,Ruby和Rails是我们所做工作的核心。所以,对于你来说,如果你甚至有的话,你会认为哪种语言是AI的语言?
我的意思是,当然是Python。它非常流行。是的。如果你想开发神经网络,你通常几乎总是使用Python。它很棒。在AI爱好者中非常流行。它非常易于使用。有很多支持和很多包。所以,是的。
好的。现在让我们谈谈Mia,这是我们最近发布的产品。所以,我有一个问题,什么是Mia?它有什么作用?为什么客户应该使用它?Mia,太棒了。Mia是Heroku的托管推理和代理附加组件。
它有很多功能,而且还会有更多功能。但本质上,它是一个附加组件,可以轻松集成AI。特别是像大型基础模型,如LLM,如QuadSonic 3.7,到你的Heroku应用程序中。因此,它允许你添加附加组件,将像Quad这样的模型直接附加到你的应用程序中,而无需
外部帐户设置或将你的数据发送到Heroku外部或用于数据安全问题的API密钥管理,推理调用将正常工作。这非常好,避免了很多麻烦,但我们还添加了很多特殊的特性,以使体验更好,并消除你通常必须在某些情况下编写的许多样板代码。
因此,我们拥有与代理自动工具执行相关的非常酷的功能,包括一些内置于Mia中的工具,这些工具将立即自动工作,而无需你部署自己的工具服务器。我们有很好的仪表板,以及你附加到模型的工具的仪表板。我们还提供许多与MCP相关的非常酷的功能。
MCP是一个开源协议,代表模型上下文协议。它基本上有助于定义AI应用程序应该如何以一种很好的标准化方式与工具、数据库和资源进行交互。
我们非常看好MCP,我很高兴我们这样做。因此,我们的许多功能都是围绕着确保将你自己的MCP服务器部署到Heroku非常容易,并在其周围添加更多特殊功能而构建的。太好了。我喜欢MIA,因为它像添加数据库或添加Redis一样容易地将AI添加到你的应用程序中。它将是一流的。当我最初查看团队设计的API时,
我喜欢它的简单性和可扩展性。这是一项非常棒的工作。太棒了。是的,确实太棒了。那么,Mia为Heroku客户解决了什么最大的问题?你认为开发人员应该在哪些应用程序中添加Mia?
是的。好的。Mia解决的最大的问题是,Mia解决了很多小的恼人的问题。对。这与Heroku做得非常好的事情类似。我们为你解决了许多小的恼人的问题。因此,部署应用程序不是一种令人沮丧的体验。
所以,如果我认为你解决的最大的问题,它可能相当无聊。你不必去创建一个外部帐户,例如OpenAI,并向他们提供你的信用卡,也不必担心你的数据被传输给他们。这很简单,但很好。
然后,你将拥有一个非常易于设置的LLM、图像模型或嵌入模型,如果愿意,它可以轻松连接到你的其他Herku应用程序或数据库。所以也许这是解决的最大的问题。它可能不是最有趣的一个,但它与使用它的每个人都相关。所以它的影响力很大。是的,绝对的。另一个问题是什么?你认为开发人员应该在哪些地方添加它?
如果他们有一个应用程序,他们打算调用外部第三方大型基础模型,
我会强烈建议使用MIA,因为你通常会得到相同的东西,但它在Heroku上运行得非常好,因为你免费获得所有这些内置功能,例如仪表板、令牌消耗以及与MCP相关的许多其他好功能。如果你想要一个MCP服务器,哦,突然之间,添加OAuth身份验证和执行与MIA配合良好的服务器注册变得非常容易。
这类事情完全可行,但如果你使用外部第三方LLM,则会更难。所以我会说,如果你想在你的应用程序中使用大型基础模型,例如这些API,那就太棒了,并考虑使用Mia。
所以这非常非常重要。在《星球大战》电影《克隆人的进攻》中,帕德梅和阿纳金乘坐H型努比亚游艇前往纳布,这是一艘豪华游艇,是纳布舰队的一部分,以其流畅的设计和强大的偏转护盾而闻名,显然。根据一篇做了数学计算的Tumblr博客文章,前往纳布的总旅行时间为10天10小时。所以,我的问题是,Hillary……
我们需要多少部电影或Disney Plus剧集才能涵盖这段旅程?10天10小时,非常重要。是的。
我认为这是一个非常好的问题。哦,很好。我有一个答案。答案是《安多》第二季。哦,我的天哪。我现在正在看。太棒了。这是一部很棒的剧集。是的。十分之十。是的。我今晚正和朋友们一起看这部剧。所以不要剧透。哦,是的。它很棒。是的,我同意。是的。如果你现在正在收听,那么你在做什么?去看吧。哎呀。之后。是的,它真的很好。
那么,你在开发MIA时使用了哪些技术?团队使用了哪些技术?
哦,这是一个有趣的问题。就今天存在的Mia而言,我们主要使用Heroku提供的技术。我们正在使用Heroku,我认为这通常是一件非常好的事情。所以我们正在使用Heroku Dynos、Heroku Private Spaces、Heroku Pressgress和Heroku Redis。尽管我之前说过Python,但我们的许多代码都是用Go编写的,因为我们希望路由速度很快。对。我们正在进行较少的神经网络开发。
我们希望API路由能够很好地工作。实际模型由亚马逊和安全的AWS帐户托管。我们将来可能会添加更多模型,实际上没有“可能”部分。这就是我们今天使用的粗略技术栈。我会说,一段时间前,我们一直在考虑托管我们自己的模型,我认为……
远离这个决定绝对是正确的,但我们可以使用一套非常有趣的技术。例如Trident、TensorRT、VLLM和PyTorch,并对不同的EC2实例进行大量成本性能分析,例如Infra-Nchi和Tranium,经典的GPU驱动的EC2。
那太有趣了。我认为那只是有趣。但是,我们没有在当前的MIA中使用这些技术。但是,我们确实使用了一些Python。例如,我们正在发布各种开源MCP存储库,以便人们可以使用我们的第一方工具。如果这符合他们的兴趣,他们可以部署自己的MCP服务器,并使其与MIA一起工作。他们还可以克隆我们的一些入门存储库,以便更轻松地做到这一点。
你能带我了解一下你认为Mia最酷的功能吗?是的,我不知道这个功能在播客发布时是否会面向大众。如果现在不行,很快就会实现。对我来说,最酷的功能可能是我们所说的第一方自动工具执行。
因此,Mia提供了一个代理端点,允许你告诉你的模型,嘿,你可以调用XYZ工具。通常情况下,使用推理提供程序时,模型会选择工具,然后回调给你。你,客户端,必须像这样,哦,模型想要调用这个工具。现在我必须处理它,并将其调用到我已部署的某个服务器或执行某些操作,然后将其响应返回。但如果你使用代理端点,你可以选择让我们为你完成所有这些控制循环的废话。
更酷的是,我认为这可能是最酷的功能,我们还提供了一些内置于Mia中的工具。
所以我们的想法是,你可以在Heroku上创建一个应用程序,并将其附加到Mia,也许附加Claude Sonnet 3.7,并说,嘿,Claude,你拥有所有这些我知道Heroku提供的工具。我希望你编写Python代码,它将在我的Heroku帐户中的一个一次性dyno上运行。或者,我希望你能够搜索Google,或者我希望你能够查看我的一个只读数据库并告诉我有关它的信息。或者我希望你能够解析这个随机的PDF并谈论它。
我们认为有很多非常有用的工具,我们想免费提供。我认为真正酷的是,人们可以在使用Mia的前三分钟内使用它。它不需要很多样板代码和很多工作就能使其工作。因为同样,你可以自己构建它,但如果你不必自己构建它,并且它在三分钟内就能完美运行,那就太好了。
编写几行代码。这是我最喜欢的开发方式。非常好。太不可思议了。
因此,当团队聚集在一起混合发布的产品时,我们经常会在技术上存在分歧。这种情况会发生。人们会意见不合。我想知道在构建Mia时,团队之间是否存在任何分歧,或者产品是否只是自然地发展而没有任何分歧?我想我们必须定义分歧,对吧?因为说实话,工程团队和等级团队是我合作过的最具有社会性的工程师团队。是的。
我已经做了12年了。所以这应该是一个重要的声明。所以,如果我将分歧定义为高不确定性、高影响力、热门话题的决策,我们会犹豫不决,因为有很多决策没有明确的答案,我们需要一起努力解决。就像我们仍然在犹豫一些事情一样。如果你想要可能不会从这个
我们正在努力解决的一个非常有趣的问题是,我们发布的未来模型或发布的未来端点的最佳API模式是什么?最佳API格式是什么?这里有很多相互冲突的激励因素非常重要。
我认为没有一个明确完美的答案。只是有很多不同的权衡。你不想让客户不堪重负。这令人筋疲力尽。我不想评估250种果酱。我只想要一种美味的果酱,我想吃点零食。这就是我想要的。Heroku也是如此。
另一方面,不同的API模式之间存在权衡。例如,你可以使用你的底层模型提供程序并使用它们的API模式,但是每个模型都有不同的模式。你可以将所有内容转换为像OpenAI这样非常流行的模式,但是你将在边缘情况下有所不足。在许多情况下,你可以做很多工作来解决这个问题,但最终,你仍然会有一些边缘情况,这可能会使体验不那么优雅。
当你想要使用我们的模型支持但OpenAI不支持的功能,反之亦然,或者想要明确地说明我们实际上忽略了一个功能时,但你也不想在人们通过OpenAI SDK运行代码时破坏某些东西。这样做也有很多好处。使用所有在线示例代码和非常了解OpenAI的所有在线包非常方便。然后,为了加入这个派对,你还可以使用我们正在构建的所有自定义内容
这需要成为我们决定使用的任何API格式的超集,这与我们使用自动工具执行等功能提供的代理功能相关。所以这是一个非常有趣,也许是“有争议的”问题,但我认为更像是一个非常有趣的问题,在我们发布越来越多的东西时,我们将继续努力解决这个问题。
老实说,如果你正在收听并且有强烈的意见,请给我发电子邮件,因为我很想知道你的想法,因为这是一个非常棘手的问题,人们有很多好的意见。
好吧,收件箱肯定会被淹没。我希望如此。那太好了。最后,我想总结一下,谢谢你今天和我谈话,Hillary。哦,谢谢你。是的,不用谢。Mia接下来会有什么?我们可以期待什么?我知道它刚刚发布,我知道。每个人都想知道接下来会发生什么,但我只是很好奇,Mia接下来会发生什么?太多了。我的意思是,主要是我们想要挤进我们最初版本中但没有挤进去的东西。
最大的类别是与MCP(我提到的模型上下文垂直)相关的许多非常酷的功能。因此,我们提供不同类型的模型,例如用于RAG的嵌入模型,用于Shoevel增强生成,图像模型和几个聊天模型。但是你可以使用工具真正增强聊天模型。因此,我们正在对MCP进行大规模押注,并很快发布许多与之相关的非常酷的功能。
所以我很期待。我也是。再次感谢你今天和我谈话,Hillary。非常感谢。感谢您收听本期Kodish播客。Kodish由Heroku制作,它是部署、管理和扩展云中应用程序的最简单方法。如果您想了解有关Kodish或Heroku任何播客的更多信息,请访问heroku.com/podcasts。