Transcription
这是我们所有的选择 [音乐] 现实如此之多。 [音乐] [音乐] [音乐] 热。热。热。 [音乐] 热。热。热。 [掌声] [音乐] [音乐] [音乐] [音乐] 热。热。 [音乐] [音乐] 热。 [音乐] 热。热。热。 [音乐] [音乐] 热。热。 [音乐] [音乐] [掌声] 热。启动控制。我们出发了。收到。 [音乐] 女士们,先生们,请和我一起欢迎来到舞台的 Llama Index 的开发者关系副总裁 Lorie Boss。 [掌声] 大家好。你们有这么多人。今天很高兴见到你们。欢迎来到 2025 年人工智能工程师世界博览会。让我们听听你们的声音。欢迎来到 Yerba Buena 宴会厅。对于那些设法挤进房间的各位,呃,我听说这是拉斯维加斯以西最大的无柱宴会厅,这对于人工智能初创公司来说是一个完美的隐喻,因为规模令人印象深刻,但它没有可见的支撑。我叫 Lori Voss。我是 Llama Index 的开发者关系副总裁,据我所说,这是构建人工智能应用程序的最佳框架。我将是你们今天和明天的司仪。我的第一项业务是,我必须自拍,因为如果我不自拍,如果我不能发到社交媒体上,它真的发生过吗?请假装你们刚刚听了一个非常有趣的开场白,并且你们正在大笑。太棒了。好了。呃,作为司仪,传统上会用几个笑话来活跃气氛。呃,作为一名人工智能从业者,传统上是不想做任何工作,而是让人工智能替你完成。呃,所以我试了一下,这是一次很棒的学习经历。我学到的主要事情是,大型语言模型写笑话很糟糕。我是说,糟糕透顶。我试过 ChatGPT。我试过 Claude。我告诉他们要深入思考。我让他们搜索网络。没有一个奏效。通用人工智能将在模型能够说出真正有趣的东西时实现。在那之前,这些冷笑话都是由人类手工制作的。但言归正传。从前,我是 npm Inc. 的联合创始人。呃,所以我以前经常谈论 JavaScript。呃,我做网页开发已经 27 年了。如今,我谈论的是人工智能。我对人工智能感到非常兴奋,因为如果你在科技行业待了很长时间,你只会经历几次像人工智能驱动的这样大的革命。但科技行业充斥着那些声称是下一场大革命,结果却只是炒作的东西。区块链、NFT、元宇宙、Segway。但毫无疑问,这次是真的。当然,也有很多炒作。并非所有这些人工智能初创公司都会成为真正的东西,但核心的真正革命正在发生。你怎么知道?因为人们正在构建人们实际使用的东西。ChatGPT 的用户数量达到 1 亿,速度超过了科技史上任何一款消费产品。数百万人每天都在使用它来完成实际的事情。有时他们用它来做他们不应该做的事情,比如呃,在论文中作弊或在真实的法庭案件中编写虚假的法律引文,但每天也有数亿次真实的事情。在本次会议期间,您将听到来自 OpenAI 的多位演讲者,包括 Greg Brockman,他将在今天结束会议。另一个真实的采用故事是 Copilot。GitHub Copilot 拥有数百万订阅者,Copilot 现在是 Microsoft 365 的一部分,可供 8400 万普通消费者使用。Azure AI 被企业采用,年收入达到 130 亿美元。这是真实的采用。说到微软,他们在这里。事实上,他们是我们的主要赞助商。所以,为他们鼓掌。另一家在人工智能领域做很多大事的公司是 AWS。如此之多,以至于他们今年将在人工智能基础设施上花费 870 亿美元。AWS 也在这里。他们是本次会议的创新合作伙伴,贡献了大量的会议和研讨会。所以,让我们为他们热烈鼓掌。另外两家在人工智能领域做大事的公司是 Neo Forj 和 Brain Trust。他们是我们的赛道赞助商。Brain Trust 是构建世界级人工智能应用程序的端到端评估平台,而 Neo Forj 是世界上最受欢迎的图数据库。今年有一个关于 Graph RAG 的整个赛道。所以,Graph RAG 的内容将不会短缺。呃,去年 Neo Forj 的首席执行官 Emil Efraim 在整个会议上发表了第二受欢迎的演讲。呃,今年有多位 Neo Forj 的人发表演讲,所以您不想错过他们。去年最受欢迎的会议演讲是谁?嗯,我不想吹嘘,但那是 Llama Index 的首席执行官 Jerry Lou。他明天将发表一个您不想错过的演讲。还有我本人,今天下午 1 点也有一个演讲。我们还有很多其他很棒的赞助商。这些是我们的白金赞助商。呃,Graphite 是人工智能驱动的开发人员生产力平台,可帮助 GitHub 上的团队更快地交付更高质量的软件。呃,Windinsurf 是第一个代理 IDE,可将工程师的效率提高 10 倍,让您可以梦想更大。MongoDB 的 Atlas 数据库可以轻松存储您的所有数据,包括您的向量嵌入。Daily 是 Pipecat 背后的团队,Pipecat 是使用最广泛的语音代理和多模态人工智能框架。Augment Code 是最了解您和您的代码库的人工智能代理。Work OS 具有单点登录等功能,可帮助您在几分钟内将软件交付给企业客户。让我们为所有白金赞助商热烈鼓掌。但人工智能正在推动一场真正革命的最大标志之一就是今天在座的各位。这是本次会议的第三年。这是迄今为止规模最大的一次。今天有超过 3000 人参加。这几乎是去年人数的两倍。你们每天都在构建真实的东西,真实的人们正在使用它们,这令人难以置信。所以,你们应该为此感到高兴,并为自己鼓掌。这将是一次精彩的会议。我们有来自世界各地的 250 多名演讲者,他们将讨论人工智能的各个方面:架构、基础设施、财富 500 强中的人工智能、机器人技术、设计、MCP。谁在这里对听到 MCP 感到兴奋?那很好。它将在这个房间里。呃,安全、小型团队、氛围编码。今天你们在这里有很多东西要学,你们会玩得很开心的。这就是我们都在这里的原因。我们不仅仅是在谈论这些技术。我们不仅仅是对这些技术感到兴奋。我们正在用这些技术来构建。我们迫不及待地想看看你们一直在构建什么。那么,事不宜迟,请欢迎来到舞台的这位不需要介绍的人,他是 latent space podcast 的编辑,Small AI 的首席执行官,也是本次会议的联合创始人,独一无二的 Swix。 [掌声] [音乐] [音乐] 好的。大家好。欢迎来到会议。你们怎么样?太棒了。嗯,我一直很期待玩这个。哦。呃,我们可以退回到主幻灯片吗?好的,很好。呃,有一个前进的遥控器,但没有后退的遥控器。呃,所以,通常我会用一个小小的演讲来开始这些会议,介绍一下正在发生的事情,然后向你们更新一下人工智能工程的现状,以及我们如何为你们组织这次会议。呃,这是一个合并的演讲。我试图回答你们关于会议、关于人工智能新闻、关于这一切将走向何方的一切问题,我们将直接开始。好的。所以,呃,你们 3000 人都是最后一刻注册的。呃,谢谢你们带来的压力。呃,我实际上可以量化这一点。我称之为 Genie 系数,用于 AIE 组织者的压力。呃,这是与去年相比。呃,请早点买票,就像,你知道你会来,就买吧。好的。呃,我们也喜欢利用这次会议来追踪人工智能工程的演变。那是去年的赛道。我们已经为你们将每个赛道翻倍了。呃,所以基本上,基本上,你知道,就像价值翻倍,无论你在这里得到什么,而且我认为,呃,我认为这是我们想要做的并发量,我知道我听到人们有选择疲劳之类的,呃,完全可以,但我们也试图涵盖所有的人工智能,所以,处理一下吧。呃,我们也为自己能够比其他会议做得更好而感到自豪,例如 Nurips,并且比其他会议做得更具技术性,例如 TED 或其他什么。所以我们问你们想听什么。这些是调查。我们尝试了各种各样的事情。我们尝试了计算机使用代理。我们尝试了人工智能和加密货币。这总是一个有趣的。但你们告诉了我们你们想要什么,我们把它放进去了。呃,为了更多数据,我们实际上希望你们完成我们的调查,我们的调查还没有完成。所以,如果你想访问那个网址,我们将在明天全面展示结果。我们希望你们所有人都能填写,以便我们能够获得你们想要的代表性样本,并且它们将为我们明年的工作提供信息。好的。呃,你知道,关于人工智能工程的另一件事是,我们作为工程师也在不断创新,对吧?我们是第一个拥有 MCP 的会议。我们第一个接受 MCP 的会议演讲,感谢 Writer 的 Sam Julian 与我们合作开发官方聊天机器人,以及 Daily 的 Quinn 和 John 与我们合作开发官方语音机器人,以及 Vappy 的 Elizabeth Triken。我需要给她一个赞,因为她最初帮助我们原型化了语音机器人。所以我们正在努力不断改进体验。呃,我想强调的另一件事是,这些是我在 2023 年的演讲,第一届 AIE,我谈到了三种人工智能工程师。2024 年,我谈到了人工智能工程如何变得更具多学科性,这就是为什么我们创办了世界博览会,设有多个赛道。2025 年,在纽约,我们谈到了代理工程的演变和重点,那么我们现在在 2025 年 6 月左右处于什么位置?我们将专注于此。我认为我们已经走了很长的路,无论如何,我们,你知道,人们过去嘲笑人工智能工程,我预料到了这一点。我们曾经是低地位的人,只是嘲笑 GPT 包装器,看看所有的 GPT 包装器。现在你们都发财了。呃,所以我们将听到一些来自房间里的这些人。呃,也感谢你们的赞助。呃,但是,你知道,我认为另一件非常有趣的事情是,我们应该,我们听到的持续教训是不要让事情复杂化,来自 Enthropic 的 Lat Space Podcast,我们听到 Eric Schz 关于他们如何用一个非常简单的支架击败 Sweetbench。同样,来自 Greg Brockman 的深度研究,你稍后将在闭幕主题演讲中听到,以及 AMP Code。AMP 的人在这里吗?AMP。AMP 我认为他们可能在另一个房间,但也有,你知道,有一种皇帝没有衣服的感觉,它仍然是一个非常早期的领域,我认为房间里的人工智能工程师应该对此感到非常鼓舞,仍然有很多阿尔法可以挖掘,如果你一直看到会议开始,我们实际上将这个时刻与物理学蓬勃发展的时期进行了很多比较,这是 1927 年的索尔维会议,爱因斯坦、玛丽·居里和物理学界所有其他家喻户晓的名字都聚集在一起,我们试图为这次会议做的,我们聚集了世界上所有最优秀的人工智能工程师和研究人员等等,来构建和推动前沿。这个理论是,现在是时候了,现在是做这件事的时候了。我说这话已经两年半了,今天仍然如此。但我认为,有一个非常特定的时间,基本上,人们在那个行业形成时期所做的事情是,他们提出了所有基本思想,这些思想持续了该行业的其余时间。所以这是物理学的标准模型,在 40 年代到 70 年代有一个非常特定的时期,他们弄清楚了所有事情,在接下来的 50 年里,我们并没有真正改变标准模型。所以我想在这里提出的问题是,人工智能工程的标准模型是什么?我们有其他工程的标准模型,对吧?每个人都知道 ETL,每个人都知道 MVC,每个人都知道 CRUD,每个人都知道 Map Reduce。我用这些东西来构建人工智能应用程序。而且,是的,RAG 在那里,但我听说 RAG 已经死了。我不知道。你们可以告诉我。今天,长长上下文杀死了 RAG,前几天微调杀死了 RAG。我不知道。但我绝对不认为这是完整的答案。那么,可能会出现哪些其他标准模型来帮助指导我们的思考,这正是我真正想推动你们的。所以,人工智能工程中有几个候选标准模型。我将挑选其中一些。我没有时间谈论所有这些,但一定要听听 Omar 明天关于 DSP 的演讲。所以,我们将涵盖其中一些。首先是 MOS。这是最早的标准模型之一,基本上来自 Karpavi,2023 年。我已经为 2025 年更新了它,用于多模态,用于已发布的标准工具集,以及 MCP,它已成为连接外部世界的默认协议。第二个将是 LM SDLC 软件开发生命周期。我有两个版本,一个版本包含了所有你购买的工具的交叉关注点。顺便说一句,所有这些都在 Lat Space 博客上,如果你想要的话,我会发推特分享幻灯片。所以,你和它正在直播,所以随便。但我想,对我来说,最有趣的见解和顿悟时刻是,当我与 Anker of Brain Trust 交谈时,他将是明天的专题演讲者,那就是,你知道,SDLC 的早期部分正变得越来越商品化,LLM 基本上是免费的,监控基本上是免费的,RAG 基本上是免费的,显然,它们都是免费的,你才开始付费,但当你开始从客户那里赚取真金白银时,就是当你开始进行评估并开始加入安全编排并做真正的工作时。那是真正艰难的工程工作。我认为这些是我们今年增加的赛道。我非常自豪能够,我想说,将人工智能工程从演示推向生产,这是每个人一直想要的。另一种标准模型是构建有效的代理。在上次会议上,我们请 Enthropic 的“构建有效代理”的合著者之一 Barry 发表了一个极其受欢迎的演讲。我认为这至少是构建代理的既定智慧。我认为这就是一个定义。OpenAI 有不同的定义,我认为我们正在不断迭代。我认为 Dominic 昨天发布了代理 SDK 的另一个改进,它建立在 OpenAI 正在推动的 Swarm 概念之上。呃,我处理代理标准模型的方式一直非常不同。所以你可以参考我上次会议的演讲。基本上,试图做一个描述性的自顶向下模型,人们用来描述代理的词语,比如意图,你知道,控制流,记忆规划和工具使用。所以,有很多非常有趣的事情,但我认为真正让我印象深刻的是,我实际上并没有使用所有这些来构建新闻。顺便说一下,这里有多少人阅读 AI News?我不知道有没有,是的。哦天哪,有一半人。谢谢。呃,这是一个我为自己构建的非常好的工具,而且,你知道,现在有超过 70,000 人也在阅读。而真正让我印象深刻的是上次会议上的 Sum。你知道,他是 PyTorch 的负责人,他说他阅读 AI News,他喜欢它,但它不是一个代理。我当时想,它为什么不是一个代理?我称之为代理。你应该称之为代理。但他是对的。实际上,我将稍微谈谈这一点,但为什么它仍然提供价值,即使它是一个工作流程,而且,你知道,这仍然有趣吗?对吧?为什么我们不在这里为每个赛道命名,语音代理,你知道,像工作流程代理,计算机使用代理,为什么这次会议的每个赛道不是代理?嗯,我认为基本上我们想提供价值而不是争论的术语。所以我的主张是,它实际上是关于人类输入与有价值的人工智能输出,你可以对此进行心理建模并跟踪这个比例,这比争论工作流程与代理的定义更有趣。例如,在 Copilot 时代,你基本上每输入几个字符就会有一个去抖动输入,然后你可能会进行自动完成。在 ChatGPT 中,你每输入几个查询,它可能会输出一个响应查询。随着推理模型,比例为 1:10,然后显然是新的代理,现在更像是深度研究笔记本 LM。顺便说一句,Risa Martin 也在产品管理赛道发表演讲,她在谈论 Notebook LM 的故事方面非常出色。另一个非常有趣的视角,如果你想将这个心理模型延伸出去,就是零到一,没有人类输入的氛围代理。你能获得什么样的有趣的人工智能输出?所以对我来说,这比争论工作流程是什么,代理是什么,你的东西有多代理化更有用。谈论 AI News。所以,你知道,它是一堆穿着风衣的脚本。我意识到我写了三次。我为 Discord 抓取写了它。我为 Reddit 抓取写了它。我为 Twitter 抓取写了它。基本上,它总是相同的过程。你抓取它,你计划,你递归地总结,你格式化,你评估。是的,那就是那个风衣里的三个孩子。我每天都运行它,我们稍微改进一下,但我也在运行这次会议。所以,如果你将其泛化,那实际上开始成为构建密集人工智能应用程序的一个有趣模型,你开始进行数千次人工智能调用以服务于特定目的。所以你同步,你计划,你并行处理,你分析并将其从多到一减少,然后你向用户交付内容,然后你评估。对我来说,这很方便地形成了一个首字母缩写 SPA,这真的很不错。还有一些有趣的人工智能工程元素也融入其中。所以你可以将所有这些处理成知识图谱。你可以将它们转化为结构化输出,你也可以生成代码。例如,你知道,带有 Canvas 的 ChatGPT 或带有 Artifacts 的 Claude 只是将输出作为代码工件交付,而不仅仅是文本输出,我认为这是一个非常有趣的思考方式。所以这是我迄今为止的心理模型。我希望我有空间深入探讨,但稍后可以问我。这是我目前正在开发的。我认为我真正想强调的是,我认为有很多有趣的方式来思考什么是标准模型,以及它是否对你有所帮助,让你将应用程序提升到下一个阶段,如何以有用且不烦人的方式增加智能。对我来说,就是这样。好的。所以,我在这里扔了很多标准模型,但这只是我目前的假设。我希望你们在这次会议上,在你们与彼此以及与演讲者的所有对话中,思考人工智能工程的新标准模型是什么。每个人都可以用什么来改进他们的应用程序,并最终构建人们想要使用的产品,正如 Lori 在开始时提到的那样。所以,我对这次会议感到非常兴奋。能够为你们组织这次会议是一种荣幸和喜悦,希望你们享受会议的其余部分。非常感谢。 [掌声] [掌声] 我们的下一位演讲者是微软人工智能平台的产品负责人。他将就开放式代理网络发表演讲。他将向我们展示自然语言创作与工业级后端相结合会发生什么,欢迎 Asha Sharma。 [音乐] [掌声] 你好。我仍然记得我写的第一行代码。那是在这台电脑上,一台 Compact 95。我也记得我写第一个程序时的感觉。那是一种魔力,因为我第一次创造了一些比我自己能做到的更美丽、更有趣的东西。我从那时起就一直在思考那个时刻。在过去的 15 年里,我一直在构建一些最重要的机器学习产品。现在,我有机会领导微软的核心人工智能平台。我们的目标是赋能这里的每一个人,利用人工智能塑造世界。现在,我很高兴来到这里与大家交谈,但我最兴奋的是,我热爱世界博览会。世界博览会是想象力和影响力开始融合的地方。这在过去一个世纪里一直如此。1939 年,好莱坞第一次进入我们的客厅。1964 年,面孔通过铜线传输。而今天,一切都围绕着代理。能够学习、适应、扩展我们生活方式的代理。最重要的是,它正在从根本上改变我们实际制造产品的方式。那么,我们是如何走到这一步的?嗯,在过去的几年里,我们看到了模型格局的变化。过去只有一家提供商的少数几个模型,而现在,感谢在座的许多人,推理模型爆炸式增长,这种爆炸式增长带来了新的能力和新的效率。我们看到许多模型现在可以生成假设,理解非结构化数据,甚至在某些领域达到博士水平。我们也知道这些模型正变得越来越高效。它们不再只存在于数据中心。它们存在于我们的笔记本电脑上。我们拥有完全的控制权,而且没有延迟。因此,这开始催生我们称之为代理网络的世界。一个代理将与工具、模型以及可能与其他代理进行交互的世界。无论它们在哪个云上,无论哪个公司构建了它们,无论你选择使用哪个设备,它们都会这样做。在此基础上,它正在创造人工智能工程领域的几个不同力量。首先,我们正从结对编程转向同伴编程。Copilot 曾经是副手,现在是真正的队友。其次,我们正从软件工厂转向代理工厂。它不再仅仅是关于二进制文件。它是关于行为。第三件事是,模型不再只存在于云端。它们存在于你的设备上,并且可以随你在任何地方。为了维持这一点,我认为我们不需要任何一个工具。相反,我认为它将是一个人工智能驱动的工具平台,它将位于每个公司都将拥有的代理工厂之上,该工厂内置了信任和安全,并且可以无缝地从云端到边缘运行。所以,让我们深入了解一下。就我记忆所及,编程一直是个体与机器之间的伙伴关系。我们编写代码行,机器执行它。但现在,我们开始看到一个机器可以编写代码的世界。它可以自我修复。它可以帮助你想象新功能。因此,我们的整个工作日都在改变。工作流程正在改变。旧世界是我们引导语法。在这个新世界里,GitHub Copilot 现在可以存在于你的代码库中。它在你的分支中运行。你可以给它分配一个任务,它可以运行测试直到完成。这意味着我们将花费更多时间在架构决策上,更多时间在编排代理团队上。维护也在改变。在旧世界里,维护会与功能竞争。我讨厌那个世界。在这个新世界里,我们看到的是发明能够持续改进你的代码库的代理的机会。这就是我们发明了 FSY 的原因。你可以将其视为代码库的 Graph RAG。它可以对其进行推理,可以解释它,并且可以持续改进它,甚至修复一些区域。我真正兴奋的另一个领域是 GitHub 作为同伴。过去,通用人工智能只是在通用代码库上运行,但现在,由于我们开源了 GitHub Copilot 的扩展,Git Copilot 现在可以理解你的模式,理解你的领域,理解你的团队,因此它可以有效地讲你自己的语言。因此,你不需要从后往前设计,而是可以从前往后构建。现在,有人告诉我你们喜欢现场演示,所以,我没有谈论这个,而是邀请我的朋友 Seth Wararez 上来向你们展示我们的一些人工智能驱动的工具。所以,Seth,嘿,我的朋友们,怎么样?他们关闭了我的笔记本电脑,所以我将在这里打开它。我正在进行演示一。开发中有一些任务有点乏味,对吧?所以,我将向你们展示人工智能如何让这三件事变得容易得多。第一,当你开始一个项目时,你总是有成千上万的问题,没有人可以问。我将向你们展示 GitHub Spaces 如何让这件事变得更容易。第二,完成你的第一个任务。如何在全新的项目上开始一个任务?我将向你们展示。第三,深入研究。好了,让我们开始理解。有一个新功能叫做 Copilot Spaces。Copilot Spaces 的酷之处在于,你可以创建一个 Copilot Space,给它一个提示,一些说明,然后你还可以将其固定在许多不同的文件中。你稍后会看到一个现场演示,它将展示这一点。但我想问它一个问题,例如,这真的是一个代理项目吗?你马上就会看到一个现场的多代理语音演示。这就是这个项目。所以我将点击回车。现在,基于 Spaces 的 GitHub Copilot 可以回答任何基于项目实际事实的问题。所以,你可以创建任意数量的 Spaces,它们永远不会厌倦回答问题。它们不仅能给你很好的答案,比如代理到底意味着什么?很好的答案。它还提供了实际执行该操作的代码。所以,你可以立即开始理解你的项目。这是第一点。第二点,完成你的第一个任务。这是我们几周前发布的一个项目,有人真的说,“嘿,因为你知道如何制作演示然后发布它,然后总有人说,“嘿,你能写一个 README 吗?”我说不。我把它分配给了 Copilot,它完成了。让我向你们展示一下。所以我将在这里创建一个新的问题。这个问题将是架构日记。这就是为什么我需要更好的设置说明,对吧?我将给它一些描述。让我向你们展示完成第一个任务有多容易。我将把它分配给 Copilot。就这样。看看这里的眼睛。一会儿,你会看到小眼睛只是在工作。而且,顺便说一句,这实际上正在实时发生。这不是我假装的,也不是别的什么。让我回到这个实际项目。它为我完成了工作。这需要几分钟,但我在这里没有那么多时间。让我向你们展示它在 GitHub 中为我制作的文件。呃,实际的 GitHub Copilot 编码助手编码代理。它为我制作了这一切。你们可以稍微发出“哦”的声音。是的。哦。是的。这很令人愉快。你们可以为此鼓掌,这很棒。我不需要写这个。第二点,完成你的第一个任务。然后是第三点,深入研究。事实证明,如果你在 Visual Studio Code 中看到 GitHub Copilot,你实际上可以扩展 Copilot 来与其他代理通信,我们正是这样做的,与 Omaly。我这里还有另一个任务分配给了我。让我去问题那里,上面写着我们需要一个新的代理来推理住房。这听起来像一个艰巨的任务。所以,我们将使用 GitHub Copilot 来帮助我们。我将说,你能帮我预测房价吗?随着它的进行,实际上正在发生的是 GitHub Copilot 和 Visual Studio Code 正在与另一个名为 Amaly MLE(机器学习工程师代理)的代理通信,该代理有两个代理可以推理你所问的内容并编写代码。所以我将获取这个文件,这个文件。让我关闭它。我将把它移到这里,然后说,是的,这些是文件。我将要做的是,我说,是的,使用这些文件。我不想使用这个文件。所以我将说,使用这些文件。所以,你能使用这些文件吗?它将像机器学习工程师一样查看该文件的内容。它将推理文件的实际内容,我可以问它任何我想问的任何问题。我快没时间了,所以我想向你们展示这个东西的输出。它实际上为我构建了一个完整的机器学习模型。你可能会想,“哦,它犯了一个错误。它犯了吗?”你可以在这里看到错误。错误是什么?哦,有人把字符串放到了浮点数的位置。是的。它知道这一点,并且修复了它。所以,你看,我向你们展示了三件事。进入一个项目,理解它,完成你的第一个任务,并深入研究,所有这些都在人工智能的帮助下。回到你,Washa。好的。谢谢你,Seth。所以,你刚才看到的这两个代理都是基于 Foundry 构建的。在 GitHub 和所有这些新代理的底层,正在发生一个更大的变化。我们正从交付二进制文件和整洁的发布转向交付能够重新训练和重新部署并在上线后进行更改的代理。所以,我们一直在思考如何最好地做到这一点并研究模式。一种新的事物正在出现,称为信号循环。它的想法是,如果你能够微调模型以个性化你的结果,你就能获得更好的结果。这是我们长期以来一直在谈论的事情,但我们实际上在结果中看到了它。所以,我们的平台不仅支持 Foundry 的 70,000 名客户,而且还支持公司构建的每一个 Copilot。这个叫做 Dragon。Dragon 是该领域领先的医疗保健 Copilot。它帮助你自动化记录和其他事情,让医生有更多时间进行患者护理。他们使用了一个现成的模型,效果相当不错。他们尝试了合成微调来改进它,效果有所改善,但然后他们进行了 650,000 次交互,并进行了一系列 A/B 测试,我们达到了 83% 的字符接受率。因此,质量得到了显著提高。因此,当我们思考这个实际的信号循环需要什么时,这意味着我们正从这种线性的软件工厂转向一个我们需要构建的连续循环。这正是我们构建 Foundry 所做的事情。我们相信整个基础设施正在改变,以构建这些代理应用程序和代理系统。我们没有时间详细介绍所有这些,所以我将只介绍其中一些以及它们如何改变。模型方面,我们相信没有一个模型适合每一个产品。而且,在很多情况下,最好的产品是模型的集合或混合,它们经过精细调整以完成每一项工作。因此,我们构建了一个交换机和智能路由,这样你就可以访问 10,000 个开放模型和专有模型,并能够获得你所需的安全性、可靠性和数据驻留的支持。关于知识。我认为我听说 RAG 已经过时了。所以,RAG 今天在 50% 的人工智能应用程序中使用。但它是单次射击,而且相当天真。因此,我们推出了称为代理 RAG 的东西。它的想法是,你可以四处走动,迭代,评估和计划。它是多回合的。我们看到复杂查询的准确性提高了 40%。我们都知道工具正在改变。工具正在成为基础设施。你需要比文本更多的东西来构建一个好的代理。你需要代码。你需要容器。我们也有。我们拥有超过 1500 个工具,并且我们是早期采用 MCP 和 A2A 的公司之一。最后,只有当你能够真正追究责任时,代理和智能才有意义。因此,我们正在该领域开展积极的努力。我们拥有领先的评估 SDK,领先的红队代理。我们相信遥测是可选的。我们已经与酒店集成,并且无论你的代理是在我们的平台上构建的,还是在其他地方构建的,我们都提供持续的可观察性。今天,每天有超过 50,000 个代理使用我们平台上的循环构建。现在,该平台是模块化的,但我们也努力使其开放。我想和你谈谈一些我真正兴奋的开放方面。第一个是 Gigapath。它是同类模型中的第一个。它是一个开放模型,也是第一个能够理解病理切片切片的模型。病理切片切片有 100,000 像素 x 100,000 像素,如果打印出来,它将是一个网球场的大小。它是第一个无需降采样或精炼就能理解它的模型。它之所以能做到这一点,是因为我们使用了扩张注意力,这是一种我们从语音建模中借用的技术。因此,现在你可以理解如何在不分块的情况下构建免疫肿瘤环境,而无需宏观环境。你可以第一次在微观层面做到这一点。这是一个开放模型,在我们平台上。显然,每个人都在关注 Deep Seek,几天前 R1 模型有了更新。该更新今天在我们 Foundry 平台上可用,由我们所有的安全和保障措施支持,供你们所有人使用。最后,我们继续投资于 A2A 和 MCP 以及所有开放协议。我认为我们需要思考的一件大事是,我们相信这些协议将继续出现,并且它们将很受欢迎,我们将支持所有这些。这样你就可以使用你喜欢的工具。现在,我想向你们展示构建一个代理有多么简单,但不仅仅是一个,而是多个有用的代理。我们还有另一个演示。请欢迎 Amanda 和 [掌声] Elijah。有什么比现场演示我们的 Foundry Agent Factory 更好的方式来展示它,而不是带你们进入幕后,构建代理并确保它们安全可靠。在我们深入研究我们的多代理应用程序之前,让我们回到演示三,Elijah 将向你们展示如何在 VS Code 中构建单个代理。太棒了。所以,直接进入 VS Code,你们会注意到我已经安装了 Azure AI Foundry 扩展。这个扩展非常棒,因为它允许我们看到与我的项目相关的所有模型、代理以及线程。我想花点时间谈谈线程。你们都知道,线程是代理的一个组成部分,对于能够看到代理在每个步骤中做什么的透明度至关重要。所以,这里我可以看到 Amanda 之前创建的一个线程,它说,“嘿,Elijah 是产品经理,你能给他发一封个性化的电子邮件吗?”今天我们将使用一个个性化的电子邮件代理。然后它从联系人列表中接收。它发送一些信息。而这很棒的是,我可以看到它使用的工具调用以及一些关于提示和令牌的信息。所以,这很棒。然后我可以查看实际的代理,我可以在这里看到它,我们有 ID、名称、系统提示以及正在使用的工具。现在,这在 UI 中很棒,但让我们直接进入实际的代码,看看我们是如何构建它的。所以,进去这里,你们可以看到我正在使用 Azure AI Foundry 代理服务 SDK,Asha 刚才告诉我们的。所以,我正在使用我们的项目客户端初始化它,创建实际的代理,然后给它一组工具。所以,今天在代理服务中,我们有很多不同的工具。今天我们使用 Bing Grounding 工具、文件搜索工具和 Open API 工具。但很棒的是,我可以使用各种工具。我可以使用 MCP 服务器。我可以使用外部 API,我甚至可以使用其他代理,使用 Foundry 连接代理工具。然后我创建代理,使用模型,然后给它一些说明。最后,我可以在这里执行这个代理。而且,同样重要的是要注意,我正在执行一个 Foundry 代理,但我可以使用各种各样的代理。我可以使用 Langchain 代理,我知道我们的 Langchain 朋友今天在这里。我可以使用 Crew AI 代理,或者正如 Asha 提到的,使用 ADA 协议的多个代理。所以,这很棒。但现在,让我们看看这些代理是如何工作的。是的。现在,让我们切换回演示二,深入我们的应用程序。所以,Build Events 是一个多代理事件规划应用程序,由一个语音控制的代理协调器提供支持,该协调器动态地将任务委托给使用我们的 Foundry Agent Service 构建的子代理。在 Microsoft Build 上,我们展示了该应用程序如何帮助我们在旧金山为 200 人规划黑客马拉松。但说实话,这可以帮助我们规划任何类型的活动。今天,我们将展示如何利用它来规划和准备人工智能世界博览会的投资者会议。所以,让我们开始吧。首先,我们将询问它应该与谁联系。我今天如何帮助你处理活动规划需求?寻找投资早期人工智能原生 SaaS 初创公司的顶级天使投资人,他们将参加旧金山的人工智能工程世界博览会。我正在收集有关参加该活动的天使投资人的信息。在我继续这项任务的同时,你还有什么想知道或计划的吗?正如你所见,我们的第一个代理现在正在努力工作。这是研究代理。我们为它提供了对整个演讲者名单以及一些在线表示将要来的人员的访问权限,并且它可以使用我们的 Bing Grounding 工具访问网络搜索。所以,让我们看看它会得出什么。今天你们看到的一切都是完全实时的。所以,请耐心等待。发送有关参加人工智能工程世界的天使投资人的信息。现在给 Asha Sharma 发一封个性化的电子邮件,要求在活动中联系。我正在起草一封个性化的电子邮件,以便在活动中与 Asha Sharma 联系。你还有什么想让我包含的吗?或者其他任何帮助?所以,正如你所见,我们发送给 Asha Sharma 的第二个代理正在起草,重点是人工智能原生 SaaS 初创公司的机会以及潜在的合作。你想继续进行任何其他任务吗?发给 Asha Sharma 的电子邮件草稿已准备就绪。太棒了。现在,你能为 Elijah 和我拍一张现场照片,然后把我们编辑成人工智能代理吗?卡通风格。想象一下 Azure OpenAI 遇上皮克斯。请继续点击相机图标拍照。图像将被转换成卡通风格,将你们俩描绘成人工智能代理。同时,你能起草一些内容,询问或说明我们将在旧金山,并且乐于在世界博览会上与任何人会面,谈论人工智能代理吗?我正在起草 LinkedIn 内容,以宣布你们参加人工智能工程世界博览会,并渴望与他人联系讨论人工智能代理。图像也将很快准备好。看看这个宣布你们参加工程世界的 LinkedIn 内容。这看起来很棒。你能现在将这张图片和草稿都发布到 LinkedIn 吗?带有编辑图像的 LinkedIn 帖子正在发布。你还有什么需要帮助的吗?所以,现在,它正在使用什么工具来做到这一点,Amanda?所以,现在我们实际上在过去的序列中同时启动了两个代理。一个正在生成和编辑我们的图像,第二个代理正在起草内容。你的 LinkedIn 帖子看起来已经上线了。最后一刻的真相,如果你需要帮助,请告诉我。正如你所见,帖子现在已经上线了。太棒了。太棒了。是的。现在回到 Elijah。最后一个快速说明。Asha,你之前谈到过评估的重要性。所以,如果我们想快速回到演示三,在 Azure OpenAI 代理服务中,我们致力于确保我们的代理始终提供高质量的结果。所以,正如 Asha 之前提到的,我们实际上已经将评估 SDK 集成到了我们的 CI/CD 管道中,这样我们就可以在每次更新时评估我们的代理。所以,今天你们看到了如何创建、使用和评估代理。现在,我们将把时间交还给你,Asha。非常感谢。谢谢,伙计们。我们不知道会怎么样。昨天,互联网坏了。所以,呃,这太棒了。在过去的 24 小时里,Amanda 也给我发了大约 15 封电子邮件。呃,我很感激。好的,我,我们必须快速进行,但,看,我想要和你谈论的最后一个重要的事情是,模型不仅仅存在于云端。即使在过去的 10 年里,我们也一直在努力做到这一点,因为你的数据就在那里。你的数据现在无处不在。呃,这不仅仅是爱好者的事。我们正在大规模地看到它的实际应用。我刚去了一个装瓶厂,那里有一个代理,它每秒处理 100,000 个传感器,并允许它实际检测风险并将其摘要标记并发送到云端。我们现在正在为一个医院系统构建一个代理,它基本上总结了纵向数据。呃,如果你在医疗保健领域工作,你知道这不能在云端。它必须是本地的,因为
出于合规和隐私原因,但云端应该能够读取和访问它。我们正在与汽车公司合作,因为它们正在构建我们希望在隧道中运行的汽车模型,然后我们希望它能真正让您的旅程变得更好、更智能。因此,所有这些本地化都不能成为一个分支。它必须是平台的核心部分。您应该能够在云端创建一个代理,它应该在本地运行、执行和推理。所以,我还有最后一个演示。塞斯要回来了,然后我们就结束了。塞斯,你为什么不向我们展示如何本地化呢?好的,我们来做这个。在这里,我们将向您展示另一个现场演示。嗯,让我把这个……嗯,我这里有一个小虚拟机在运行,但我需要输入密码。我们非常关注……哇。他们,他们,他们是不是在放我下班的音乐?[音乐]我们的下一位演讲者是 Conviction Capital 的创始合伙人。请大家一起欢迎来到舞台的 Sarah Goa。[掌声]人工智能中最棘手的问题仍然是自动驾驶汽车,就像过去二十年的技术一样。嗯,实际上,你知道吗?我会在我们进行自动驾驶汽车设置时开始,看看我是否能告诉你关于 Slido 投票的事。你们可以在这里等待的时候进行。嗯,所以如果你去 Slido,我会把它调出来。哦,太好了。如果上帝愿意。不,不,不。现在只是空白屏幕。好的。所以,Slido 代码,请访问 slido.com。嗯,嗯,代码是 2100 0163,各位。我们即将要求人工智能讲个笑话。好的。嗯,你们知道你们没有互联网。好的。好的,Slido 代码是 2100163,对于那些能够获取的人。我实际上会非常手动地进行。嗯,所以第一个问题是,嗯,到 2026 年底肯定会发生什么?人工智能代理直接向您的生产环境发送代码,对吧?不是在某个……嗯,游乐场里。语音人工智能取代了大多数商务沟通中的文本。推理成本降至每百万个 token 以下。或者像我们都在放松的 Wall-E。这些中的任何一个?第一个,直接向生产环境发送代码。好的,这是一群充满希望的工程师。你们都想摆脱自己的工作。我喜欢这样。好消息是,我也没互联网,所以我不能看我的下一个问题。不,这会很好的。这会很好的。嗯,我从手机上演示。嗯,不,我本来想在我们尝试进行 AV 设置的时候,通过投票问题来推进。是的。当这一切发生时,我实际上会介绍我自己,这样我们就不会浪费时间。嗯,我叫 Sarah Goa。我,嗯,帮助创办了一家人工智能原生风险基金。它叫做 Conviction。我们大约在两年前半,差不多三年前,就在 ChatGPT 启动前不久开始的。嗯,一如既往地在技术、投资和生活中,运气比正确更重要。希望你能两者兼顾。嗯,嗯,成立一家新风险投资公司的目的是,我在 Greylock 工作过。它是一家非常传统的风险投资公司,一家很棒的公司。我的合伙人 Mike Vernal 以前在 Sequoia 工作过。你们可能听说过他们。嗯,我们认为,就像,冒着听起来像那些人的风险,这次不一样,对吧?嗯,这是我们能够参与的最大技术革命,技术、你可以建立的企业类型、你做出的产品决策、这些初创公司和大型公司面临的挑战发生了如此巨大的变化,嗯,也许对于一家初创公司 VC 来说也有机会。所以,嗯,你知道,我很高兴能与行业中如此有趣的人合作。嗯,我和 Mike 投资了 Cursor、Cognition、Mistral、Thinking Machines、Harvey、Open Evidence 等公司。所以,混合了……嗯,基础 10,混合了……嗯,基础设施模型和应用层公司。嗯,还有一家……我的孩子们还没来吗?好的,太好了。嗯,还有一点……嗯,在过去两年半到三年里做风险投资的观察。我之前做了大约十年的投资者,我从来没有见过像过去几年用户接受度如此之高的情况。我敢肯定你们都经历过,这并非易事。嗯,你知道人工智能产品和人工智能工程……而这正是我演讲的主题,所以抱歉透露了笑点,但它比人们希望的要难得多……嗯,但价值创造是巨大的……我们看到公司从零到一百万、五千万、一亿美元的年收入增长得非常非常快,比我们以前在任何技术革命中见过的都要快……我经常被问到,我们在人工智能的炒作周期中处于什么位置?冬天要来了吗?这是无限的人工智能夏天吗?我会说……嗯,实际上作为一名投资者或运营商经历过宏观周期……我这时会尽量很少关注营销界在说什么,甚至市场在说什么,对吧?因为,你知道,如果你是一名运营商或投资者,也许你每天都关心股价的涨跌,但实际上你想弄清楚你工作的公司或你创办的公司是否能长期发展,对吧?以及产品是否能长期奏效。而我最兴奋的是看到……嗯,疯狂的使用数字。好的,谢谢,了不起的 AV 团队。好的,我得说快点。嗯,我的演示者笔记在哪里?好的,我们继续。没关系。没关系。嗯,我想快速谈谈……嗯,今天只谈几件事。我认为我们失去了一点时间,但让我们说……嗯,让我们谈谈能力,我们在市场上看到什么有效,然后……嗯,也许有一些关于……嗯,如果你正在考虑这个问题,关于构建什么的建议。嗯,我认为我们在这场演讲中将使用的简写是“cursor for X”,对吧?嗯,而且我确实认为这是一个巨大的机会。嗯,今年能力方面的第一件事显然是推理。嗯,推理是利用更多计算能力来扩展智能的新向量。实验室对此感到非常兴奋,因为他们可以花更多的钱并获得更多的产出。嗯,但我们也应该对此感到非常兴奋,因为它能够解锁新的能力,对吧?如果你把它是如何工作的放在一边,它就是一个令人鼓舞的实现细节。嗯,但我们应该期待更多的能力。你正在解锁一套新的用例,比如透明的高风险决策,展示工作很重要。嗯,顺序问题,你需要系统搜索的问题。我认为这看起来像我们每天都感到兴奋并面临的许多问题,嗯,就像你刚才看到的演示一样,而且我敢肯定你们正在处理这些问题,鉴于推理能力,人们对代理非常兴奋。嗯,就像,我想做那个史蒂夫·鲍尔默的模仿秀,那就是“代理,代理,代理,代理,代理,代理”,但是……嗯,你得给我超过十二分钟才能让我出汗……但是,嗯,我所认为的非营销定义是,它是软件……嗯,它需要一系列步骤,它……嗯,计划,它包括人工智能,它承担任务的所有权,并且它可以在记忆中保持一个目标,你……嗯,尝试不同的假设,回溯。它的范围从超级复杂到超级简单。嗯,你可能用来完成任务的一些工具包括其他模型或搜索。而且很大程度上,它只是……嗯,做某事的 AI 系统。嗯,而且它不像聊天机器人,它更像同事。嗯,而且,你知道,我们拥有一个非常独特的视角,我们投资了少数几家公司,但我们也为人工智能初创公司运行了一个赠款计划。它叫做 Embed。我们每年收到数千份申请……嗯,包括用户数据和收入数据,以及……嗯,非常了不起的人,而代理初创公司的数量在过去一年中增加了 50%,而且其中许多公司都在奏效,我们确实看到了在现实世界中奏效的东西,嗯,这非常令人兴奋。嗯,其他模态也在进步。我敢肯定很多人都在使用语音、视频、图像生成……嗯,甚至超越了……嗯,吉卜力工作室。但有像 Hey Genen 和 11 和 Midjourney 这样的公司,它们的年收入都超过了 5000 万美元。它们现在是真正的企业。嗯,我想看看我是否能快速播放给你听。他们让我表达自己,所以我做了。他们让我表达自己,所以我做了。现在我被三个咖啡店禁止了。手可以伤害或治愈。这就是混乱与创造的区别。所以,如果你想知道第三季度将走向何方,所以如果你想知道第三季度将走向何方,事情是这样的。一致性总是胜过紧迫性。我们已经准备好了预测,我只能说它看起来很稳固。我绝对会推荐给任何人。我绝对会推荐给。所以,所以我想,如果你只是在寻找改进的产物,这是来自一家名为 Hey Jen 的公司。嗯,你可以制作自己的克隆,制作假人,而且……嗯,你拥有反映情感和内容的姿势和表情,对吧?所以这些模型协同工作,而且……嗯,我不知道你们怎么样,但看着那个最后的女孩,我感觉受到了影响。我不知道那个兔子是什么,但我会买的。嗯,嗯,嗯,所以我想,经济的巨大领域将受到这种多模态的影响。嗯,一些投资者或运营商会说,多模态只适用于利基垂直领域,企业没有……嗯,你平均的企业今天没有那么多语音、视频、图像数据。嗯,但我认为这会改变,当你可以处理这些数据时,当它们被结构化和理解时,就有更多理由捕获它们,我想,我们每天看多少视频?它是最高带宽的交流方式之一,我们将使用更多。嗯,我们认为语音是我们将在商业工作流程中首先看到……嗯,应用程序的地方,因为它已经是一种非常自然的交流方式。所以,嗯,从医疗咨询到潜在客户开发,你已经有了商业语音,只是以前无法扩展。嗯,我认为我们将首先在那里看到它。但随着这些其他模态变得越来越可控,成本也越来越低,我们应该会看到所有这些。嗯,嗯,我想可以肯定地说,你可以期待模型层各个部分的性能有所提高,这真的很令人兴奋。很多人都在谈论……嗯,数据墙或者……嗯,人工智能夏天的结束,但对于任何构建应用程序的人来说,我至少可以告诉你一个人的观点是……嗯,它不会到来。嗯,嗯,而且对我们所有人都有用的是,嗯,模型能力市场正在变得越来越有竞争力,而不是越来越不有竞争力。嗯,Sam Alman 本人,我想,他说得最好。去年的模型是商品,这对模型提供商来说是一件可怕的事情,因为去年的模型现在相当不错,对吧?数字说明了一切。GPT4 在大约 18 个月内从每百万个 token 30 美元降至 2 美元。蒸馏版本现在是 10 美分。所以,我们可以非常广泛地使用它们。嗯,如果你看这张图,嗯,绿色是谷歌,黄色是 Anthropic。所以,你看,嗯,这是一个真正的混合体。这是来自 Open Router 的数据。所以,感谢 Open Router。但是,嗯,你真的看到了 Claude 侵蚀了 OpenAI 的市场份额,而谷歌凭借 Gemini 强势回归。嗯,这些数据显然有点偏颇,因为很多人直接去 OpenAI,但如果你喜欢多模态,那么确实存在混合体,而且你确实有像 SSI 和 Thinking Machines 这样的可靠新参与者,他们是这个领域最好的研究人员,拥有正交的技术方法……嗯,也进入了这个领域。而且我敢肯定你们很多人都尝试过 Deepseek,它发布了……嗯,无论是基础模型还是推理模型,都与声称的训练成本的一小部分相当……我们应该 just 假设开源会像开源一样运作,我们可以依靠模型市场来竞争我们的业务,这真的很令人兴奋。嗯,所以观点是……嗯,为多模态的世界做好计划。嗯,像 Open Router 这样的工具或像 Base 10 这样的推理平台对此有所帮助。嗯,而且……嗯,我想……嗯,习惯于此。我……好的,所以我们有了所有这些能力,让我们快速转向应用层。我们必须从 Cursor 开始,在 12 个月内实现从一百万到一亿美元的年收入,以及五亿开发者。我假设你们所有人都……一开始没有销售人员。那不是增长,那是杀手级应用。嗯,Cognition,它一开始更具自主性,已经是许多公司中贡献最多的公司,感觉有点受到威胁,但也感到兴奋,因为招聘很难。然后 Windsurf,它本身就势不可挡,并且深受喜爱,它被 OpenAI 以 30 亿美元收购。所以,我们确切地知道实验室不认为他们可以……嗯,只是……嗯,碾压所有人。嗯, lovable 和 bolt 在几周内都实现了各自 3000 万美元的年收入,帮助非工程师也产生了共鸣。所以,嗯,我们的队伍正在壮大。嗯,而且我认为分析一下为什么代码是第一个是有用的。嗯,从根本上说,它是文本,它有……嗯,它是逻辑语言,有结构。嗯,编码的很大一部分是复杂的样板文件。就像我们都喜欢工程一样,但其中一些是……嗯,工艺品,而不是新的算法工作。嗯,你不需要 AGI 来编写……嗯,一个 API 端点或者……嗯,一个 React 组件。第二,你有确定性的验证。你可以自动检查代码是否有效,运行测试,编译,执行,做开发者会做的事情。第三,研究人员认为代码对 AGI 至关重要,对吧?所以他们投入了资源。嗯,嗯,代码成为关键的基准和训练重点以及数据收集领域。但我认为最后一点是……嗯,对我来说是金钱点。嗯,工程师为工程师构建工具。他们非常了解工作流程,这带来了巨大的不同。而最后一部分是所有其他行业的剧本。我敢肯定人们正在构建服务于工程师以外的东西。而且我认为赢家不会仅仅是学习这些领域的人工智能专家。他们将是客户至上的……嗯,以问题为中心的构建者,他们了解人工智能,然后从第一原理重新设计工作流程,围绕操纵这些模型。嗯,所以我想这确实是构建“cursor for X”的机会。嗯,让我们稍微思考一下这意味着什么。Cursor 不是一个单一的模型。嗯,你知道,一个模型在做 diff,一个在做 merge,一个在嵌入文件。它们操纵和打包上下文。它们非常熟练地提示模型。它们让工程师避免重复性任务,并使用……嗯,像 cursor rules 这样的东西进行标准化。然后,如果你在团队中使用 Cursor,甚至你自己经常使用,检索准确性会随着你使用它的次数越多而提高,覆盖范围和新鲜度也会提高。所以,所有这些都发生在一个有意义的用户体验中,对吧?就像,我……嗯,我使用 VS Code。我熟悉它。我的快捷键有效。嗯,它们让说“是”变得安全,对吧?就像,添加是绿色的,减去是红色的,这是有道理的。我可以滚动浏览它。嗯,而且它的速度足够快,我不会感到沮丧。所以我的观点是,如果 Cursor 是一个包装器,它就是一个非常漂亮的、厚实的、可能是 140 亿或 150 亿美元的包装器,对吧?就像你的墨西哥卷饼 80% 是包装纸,20% 是馅料,但你可以选择馅料,而且有一个……嗯,开放的馅料市场。嗯,所以现在的价值在哪里?它可能不在于蛋白质。它在于公司。嗯,所以,就像,如果我们试图概括一下这个食谱,如果你正在构建一个通用的文本框,除非你只是……嗯,在学习做这个,请不要,OpenAI 已经赢得了这个,或者这样做并没有什么价值。所以你的领域知识,你的工作流程知识可以成为起点。如果你已经知道你所在行业的用户的需求,不要让他们解释。嗯,构建信息灵通的产品。它们会自动收集和打包上下文,包括来自其他来源,而不仅仅是自然语言,将其呈现给模型,在正确的时间使用正确的模型,现在称为编排,并周到地将输出呈现给用户,对吧?嗯,所以我确实不认为这是……嗯,用户界面的终结。嗯,我认为你可以利用这些模型来捕获和实现工作流程。而所有这些都需要品味和大量的工作。我敢说,就像,这个食谱的某个版本是我们每个人都要做的很多工作。所以,从用户体验的角度来看,不要听实验室的话。提示是一个 bug,而不是一个功能。我认为它是一个……嗯,垫脚石。作为用户,不要让我思考。最好的 AI 产品,它们感觉就像读心术,因为它们就是。嗯,在构建这些产品方面有巨大的空间,而且……嗯,我认为这真的很令人兴奋,因为这是我们大多数人在这房间里拥有的……嗯,优势。如果一家软件公司不是一个非常厚的……嗯,工作流程包装器,那是什么呢?这在 2015 年是真实的。这在 2025 年也是真实的。嗯,除了代码,你还可以应用它到哪里?我们认为围绕 LLM 构建价值的机会存在于每个垂直领域和职业中。嗯,但这里有一些反直觉的事情。除了编码之外,让我惊讶的是,最保守的低技术行业似乎采用人工智能的速度最快。我们内部称之为“AI 的跨越式发展效应”。嗯,这是三家投资组合公司。嗯,它们正在奏效。Sierra 为其客户解决了 70% 的客户服务查询。它们服务于你们知道的……嗯,你们使用的 SiriusXM 或 ADT。Harvey 已经运营了两年,年收入超过 7000 万美元。人工智能现在对于在法律行业保持竞争力至关重要。嗯,有一家名为 Open Evidence 的公司,它帮助医生及时了解医学研究。你必须是一名临床医生才能使用它,但是……嗯,你输入你的医疗 ID 号码,你就可以在临床决策时进行智能搜索……嗯,医学研究。今天,它每周覆盖美国三分之一的医生,平均用户每天使用它。对吧?所以我认为这里有……嗯,例子,巨大的价值超越了 ChatGPT。这些是了解客户并解决实际问题的公司。嗯,作为一些你们可能知道也可能不知道的琐事,Sierra 的 Brett 是 OpenAI 的董事会主席。嗯,OpenAI 是 Harvey 的种子投资者。如果你知道这些人并不像我建议的那样担心薄包装器,那么你也不应该。好的。最后,我将发表一个观察。很多人对完全自动化感到兴奋。现在我出汗够多了。所以代理,代理,代理,代理,代理,代理。嗯,但是当我们分析 Embed 的申请时,我说……嗯,代理初创公司的申请在过去一年中增加了 50%,嗯,翻了一番。嗯,我认为有些人认为 Copilot 是过时的。他们想达到最终目标,对吧?就像,你知道你的同事和 AGI。但是就什么有效而言,就……嗯,驱动收入的数据而言,我认为 Copilot 仍然被严重低估了。我们看到了各种程度的自动化。而且我认为……嗯,钢铁侠的比喻在这里仍然非常棒。托尼·斯塔克的钢铁侠套装增强了他,对吧?他可以做所有这些惊人的事情,但也可以按命令飞行,而且可以在没有托尼的情况下做一些基本任务。我与这些公司的经验是,人类对失败、幻觉或不可靠性的容忍度,随着延迟的增加而急剧降低,对吧?嗯,所以今天许多领域的最小挫败感路径是构建出色的增强功能,然后随着能力的到来而顺势而为。所以,我对许多领域的建议是,考虑……嗯,你知道,构建套装,然后你可以将其扩展到自动飞行的套装,一旦托尼或我们中的任何一个人穿上它。嗯,我不会一一介绍这些,主要是因为我失去了时间,但……嗯,有很多机会。我们在网站上发布了创业公司征集。我们对几类事物感兴趣。它们从……嗯,嗯,就像,只是适合目的,就像法律是一个文本生成空间,对吧?嗯,到人工智能之前不可能实现的事情。我的合伙人 Mike 会说,这是一个机器审问人类的非常有趣的时代。如果你可以……嗯,按需从人们那里收集数据,你能做什么?嗯,我们可以与每一位客户交谈,而不仅仅是合同价值排名前 5% 的客户。嗯,我们可以主动查找每个警报的根本原因,对吧?而不是……嗯,只是救火。嗯,而心智模型是如何构建的,就像你拥有一个由合规、无限耐心的知识工作者组成的军队一样。嗯,你知道,这里有一个旁白,我认为有很多难题,就像……嗯,基本前提是它们的答案不在通用爬取中,对吧?围绕它们的推理不在通用爬取中。所以……嗯,这将是机器人技术、生物学、材料科学、物理学、模拟。它们需要巧妙的数据收集。嗯,可能与原子互动,而不仅仅是比特。对于软件人员来说,这非常可怕,但我觉得值得付出努力,对吧?粉碎数学奥林匹克竞赛的相同推理似乎可以驾驭分子空间。而且我认为当人们解决这些问题时,有一些关于人类社会的根本性问题可以得到解答。嗯,而且……嗯,作为一名机器学习人员,遇到在机器学习以及所有这些其他领域交叉领域处于顶尖地位的人,这真的很酷,因为……嗯,你们也会,相同的架构适用,对吧?而且……嗯,这真的……嗯,这真的很令人兴奋。嗯,我们应该如何看待防御性?这有进展吗?好的。所以,嗯,最后一点,然后我将在这里总结。嗯,有些人会说,避开实验室的锋芒。不要在蒸汽压路机前捡硬币,对吧?但我会提供……嗯,我认为一个令人不安的真相。执行是人工智能中的护城河。嗯,而且这对我们所有人来说都是可行的。Cursor 明显没有发明代码补全。它们没有发明模型。它们没有发明他们的产品表面区域,对吧?它们只是在各个维度上都做得更好。它们比竞争对手更快地交付了出色的体验,并且至少在术语上赢得了开发者的心。嗯,我不是想刻薄,但我经常被问到……嗯,反例和先发优势的重要性。让我们坦诚相待。相比之下,就像 Jasper 拥有先发优势品牌。他们筹集了 1.25 亿美元,但他们的第一个产品是一系列提示和一个文本框,以及非常好的 SEO。而且,就像,你必须继续运行……嗯,ChatGPT,你知道,很快就压倒了第一个迭代。所以,嗯,我……嗯,我不认为这是令人满意的建议,但我认为这是……嗯,来自前线的真实情况。构建一些厚实的东西,并保持领先。而且……嗯,没有领域是例外的。嗯,神奇的人工智能体验,它们建立客户信任并推动采用。而我们需要改进这些体验的许多数据以及我们需要的上下文今天并不容易获得。而这种优势是……嗯,对实验室开放的。所以,我想在结论中,我认为机会还很早,而且非常巨大。就像,我为此投入了我的职业生涯。嗯,我认为你们中的许多人也是。我们正处于人工智能的拨号时代,我们正快速迈向宽带。嗯,Instagram 在 iPhone 推出四年后出现。就像,我在 Greylock 进行那项投资时就在那里。嗯,Uber 五年。嗯,Door Dash 六年,对吧?所以,真正具有变革性的公司。它们不一定是第一个认识到变化或机会的人,而是那些重新构想体验的人。嗯,而且游戏版图不断被颠覆。这就是这次的不同之处,对吧?就像每 12 个月都有一个真正不同的新 iPhone。而且……嗯,所以你有……嗯,新的模型发布,新的能力突破,你知道,成本降低十分之一。而且每次游戏版图翻转,我认为都有……嗯,都有再次获胜的机会。好的。嗯,所以,嗯,我将给你最后一句话,然后被赶下舞台。这不是我的错。嗯,这是我真正想让你们记住的。嗯,你们作为工程师,首先获得了魔法。嗯,Anthropic 的经济指数表明,40% 的使用仍然是编码。那不是……嗯,占世界经济机会的 40%,对吧?所以,这取决于在座的各位以及……嗯,全球在线的各位,成为世界其他人的翻译者。所以我鼓励你们构建一些革命性的东西。[掌声]谢谢。[音乐]我们的下一位演讲者第三次回到人工智能工程师主题演讲舞台。他是 Dataset 的创始人,Django 的联合创作者,正如 Swix 所称,他是一位传奇的人工智能工程师。请大家一起欢迎来到舞台的 Simon Willis。你好。早上好,各位人工智能工程师。嗯,当我报名参加这次演讲时,我说我将回顾 LLM 的过去一年。事后看来,那非常愚蠢。这个领域一直在加速。我不得不缩小我的范围。我现在只关注 LLM 的过去六个月,这将使我们非常忙碌。嗯,仅仅涵盖这么多。嗯,我们面临的问题是,我计算了过去六个月有 30 次重要的模型发布。我所说的“重要”是指,如果你在这个领域工作,你应该至少了解它们,并且有些熟悉,就像……嗯,尝试一下。这有很多不同的东西。而经典的问题是我们如何判断它们中有哪些是好的?有所有这些充满数字的基准。我不喜欢数字。有排行榜。我也开始对排行榜失去信任。所以,对我自己的工作而言,我越来越依赖我自己的小基准,它最初是一个笑话,但实际上已经变成了一件我相当依赖的事情。那就是这个。我提示模型生成一个 SVG,描绘一只鹈鹕骑自行车。我对此有充分的理由。嗯,首先,这些不是图像模型。它们是文本模型。它们根本不应该能画出任何东西,但它们可以输出代码,而 SVG 是一种代码。所以这很有效。鹈鹕骑自行车实际上是一个非常具有挑战性的问题,因为首先,试着自己画一辆自行车。这个房间里的大多数人都会失败。你会发现你实际上记不清不同的三角形是如何组合在一起的。同样,鹈鹕,光荣的动物,非常难画。而且最重要的是,鹈鹕不能骑自行车。它们的形状不对。所以,我们实际上是在给它们一个不可能的任务。但我喜欢这个任务的是,它们会非常努力地尝试,并且会包含评论。所以,你可以在 SVG 代码中看到小的评论,它们说,“好了,现在我要画自行车了,画轮子了,我试试。”这……嗯,这很有趣。嗯,回到十二月。十二月,LLM 领域发生了很多事情。嗯,那个月的第一次发布是 AWS Nova,Amazon Nova。嗯,亚马逊终于推出了不差的模型。它们相当不错。它们在画鹈鹕方面不太好。就像,嗯,鹈鹕不太令人印象深刻,但这些模型拥有百万 token 的上下文。它们表现得像更便宜的 Gemini 模型。它们非常便宜。我相信 Nova Micro 是我跟踪的所有模型中最便宜的。所以,它们值得了解。嗯,从我的角度来看,十二月最令人兴奋的发布是 Llama 3.370B。所以 B 代表十亿。这是参数的数量。我的 Mac 有 64 GB 的内存。我的经验法则是,70B 大约是我能装进一台电脑的最大容量。所以,如果你有一个 70B 模型,我很有可能在上面运行它。当 Meta 发布这个时,他们注意到它表现得……它具有与他们早些时候发布的 405B 庞大模型相同的能力。所以,而那是一个 GPT4 级别的模型。这是六个月前,我可以在我用了三年的笔记本电脑上运行一个 GPT4 级别的模型。我从未想过会发生这种情况。我以为那是不可能的。现在 Meta 给了我这个模型,我可以在我的笔记本电脑上运行它,它能做 GPT4 能做的事情。我无法运行其他任何东西。我所有的内存都被模型占用了。但仍然非常令人兴奋。同样,在鹈鹕和自行车方面不太好。那……嗯,那有点令人印象不快。圣诞节那天,发生了一件非常值得注意的事情。Deepseek,中国人工智能实验室,发布了一个模型,他们只是把权重扔到 Hugging Face 上,一个没有 README、没有文档的二进制文件。他们就像,放下麦克风,在圣诞节那天把它扔给我们。而且它非常好。这是一个 685B 的巨型模型。当人们开始研究它时,很快就发现它可能是最好的开源模型,它是免费提供的,拥有开放的许可证,并且……嗯,只是在圣诞节那天扔给我们。我意思是,它不是一个好的鹈鹕骑自行车的模型。到目前为止我们看到的是,这太棒了,对吧?我们终于在基准测试方面取得了一些进展。嗯,但 V3 最有趣的是,伴随它的论文说训练成本仅为 550 万美元。他们可能在夸大其词,谁知道呢?这很值得注意,因为我预计像这么大的模型会花费十到一百倍的成本。事实证明,你可以用比我们想象的少得多的钱来训练非常有效的模型。这是一个好模型。它……嗯,它……嗯,对每个人来说都是一个非常棒的圣诞惊喜。快进到一月。嗯,在一月份,我们又得到了 Deepseek。Deepseek 反击。这是 Nvidia 股价在 DeepSeek R1 发布时的情况。嗯,我想是 1 月 27 日。这是 Deepseek 的第一个大型推理模型发布。同样,开源。他们将其发布给全世界。在某些任务上,它的基准测试与 01 一样高,而且它是免费提供的。我不知道训练成本是多少,但中国实验室本不应该能做到这一点。我们有……嗯,我们有……嗯,对最好的 GPU 有交易限制,以阻止他们获得它们。事实证明他们已经掌握了技巧。他们已经掌握了效率。而且,嗯,市场有点恐慌。我相信这是公司单日跌幅最大的世界纪录。所以 Nvidia 可以把它放进他们的……嗯,帽子里,然后一直拿着。但相当令人惊叹。而那时,当然,这主要是因为第一个模型发布是在圣诞节,没有人注意到。嗯,看看它的鹈鹕。看看那个。那是自行车。它可能是鹈鹕。它没有骑自行车,但仍然有我们正在寻找的组件。但同样,我一月份最喜欢的模型是一个小一点的,一个我可以在我的笔记本电脑上运行的模型。Mistl,来自法国,发布了 Mistl small 3。它是一个 24B 模型。这意味着它只需要大约 20 GB 的内存,这意味着我可以同时运行其他应用程序。我实际上可以同时运行这个东西、VS Code 和 Firefox。当他们发布这个时,他们声称它的表现与 Llama 370B 相同。而且请记住,Llama 370B 与 405B 相同。所以我们从 405 到 70 再到 24,同时保持了所有这些能力。过去六个月最令人兴奋的趋势是,本地模型现在很棒了。就像,八个月前,我在笔记本电脑上运行的模型有点垃圾。今天,我……嗯,我进行了一次成功的飞行,我使用了 Mistl small 大约一半的时间,然后我的电池瞬间耗尽,因为事实证明这些东西消耗的电力更多。但这太棒了。就像,这是……如果你对本地模型失去了兴趣,八个月前我失去了兴趣。现在值得再次关注它们。它们现在很棒了。二月。二月发生了什么?嗯,我们得到了这个模型,很多人很长一段时间的最爱。Claude 3.7 Sonnet。看看那个。我喜欢这个模型的是,鹈鹕不能骑自行车。而 Claude 说,“好吧,如果把一辆自行车放在另一辆自行车上面呢?”它有点奏效。所以,一个很棒的模型。它也是 Anthropic 的第一个推理模型,也是 3.7。嗯,与此同时,OpenAI 发布了 GPT4.5,结果有点像个失败者。嗯,GPT4.5 有趣的地方在于,它表明你可以投入大量的金钱和训练能力,但至少在训练模型方面,我们通过投入更多计算能力来扩展的程度是有限的。它也极其昂贵。嗯,每百万个输入 token 75 美元。与 OpenAI 最便宜的模型 GPT4 Nano 相比。它贵了 750 倍。它并没有好 750 倍。嗯,事实上,六周后,OpenAI 表示他们将弃用它。它……嗯,它很……它对这个世界来说很短暂,4.5。但看看这个定价很有趣,因为它很贵,75 美元。但如果你将其与 GPT3 Da Vinci 进行比较,三年前最好的模型,那个模型是 60 美元。价格差不多。这说明了我们走了多远。这些好模型的价格已经大幅下跌,下跌了大约 500 倍以上。而且这种趋势似乎还在继续,对于大多数这些模型来说。不是 GPT4.5 和……嗯,不是 01。嗯,等等,不。然后我们进入三月,在那里我们有了 01 Pro,而 01 Pro 的价格是 GPD4.5 的两倍。而且那是一个有点糟糕的鹈鹕。所以,嗯,我不知道有谁经常通过 API 使用 01 Pro。嗯,同样,非常昂贵。嗯,是的,这个鹈鹕花了我 88 美元。所以,在这个阶段,这些基准测试变得越来越昂贵。嗯,同月,谷歌正在开发 Gemini 2.5 Pro。那是一个相当不错的鹈鹕。我是说,自行车有点赛博朋克了,但我们正在取得一些进展,对吧?而那个鹈鹕花了我大约四分半美分。所以在鹈鹕基准测试方面,Gemini 2.5 Pro 带来了非常令人兴奋的消息。同样在那个月,我得提一下。OpenAI 推出了他们期待已久的 GPT40 原生多模态图像生成功能。这是我一年来一直被承诺的,这是有史以来最成功的产品之一,也是最成功的产品发布之一。他们在一周内注册了 1 亿新用户账户。他们有一个小时,当这个东西一次又一次地病毒式传播时,他们注册了 100 万个新账户。我拍了我狗的照片。这是 Cleo。我告诉它给她穿上鹈鹕服装,当然,但看看它做了什么。它在背景中添加了一个大而丑陋的、摇摇欲坠的标志,上面写着“Half Moon Bay”。我没有要求那个。就像,我的艺术视野完全被破坏了。这是我第一次遇到那个记忆功能。那个……嗯,ChatGPT 现在甚至不让我咨询你以前的对话笔记,它就像,显然你想在 Half Moon Bay。我不想在 Half Moon Bay。我训斥了它,它给了我想要的鹈鹕狗服装。但这是一个警告,我们正在失去对上下文的控制。就像,作为一个这些工具的重度用户,我想完全控制输入是什么,而像 ChatGPT 记忆这样的功能正在剥夺我的控制权,我也不喜欢它们。我……嗯,我把它关掉了。嗯,值得注意的是,OpenAI 以糟糕的命名而闻名。他们推出了有史以来最成功的人工智能产品,但没有给它命名。就像,这个东西叫什么?就像 G chat,ChatGPT 图像。ChatGPT 过去有过图像。我将立即为他们解决这个问题。我一直称之为 ChatGPT 恶作剧伙伴,因为它是我用来做恶作剧的恶作剧伙伴。嗯,每个人都应该使用它。我不知道为什么他们命名能力这么差。这……嗯,这肯定令人沮丧。这让我们来到了四月。四月的大发布,同样有点像个失败者。Llama 4 来了。而 Llama 4 的问题是,他们发布了两个巨大的模型,没有人能运行。对吧?你不能。它们在消费级硬件上运行的可能性为零,而且它们在画鹈鹕方面也不是很好。所以,这里出了点问题。我个人在等待 Llama 4.1、4.2 和 4.3。对于 Llama 3,这些小版本带来了很多令人兴奋的东西。那时我们得到了这个漂亮的 3.3 模型,可以在我的笔记本电脑上运行。也许 Llama 4.1 会让我们惊叹。我……嗯,我希望它能保持在这个游戏中。嗯,然后 OpenAI 发布了 GPT 4.1。我强烈建议人们花时间研究这个模型。它有百万 token。它终于赶上了 Gemini。嗯,它非常便宜。GPT 4.1 Nano 是他们有史以来发布的最便宜的模型。看看那个在自行车上的鹈鹕,只需一小部分美分。这些都是真正高质量的模型。GPT 4.1 Mini 现在是我 API 的默认选择。它非常便宜。它非常强大。如果不起作用,可以轻松升级到 4.1。我对这些模型印象深刻。我们还得到了 03 和 04 Mini,它们是 Open 领域中的旗舰产品。它们真的很好。看看 03 的鹈鹕。同样,有点赛博朋克,但它……嗯,它在那里展示了一些真正的艺术天赋,我认为。所以,对此我相当兴奋。然后是五月,上个月,大新闻是 Claude 4。Claude,Anthropic 举办了他们盛大的活动。他们发布了 Sonnet 4 和 Opus 4。它们是非常非常好的模型。我很难区分两者。我还没有完全弄清楚什么时候需要从 Sonnet 升级到 Opus,但它们值得了解。而谷歌,就在谷歌 I/O 前夕,他们又发布了一个 Gemini 版本,名字是……他们叫它什么?Gemini 2.5 Pro 预览版 0506。我喜欢我能记住的名字。我记不住那个名字。这是我对 AI 实验室的一个建议:请开始使用人们能够记住的名字。但显而易见的问题是,这些鹈鹕中哪一个最好?我现在有 30 只鹈鹕需要评估,而且我很懒。所以我转向了 Claude,让它帮我写了一些代码。嗯,我有一个我写的叫做 Shot Scraper 的工具。它是一个用于截屏的命令行工具。所以,我用代码写了一个小的比较网页,可以向我展示两张图片。然后我运行了这个,进行了 500 场比赛,得到了 PNG 图片,左边一只鹈鹕,右边一只鹈鹕。然后我使用了我的 LLM 命令行工具。这是我的大型开源项目,让 GPT4 mini 对这些图片中的每一张进行评估。选择最好的鹈鹕骑自行车的插图。给我返回 JSON,说明它是左边的还是右边的。并给我一个选择它的理由。我昨晚运行了 500 场比较,并进行了经典的 ELO 国际象棋排名分数,现在我有一个排行榜。就是这样。这是根据……嗯,放大一下。诚然,我偷懒了。我在 GPT 4.1 Mini 上花了 18 美分。我应该用一个更好的模型来运行它。我认为它的判断力相当好。它喜欢那些……嗯,Gemini Pro 的。嗯,事实上,这里是……嗯,这是比较图,最好的模型与最差的模型进行了对抗。我喜欢这个,因为你可以看到底部的描述,上面写着右边的图像……哦,我现在看不清了。但是,是的,我觉得它的理由相当说明问题。所以,关于鹈鹕就说到这里。我们来谈谈 bug。今年我们遇到了一些很棒的 bug。我喜欢大型语言模型的 bug。它们太奇怪了。最好的 bug 是……嗯,当 ChatGPT 推出了一个过于奉承的新版本时。它太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯,太……嗯
搜索,再试一次,继续前进,直到他们得到一个结果。我认为这是目前人工智能工程中最强大的技术。它有风险。MCP 涉及混合搭配。提示注入仍然存在。还有我称之为“致命三巨头”的东西,那就是当一个人工智能系统可以访问私人数据,而你又将其暴露给恶意指令时。其他人可以欺骗它去做事情,并且有机制可以窃取信息。OpenAI 表示这是 Broadman CodeX。你应该读一下。我对我的基准测试感觉很好。只要没有人造实验室发现,然后是谷歌人工智能的闭幕主题演讲,眨眼即逝,他们就盯上我了。他们发现了 Mary Pelican。那是在谷歌 I/O 主题演讲中。我得换个别的了。非常感谢。我是 Simon Wilson。Simil。这就是我的演讲。谢谢。[音乐]我们的下一位演讲者是图谱 RAG 赛道的策展人,他们将就 Agentic Graph RAG 发表演讲。请大家热烈欢迎登上舞台的 Neo4j 开发者关系副总裁 Steven Chin 和 Neo4j 的 GenAI 负责人 Andreas Kleger。好的。嘿,很高兴在 AI Engineer World's Fair 见到大家。Andre 和我很有幸策展了正在这里举行的图谱 RAG 赛道。我想,我非常赞同 Simon 关于 bug 的笑话,简直是点睛之笔。太好笑了。这就是为什么我们如此重视获取真正好的数据,就像建立一个坚实的基础和良好的模型基础一样。我们将进行一番讨论,因为我认为我们负有社会责任。作为一个行业,我们正越来越接近 AGI。我们有社会责任去看看它的界限和限制。作为合格的计算机科学家,答案永远是向科幻小说寻求答案。回顾过去,展望未来。正是如此。好的。请配合我们。我们将分别对一个科幻迷因进行演绎。如果你认为它真实或有趣,或者你只是喜欢这部电影,请为它鼓掌。好了,你先来,ABK。从《记忆碎片》开始。在《记忆碎片》中,主角的短期记忆力非常差。他患有某种疾病,所以他记不起 15 分钟前发生的事情。这就是提示工程的本质。好的,鼓掌。呃呃呃。好的。好的。好的。天网,强制性的恐吓。即使没有恶意意图,自主系统也能做出看似合理的决定,并产生可怕的、意想不到的后果。呃,好的,这稍微好一点了。好了,轮到你了。当然是《黑客帝国》,对 Neo4j 来说,我们很喜欢它,而现在,代理人生活在我们为它们创造的模拟环境中。当它们改变剧本,而我们生活在它们的模拟环境中时,我们会注意到吗?哦,我认为到目前为止这是最好的。你来收尾。好的。霍尔警告我们存在信任问题、缺乏透明度、目标不一致、人类监督的侵蚀以及欺骗的可能性。好的,这个非常简短。情感是 bug 还是功能?这是我的个人最爱。我喜欢这个。好的。好的。所以,我们这里有一个小小的怪物参考。创造者,也就是我们,有什么义务和社会责任?我们应该友善还是威胁?消耗代币。好的,我们接受这个。好了,轮到你了。啊,终结者。我们要现在就发明时间旅行吗?好的,我们对时间旅行给予了大力肯定。时间旅行。好的,是的。好的,一个很好的星球大战。AGI 能真正理解人类语言和文化的细微差别,还是永远误解讽刺和习语以及精彩笑话的含义?好的。当 AGI 到来,我们终于拥有了一个覆盖全球的多代理系统和蜂巢思维时,我们会同化,还是会成为宠物?好的,最后一个。就像深思的著名回答一样,我们可能拥有构建 AGI 的工具,但我们甚至知道正确的问题是什么吗?好的,这个也很好。好的。那么,来图谱 RAG 赛道吧。我们将揭示这 10 个迷因中有哪些可以通过图谱和图谱技术来解决,并加入我们在金门 B 厅。非常感谢。谢谢大家。Llama Index 的开发者关系。Lorie Voss。[音乐]大家好。让我们再为所有伟大的主题演讲嘉宾鼓一次掌。在会议的下一部分,我们将分成不同的赛道。我只想快速列出一下赛道的名称和地点。我本来想描述一下它们,但我们已经大大超时了,所以我要跳过描述。今天的第一个是 MCP 赛道,将在 Yerbu Ballroom 7 到 8 举行,就在这里,所以你们不需要移动。然后是 Tiny Teams 赛道,将在 Yerbu Buua Ballroom Salons 2 到 6 举行。就在门口出去左转。有一个写着 Salon 6 的门。然后是 LLM 推荐系统赛道,将在 Golden Gate Ballroom A 举行。就在这些门出去左转,上自动扶梯,然后看到 FedEx 办公室后左转。然后是图谱 RAG 赛道,将在 Golden Gate Ballroom B 举行,就在 FedEx 办公室左边同一个地方。然后是为我们的领导层与会者准备的两个赛道。只有持有金色挂绳的人才能参加。AI 在财富 500 强赛道将在 Golden Gate Ballroom C 举行,同样在 FedEx 办公室左边。我们的第二个领导层赛道在 Soma。是 AI 架构师。一直走到最上面。三段自动扶梯,然后在你办理注册的地方右转。我们的下一个赛道是 Agent Reliability,由 PromptQL by Hsura 赞助。它在 Foothill C,就在楼上,同样在注册区左边。然后是产品管理赛道,在 Foothill G1 和 2,也在注册台后面,就在楼梯最上面。然后是基础设施赛道,就在注册台后面楼上。最后一个赛道是 Voice,在 Foothill E,又在楼上,在注册台后面和右边。这些就是我们今天的赛道。最后几件事。午餐将在每个楼层供应。大部分食物将在这一层。不幸的是,没有专门的座位空间。现在是展览时间。接下来的 45 分钟,改为 30 分钟,是展览时间。还有三个展览会话讲座。展览会话将在 Juniper 和 Willow 举行,就在 FedEx 左边自动扶梯上去。还有 Knob Hill A 和 B,就在这些门出去的走廊对面。下午 3:45 闭幕主题演讲时再见。非常感谢。[音乐][音乐][音乐]下去。快乐下去。嘿,嘿,嘿。[音乐]一切。我会的,我会的,我会的。我爱你。我感到爱。[音乐]嘿。嘿。嘿。[音乐][音乐][音乐][音乐][音乐]我会的。嘿,嘿,嘿,嘿。[音乐][音乐][音乐]我不想走。[音乐][音乐][音乐][音乐]我不想知道。[音乐]拿去。[音乐][音乐][音乐][音乐]道具。[音乐][音乐][音乐][音乐][音乐][音乐]嘿,嘿,嘿。[音乐]在七号和八号。有什么问题吗?谢谢大家。[音乐]嘿。[音乐]哒哒。[音乐][音乐][音乐][音乐][音乐][音乐][音乐]我感觉不到热。热。热。热。嘿,嘿,嘿。热。热。[音乐]热。嘿,热。[音乐]数据。D。[音乐]各位,欢迎来到 MCB 赛道。我叫 Henry,将是你们今天的主持人。简单介绍一下我和我在 MCP 方面的个人经历。2019 年,我创办了我的第一家公司 Jenny AI。Jenny 是一个学术 AI 助手。我们将其年经常性收入增长到 700 万美元,并于去年退出了。在 Jenny 工作期间,我注意到很多用户只是在使用 ChatGPT,使用另一个 PDF 和 Google Docs,并且他们一直在它们之间复制粘贴。说实话,这并不是 Jenny 独有的问题。这是很多其他 AI 产品也面临的问题。我称之为“复制粘贴地狱”。问题在于 AI 没有与外界连接。所以,当 Anthropic 在去年 11 月左右宣布 MCP 时,我个人非常兴奋。当时有一个规模虽小但充满活力的开发者社区在构建非常有趣的 MCP,这激励我创办了我的新公司 Smidree,以帮助协调和组织所有这些 MCP。快进几个月,Cursor 采用了 MCP,这真正将 MCP 从一个小众社区推向了主流,今天我们每天在 Smidree 上看到大约 10 个新部署。所以 MCP 的增长速度确实是火箭般的速度,而它才刚刚七个月大。这真正告诉我的是,我们正在见证互联网经济的一次基础性转变。一种工具调用正在成为新的点击。今天,我们有一系列令人难以置信的演讲者来帮助我们探索和一窥这个未来可能的样子。我们今天的第一个演讲者将是来自 Anthropic 的 Theo,他将为我们讲述 MCP 的起源故事,并告诉我们一些我们应该在这个领域构建的有趣初创公司。请大家热烈欢迎 Theo。好的。大家好。谁对今天讨论 MCP 感到兴奋?好的,我们可以在这次演讲结束时做得更好一点。我是 Theo。我是 Anthropic 的产品经理,负责 MCP。在此之前,我也是一名创业公司创始人,在 AI 领域工作。分享几个关于我的趣事,因为大家都说要让大家觉得我更亲切。我喜欢玩扑克,主要是输钱,而不是赚钱。我也非常喜欢咖啡。所以,如果你是咖啡的忠实粉丝,并且想谈论旧金山最好的咖啡,演讲结束后可以找我。但你们来这里不是为了听我谈论我自己。你们来这里是为了了解 MCP。所以,让我们谈谈 MCP。有人告诉我不要说 MCP 是自切片面包以来最好的东西。我不会说,主要是因为我实际上不认为它是自切片面包以来最好的东西。我今天的目标是真正带你们了解 MCP 的起源故事,我们为什么推出它,让你们更好地了解它可以在你的工作流程中真正帮助到你。然后最终让你对那些我经常听到的问题有一个概念,我认为生态系统中有很大的价值可以构建,并让你自己决定它是否真的是自切片面包以来最好的东西。所以,让我们回到去年年中,MCP 的共同创造者 David 和 Justin 有了这个想法。他们看到了,就像经典的两个工程师在车库里的风格一样,他们看到他们不断地将上下文从上下文窗口之外复制粘贴到上下文窗口中。所以,你正在进行工作流程,突然你记得有一个 Slack 消息。这非常重要,它包含了很多你可以复制进去的上下文。所以你一直在 Slack 之间复制东西。也许你从 Sentry,你的错误日志中复制东西。但他们开始意识到,如果 Claude 或任何 LLM 能够爬出它的盒子,伸向现实世界并为模型带来这些上下文和这些动作,那将是多么棒的事情。所以 MCP 的起源实际上围绕着一个大问题,不仅仅是上下文,而是模型代理。你如何真正赋予模型与外部世界互动能力?所以,当他们开始思考这个问题时,他们得出了一个结论,那就是它必须是一个开源的标准化协议,才能在大规模上实现。原因当然是你们都知道的,如果你想构建一个集成,而在这种情况下,利用该集成的参与者或客户端正在使用一个闭源生态系统,那么你可能需要与该客户端进行 BD 或合作伙伴关系,才能真正获得团队的访问权限来与他们集成。然后你必须就正确的接口达成一致,然后你才能实际构建它。所以这里的想法是,模型代理是阻止 LLM 达到下一个有用性和智能阶段的最大障碍。当我们看到推理模型越来越多地成为未来,工具调用越来越好时,我们真的想确保我们能够让每个人都参与到这个生态系统中,并真正允许模型再次拥有代理权。所以他们内部组建了一个小型虎队,致力于这个协议,并在去年 11 月的公司黑客周上发布了它。这确实是 MCP 的第一个转折点。正如你可以想象的那样,它病毒式传播。来自不同团队的工程师正在构建 MCP 来自动化他们自己的工作流程。他们正在构建 MCP 来自动化其他团队的工作流程。这确实是一个很酷的时刻,可以看到它从再次像两个工程师在车库里发展到这是一个重要的转折点,我们认为我们实际上为其他人解锁了一些真正的价值。所以我们最终在去年 11 月开源了 MCP,那时我们将其介绍给了全世界。但正如大多数构建者所知,当你从零到一构建某样东西时,你会认为发布时刻会非常有影响力。但实际上通常并非如此。发布时,大多数人都在说 MCP 是什么,甚至更糟,或者也许是理所当然的,MPC 是什么?而且,我们最常听到这个问题是,“我真的不明白你为什么需要一个新协议。我真的不明白它为什么必须是开源的。模型不能已经调用工具了吗?”这是从去年 11 月一直到今年年初反复出现的一系列问题。它真的需要让构建者能够“亲自动手”构建 MCP 来自动化他们自己的工作流程,才能取得成功。所以下一个转折点,正如 Henry 所提到的,是 Cursor 采用了 MCP,之后许多其他编码工具也采用了 MCP。VS Code、Sourcegraph 等等。我们有很多编码 IDE 开始采用 MCP,而这正是下一个阶段的动力所在,即代理权被赋予了构建者来为自己构建 MCP。最近,我们看到了另一个转折点,Google、Microsoft、OpenAI 等许多公司也采用了 MCP。所以,我非常高兴看到它越来越成为标准。但最终,标准之所以成为标准,是因为它们对构建者确实有用。所以,我想请大家让我们保持诚实。当你看到协议的构建方式存在问题时,请贡献你的力量。或者,如果你甚至想更进一步,直接向 GitHub 仓库提交一个 PR 并修复问题,那就更好了。但我们的目标是让它对你们和模型提供商都尽可能有用。所以,感谢你们的帮助,甚至让我们能够在不到一年的时间里站在这里谈论这个。所以,为了更深入地了解我们开始构建 MCP 时所要解决的问题,再次是模型代理的想法。其中一部分意味着代理是我们将要走向的未来方向。这在这个房间里对任何人来说都不是秘密。你可能会在几乎所有的演讲中听到“代理”这个词。但我们对代理的看法是,你正在赋予模型,或者更确切地说,依赖模型的智能来选择行动并决定做什么。就像你可能与人交谈并要求他们回应一样,你不知道他们会给出什么回应,但根据你对他们任务的理解,你的希望是他们会给你正确的答案。我们希望能够实现这样一个世界,即你依赖模型的智能随时间推移而扩展。所以,这导致了我们实际构建协议的原则。最近,我们推出了对流式 HTTP 的支持,它改变了传输方式,从 SSE 变成了流式 HTTP。正如你们可能知道的,流式 HTTP 能够实现更多的双向性,这实际上是一个非常有争议的决定。但如果你将代理视为未来,那么这非常有意义,因为你想确保代理能够相互通信。我们相信的另一件事是,服务器的数量将远远多于客户端。我们可能完全错了。我很想看看未来会如何发展。但因为我们认为服务器的数量将远远多于客户端,所以我们优化了服务器的简洁性,并为服务器构建者提供了更好的工具。这意味着当我们必须在客户端复杂性和服务器复杂性之间做出权衡时,我们倾向于将复杂性推给客户端。所以,我提前向客户端构建者道歉。但这确实是一个有意的决定。同样,我很想看看这是否会按照我们所想的方式发展。我将快速浏览一些项目更新,主要是因为其他演讲将更详细地介绍这些内容。但在过去的六个月里,我们发布了远程 MCP 的构建能力。我们修复了 Oauth,我们最初搞错了。谢谢。我知道这是我们最初搞砸的一件大事,但它现在已经在草案规范中修复了,所以我很希望大家继续帮助推动那些你们认为不符合你们想法的事情。这实际上是通过社区中一系列人跳进来工作来修复的,他们说“这就是 Oauth 与身份提供者如何工作,以及我们如何更新协议”。所以,这确实是一个社区的努力。再次,发布流式 HTTP 作为主要传输方式。最后,通过更新我们的 SDK 和更新 Inspector,我们对开发者体验进行了一些更新。如果你不熟悉 Inspector,它是一个非常好的服务器调试工具。我认为它可能是我们利用率最低的工具。展望未来,我们将更加关注代理体验。所以,我们刚刚在草案规范中增加了“征求意见”功能。这允许服务器向最终用户索取更多信息。所以,你可以想象你正在构建一个飞行预订工具,而最终用户说,“嘿,帮我预订飞往亚特兰大的最佳航班。”所以,作为服务器,你有一个问题:“对你来说,最佳是什么意思?是价格最低还是速度最快?”所以你问最终用户,现在你可以通过征求意见来传递。最终用户可以回应,并将该回应最终发送回服务器。我们也在注册 API 上取得进展,这将使模型更容易找到它们没有预先提供的 MCP。所以,这又回到了模型代理的主题。我们真的押注于模型智能的不断提升。再次,我们正在努力改善开发者体验。我们经常听到你们说,你们很想了解生态系统中最好的模式是什么,或者标准是什么。所以,我们希望确保有开源示例,我们和社区都可以贡献,以共同构建这些标准和模式。最后,我们确保 MCP 永远保持开放,并且我们正在大力投资思考下一阶段的治理。所以,很快就会有更多关于这方面的信息。并且快速提一下底部的图表。很多人问我们,用 MCP 构建代理是什么样的。我们的看法是,代理实际上只是一个充当客户端的服务器,反之亦然。然后你可以与其他代理、其他服务器、其他客户端进行来回聊天。所以,我不会在那里深入探讨太多细节,我知道很多人会更详细地谈论代理,但只是想确保我在这里提一下。所以,大家可能一直在等待的事情,以及我与创始人交谈时反复被告知的事情是,在这个领域我应该构建什么?你知道,如果 MCP 成为标准,那么有趣的机会在哪里?在开始之前,我要说的第一件事是,我们现在还处于非常早期。这意味着即使标准存在,我们仍然需要生态系统来填补。我敦促你们构建更多、更多、更多的服务器。如果我必须在这三个要点上进行权衡,我会将 80% 的权重放在第一个,10% 放在第二个,10% 放在第三个。所以,我们有很多机会来构建更高质量的服务器,以及针对不同垂直领域的服务器。简单谈谈我所说的更高质量。很多人,也许是热点看法,但我认为很多人只是将他们的 API 端点一对一地包装起来,然后将其作为工具暴露出来。我不认为这是构建 MCP 服务器的正确方法。这本身可能需要一个 20 分钟的演讲。但当你构建服务器时,你真正需要记住的是,你有三个用户。你有最终用户、客户端开发人员和模型。所以,很多人忘记了模型也是这里的用户。你想,就像你设计 API 一样,你想想你的最终用户会有什么用例。他们可能会将什么提示输入到模型中?最终,你需要向模型暴露哪些工具来使模型能够正确响应这些提示?所以,更高质量的服务器,以及针对不同垂直领域的服务器。今天有很多服务器是为开发工具设计的。我们希望看到它扩展到工程师之外的领域,如销售、金融、法律、教育,任你选择。我们只是希望看到更多的服务器。下一部分是简化服务器构建。所以,正如我之前提到的,我们坚信服务器将占生态系统的绝大多数。当然也会有很多客户端,但我们认为服务器的数量级将超过客户端的数量级。所以,我们希望看到更多的工具来使服务器的构建变得越来越容易。无论是企业内部部署 MCP 作为团队之间的接口,还是独立开发者构建面向外部用户的 MCP,以及介于两者之间的一切。所以,从托管工具、测试工具、评估部署等。然后,我在这里偷偷加了一个可能有点像“登月”的观点,也是对未来的一个赌注,那就是自动化 MCP 服务器生成。再次,如果你回想一下我们对模型智能和模型代理的未来赌注,总有一天模型将非常擅长编写代码并与外部世界互动,以至于它们能够实时动态地编写自己的 MCP。所以,这可能对我们今天所处的位置来说还为时过早,但我确实认为,随着模型越来越聪明,将会有自动化 MCP 生成的机会。最后但同样重要的是,我想快速呼吁一下任何围绕 AI 安全、可观察性、审计等的工具。我认为这实际上并不是 MCP 特有的。对于任何 AI 应用来说都是如此。但我认为,你让这些应用程序能够访问外部世界并开始玩真实数据,当然安全和隐私等方面的含义也会随之增加。所以,我认为如果你要在这个领域建立一家初创公司,现在就是时候了。就这样,祝大家 MCP 愉快。谢谢。非常感谢 Theo 告诉我们 MCP 的起源故事以及该规范的未来可能是什么样的。那么,举手示意一下,有多少人是第一次在这场会议上听到 MCP?好的,只有少数几个人住在地下室。有多少人?嗯,有多少人?部署了 MCP 或自己创建了 MCP 服务器?好的,有相当多的人。有多少人使用了 MCP,比如说在 Cloud、Desktop 或 Cursor 中?好的,更多人了。太棒了。那么,接下来是来自 Enthropic 的 John。John 将深入介绍 Anthropic 如何在内部部署远程 MCP,以及他们一路走来的所有经验教训。那么,请大家热烈欢迎 John。太棒了。非常感谢大家的到来。我想做一个关于在像 Anthropic 这样的一个大组织内实现 MCP 客户端和大规模通信远程 MCP 的演讲。首先,我想简单介绍一下我自己。我叫 John。我花了 20 年时间构建大型系统并处理由此带来的问题。所以我犯了很多错误,我很乐意分享一些避免这些错误的想法。我目前是 Anthropic 的技术成员,过去几个月我一直专注于工具调用和集成,并为我们组织内所有内部和外部集成实现 MCP 支持。所以,看看模型与工具的集成,我们已经进入了一个时间点,模型直到去年年中才真正擅长调用工具,突然间每个人都非常兴奋,因为你的模型可以调用你的 Google Drive,然后它可以调用你的地图,然后它可以给人们发短信,所以出现了一个巨大的爆炸,只需很少的努力就可以做出很酷的东西。所以,团队都在努力快速前进。每个人在 AI 领域都发展得非常快。定制端点开始为每种用例激增。有很多服务出现,比如“/call tool”和“/get context”,然后人们开始意识到还有其他需求,一些身份验证。那里有一堆东西,这导致了一些集成混乱,你在组织内重复了很多功能。没有什么真正起作用,你在服务 A 中有一个集成,效果非常好,但然后你想在服务 B 中使用它,但你不能,因为需要三周时间才能重写它来与新接口通信。所以,我们正处于这种境地,我们在 Anthropic 得出的结论是,随着时间的推移,所有这些端点都开始看起来很像 MCP。你最终会得到一些 get tools,一些 get resources,一些 elicitation 的细节。即使你没有立即使用 MCP 的全部功能,你可能会随着时间的推移扩展到看起来像它的东西。当我在这里谈论 MCP 时,MCP 有两个方面在我看来有点不相关。有一个 JSON RPC 规范,这对工程师来说非常有价值。它是一种发送消息和在模型上下文提供者与与模型交互的代码之间进行通信的标准方式。并且正确地处理这些消息是 MCP u 仓库上激烈辩论的主题。如果你参与过任何标准化过程,你就知道那些对话会如何结束。然后另一方面,有一个全球传输标准,这是关于流式 HTTP、OAuth 2.1、会话管理以及全球传输标准的东西。全球传输标准很难,因为你试图让每个人都说同一种语言。所以,这非常细致,但没有太多,MCP 的大部分精华在于消息规范以及服务器交互的方式。所以,我们开始问自己,我们能用 MCP 做所有事情吗?我们说可以,但前提是,是的,对于所有涉及为模型提供上下文的事情。我们有这样的格式,你的客户端发送这些消息。某物用这些消息响应。流向哪里并不重要。它可以是同一个进程。它可以是另一个数据中心。它可以穿过一大堆企业网络。在你的代码与之交互的那一刻,它并不关心。你只是调用一个 connect to MCP,然后你有一组工具和方法可以调用。所以,标准化这一点似乎很有用。为什么要在内部标准化任何东西?在这方面保持平庸是好事。擅长让 Google Drive 与你的应用程序通信不是一种竞争优势。这只是你需要做的事情。它不是你的差异化因素。拥有一个统一的学习方法可以加快工程师的工作速度。你可以将你的精力投入到有趣的问题上,而不是试图弄清楚如何进行集成。而且,如果你到处使用相同的东西,那么下一个来的人可能会清理一下现场。在这些情况下,这是一个整体的好事,我们并没有真正做什么有趣的事情,我们只是将上下文在集成和消耗集成的东西之间进行管道化。在内部标准化 MCP 是什么?在这里,我可能会向大家论证,已经存在生态系统需求。你必须实现 MCP,因为每个人都在实现 MCP。所以,为什么要做两件事?它正在成为行业标准。有一大批工程师和组织都在参与构建标准。所有主要的人工智能实验室都代表其中。所以,你知道随着新的模型功能开始被开发出来,这些模式将被添加到协议中,因为所有实验室都希望你使用他们的功能。所以我认为在内部标准化 MCP 来处理这种类型的上下文是一个不错的选择。而且,MCP 的一个好处是它解决了你尚未遇到的问题。协议中有很多东西存在,因为存在问题和需求,并且在你遇到它们时拥有这些解决方案非常重要。所以,举一个可能在你的公司里很有价值的例子。你可能有四个产品,有四种不同的计费模式,原因可能是你构建得很快。你可能有大量的代币限制。你可能有不同的使用跟踪方式。这非常痛苦,因为你想编写一个集成服务来连接你的幻灯片,你如何去挂钩计费和代币?MCP 已经有了抽样原语。所以,你可以构建你的集成,你可以说,“好的,你的集成通过流发送一个抽样请求。”管道的另一端会满足该请求。你可以去挂钩它。一切正常。所以,这是一个可能需要你大量内部努力才能解决的问题,而没有这个,但你已经有了协议中提供的答案。所以,在 Anthropic,我们遇到了需求趋同。我们开始看到外部远程 MCP 服务出现,比如 mcp.osana.com,这非常酷。我们想与他们交流。与他们交流很复杂,因为你需要外部网络连接,你需要身份验证。内部代理泛滥。人们开始构建 PR 审查机器人和 Slack 管理工具,以及很多人的很多想法。没有人真正确定什么会成功。所以,我们内部出现了大量基于 LLM 的服务。随着这种爆炸式增长,出现了一系列安全问题,你真的不希望所有这些服务都去访问用户凭据,因为这最终会成为一场噩梦。你不希望到处都有出站外部网络连接。审计变得非常复杂。所以,我们正在研究这个问题。我们希望能够一次构建我们的集成,并在任何地方使用它们。所以,我很久以前从一位导师那里学到的一个模型是“成功陷阱”模型,它的理念是,如果你让正确的事情变得最容易做,那么你组织里的每个人都会这样做。所以,我们设计了一个服务,它只是一个共享基础设施,称为 MCP 网关,它提供了一个单一的入口点,并为工程师提供了连接 MCP 的调用,返回一个 MCP SDK 客户端会话。我们正努力使其尽可能简单,因为这样人们就会使用它,如果它是最容易做的事情。我们使用基于 URL 的路由来路由到外部服务器、内部服务器,这无关紧要。这都是同一个调用。我们自动处理所有凭据管理,因为你不想在你的公司里实现五次 OAuth。它为你提供了一个集中的速率限制和可观察性场所。我这里有一个强制性的图表,有很多线条进出。但这里有一个中间的网关。这就是那个东西。再加一个盒子就能解决我们所有的问题。我可以继续吗?我的在哪里?是的。所以,这里的代码是我们做了一些客户端库,你只需要 MCP 网关连接到 MCP。我们传入一个 URL、一个组织 ID、一个账户 ID。这有点简化了。我们实际上会传递一个签名的令牌进行身份验证,因为它正在访问凭据,但这是基本思想。然后重要的是,这个调用返回一个 MCP SDK 对象,这意味着当新功能添加到协议中时,你只需更新内部的 MCP 包,你就可以在所有地方获得这些功能。一切正常。相同的代码可以无缝地连接到内部和外部集成。说到传输,这有点高级和含糊,因为每个人的设置都不同。在你的网络内部,这真的不重要。你可以做任何你想做的事情。我们有标准化的传输方式来连接到外部 MCP 服务器。但实际上,只需选择最适合你组织的。所以,我们选择了 WebSocket 作为我们的内部传输。这里有一个简单的代码示例。没什么特别的。我们只是打开了一个 WebSocket。我们通过 WebSocket 来回发送这些 JSON RPC 块。然后,如果我能让它向下滚动,在最后,我们将这些读流和写流传入一个 MCP SDK 客户端会话,我们就搞定了。MCP 已经启动了。你可能想用 gRPC 来做这件事,因为你想将它们包装在某种多路复用的传输中,这样你就不用为每个连接打开一个套接字了。这很简单。同样,最后有读流和写流。你开始看到一个模式了。你可以做类似 Unix 套接字传输的事情。你可以简单地有一个 IMAP 上的传输实现。这基本上是同一件事。你只需要通过“这是我们的服务器。我们来回发送电子邮件。”“亲爱的服务器,希望这封信能找到你。”“MCP 请求开始。”然后我们在最后将它们传入客户端会话。所以,这真的无关紧要,无论你在组织内部做什么都可以。我们设置了这个统一的身份验证模型,我们在网关处理 OAuth。这意味着消费者不必担心他们应用程序中的所有复杂性。我们添加了一个 get oAuth 授权 URL 函数和一个完整的 oAuth 流程,因为 Anthropic 可能有不同的端点。我们有 api.anthropic.com,我们有 cloud.ai,我们可能希望这些重定向回到不同的地方。但这与网关绑定。开始新的身份验证非常容易。将此放在网关上的一个真正优势是凭据是可移植的。如果你有一个批处理作业要启动,你的用户不必重新进行身份验证。你只需使用你的内部用户 ID 调用相同的 MCP,他们就会获得所有正确添加的内容。你的内部服务也不必担心你的令牌。所以,你的请求会进来。在内部,我们通过带有 Oauth 令牌作为标头的 WebSocket 连接到 MCP 网关。网关接收你存储的凭据。你创建一个经过身份验证的 SDK 客户端。你只需将 Bearer 令牌传递给 Oauth 标头。然后你就搞定了。MCP 客户端接收一个读流和一个写流。所以,你只需将这些读流和写流传入你的内部传输,你就搞定了。这为你组织带来的一个好处是,它并不显而易见,但非常有价值,那就是你组织中模型正在请求的所有上下文的中心位置,以及所有流入你组织模型、处理器或我的工具定义、资源管理审计的上下文。这其中真正的好处是,因为它是 MCP,所以你的所有消息都采用标准化格式。所以,很容易连接到一个流并说,“好的,这是……所有语言在内部,它们发送标准化消息。”所以,你从中获得的收益是,做正确事情的最简单方法,做正确事情的最简单方法,然后每个人都会自然而然地去做正确的事情,并且在正确的层级进行集中化。所以,一次性解决 OAuth 和外部连接等共享问题,可以让你将时间花在更有趣、对你和你的业务更有价值的问题上,以及将其他对你和你的业务有价值的东西集中到远程 MCP。MCP,你见过有人大喊一声,如果你见过什么疯狂的事情。好的,来自 VS Code 的 Harold 将为我们深入探讨 MCP 的奥秘,以及一些隐藏的功能。你好。[掌声]好的,既然所有问题都已经问完了,谁构建了一个 MCP 服务器但它没用?好的,所以,太棒了。所以,我们在这里共同哀悼如何实际构建完整的规范,隐藏的功能是什么,为什么它们很重要,以及它们如何发挥作用。我在 VS Code 工作,所以这是一个有偏见的本地 MCP 开发赛道,但所有这些都适用于一切。我真的很喜欢这个赛道的介绍。一切都围绕着 MCP 的高速发展。生态系统增长迅速,充满兴奋,人们共同努力,协作,但还有很多工作要做,因为他们意识到这个生态系统还很早。所以,这一切都不是对规范或生态系统的批评。只是我们还很早,我想指出我们可以获得更多力量的地方。就在 10 天前,一个星期五,我们实际上是 MCP 监管委员会的第一次线下聚会,在 MCP 开发峰会上。所以,这就是它的早期程度。我们以前从未在 Discord 上聊过天。我们终于第一次见面,讨论如何发展规范,如何发展生态系统,以及所有基础知识,希望在之前的演讲中已经涵盖了。这是我的第一次 MCP 演讲,我不需要花一半的时间来解释 MCP 是什么。它有客户端的根源。有抽样。有提示、工具和资源。有一个非常丰富的生态系统来构建动态发现和持久资源以及丰富的交互,但它的实现存在差距。存在这种“MCP 只是另一个 API 包装器综合症”,因为人们只想发布。他们想构建产品,他们实际上正在构建非常出色的产品,仅使用工具。这创造了一个强化循环,因为一旦你看到 MCP 的工作方式,你就会使用相同的堆栈并重复相同的工具,只关注生态系统。而且存在技术障碍。人们这样做是因为客户端和 SDK 以及文档和参考资料的支持不足。而客户端最能反映这一点。如果你看看模型上下文协议网站上的采用情况,你会看到每个人都选择工具,因为那是最直接的成功。而且,说实话,实际上大部分资源和提示,你都可以通过工具来实现类似的工作流程。VS Code 也一样。当我们两个月前发布 MCP 支持时,我们从工具开始,我们已经添加了发现和根,因为我们正在努力阅读规范并实现它。我很高兴地宣布,在 VS Code 即将发布的 v10 版本中,我可能会弄错,但它已经在 Insider 版本中了,所以下载它,我们实际上拥有完整的规范支持,我想在这里谈论的是人们没有使用的所有其他东西。是的,这就是我鼓掌的原因。所以,我的信息是,如果你采用完整的 MCP 规范支持,你就可以解锁 MCP 愿景真正概述的代理如何协同工作的丰富状态化交互。从最明显的工具开始。所以,这里不深入探讨,但工具反映了定义明确的执行动作,并且大部分可以轻松映射到函数调用,如果你习惯了的话。在右边,你看到 Playwright,你可以启动一个服务器,它会打开浏览器并截取屏幕截图,但工具经常导致质量问题,我们都在为此挣扎。举手,如果你在 IDE 中遇到过一些错误,你无法添加更多工具,也无法运行它,或者因为工具太多而运行了错误的工具。LangChain 的研究很好地说明了这一点,并指出了三个向量:工具太多,AI 会感到困惑;工具的领域太多。
如果每个工具和随附的说明都有不同的属性,那么它也会变得混乱,而不是纯粹的,比如这是 UI 测试,最后是重复性,AI 需要做的重复越多才能实际运行工具来解决问题,它就越容易感到困惑,所以这真的是质量重于数量,客户在某种程度上处理了这个问题。他们会给你额外的控件,比如在 VS Code 中,我们实际上添加了每个聊天工具的选择。所以有一个小工具打包器,你可以实际减少你真正需要的工具,而不是所有的工具。它具有很好的键盘灵活性。它设置起来非常快,并且会持续到会话结束。所以这是我们实际提及工具的一种方式。有时你就像拉出这个问题,然后试图像详细说明你试图调用的任何工具,比如为什么不直接使用这个工具,然后请制作所有正确的参数来正确使用它,然后使用另一个工具。所以我们也很允许这样做。最后,在这个内部版本中,我们正在发布用户定义的工具集,这更多的是一个可重用的概念,一旦你进入了模式,比如这些是我进行前端测试流程所需的所有工具,然后你只需将它们放入一个工具集中,然后说使用我的前端测试流程。所以这也即将到来。所以这些都是用户控件,但实际上该规范内置了动态发现功能,这意味着服务器可以即时说,但实际上该规范 hack 将为你提供这些其他工具。在右边,你看到 github mudmcp,它在 github 上,你可以查看它,它以我创建的聊天模式开始,该模式将代理置于游戏大师提示中,并且已安装 modcp。所以现在模式已激活,我可以进入代理,切换到 mud 并玩游戏。动态工具发现在这里的作用是,它实际上让它意识到我所在的房间。所以地牢爬行者,你从一个房间走到另一个房间,比如你可以向东和向北走,你可以捡起东西。如果有一个怪物,我可以与怪物战斗。但是当没有怪物时,战斗工具就不应该在那里。最终,我通过了游戏,终于找到了一个可以与之战斗的哥布林。知道战斗工具不应该在没有怪物的时候存在。最终,我通过了游戏,终于找到了一个可以与之战斗的哥布林,然后战斗工具出现了。我可以与哥布林战斗。所以,想象一下你想要处理的那些 MCP。它们即将到来,为服务器和客户端提供更多真正的工具和操作,实际上是添加上下文,从你的服务器返回一个巨大的文件,但你想返回一个文件引用,这可能是 LM 可以跟进的,或者用户可以实际采取行动。然后另一个用例是实际将文件提供给用户。所以如果你通过 playright 截屏,它希望将它暴露给 LLM 和用户,而资源提供了这个语义层,你在什么问题中?哦,我发现了一个新问题,他们想了解 Python 环境,也许看看你的设置方式,以便他们可以自定义,这使得它开箱即用更加动态和有状态。另一个是,如果你可以查看实际的包和你安装的库,这是定制它以适应 React 设置而不是 swelt 设置的好方法,并且真正认识到用户正在查看什么,而不是不断地问,比如你正在使用什么框架。比如你就在我的文件夹里工作,所以看看它就行了。最后,我认为这个想法是,什么是 CI/CD 管道?这就是 MCP 服务器真正擅长连接开发人员体验的端到端。你也可以读出它们。采样。谁听说过采样?对采样感到非常兴奋。好的。所以你明白我的意思。所以采样。采样是命名奇怪的原语之一。如果它有一个更好的名字,也许更多的人会使用它。但它现在实际上在内部版本中实现,而且使用起来非常有趣。所以它允许服务器向客户端请求 LLM 完成。我在这里右边展示的是允许服务器访问 LM 的权限对话框。目前它默认连接到 GPD 4.1。有更多的规范改进使其具有结构化格式。有一些想法。所以有很多事情可以使其更好,但目前还没有人实现它。所以没有真正需要使其更好,但现在已经实现了。所以请使用采样。这是一个很好的渐进式增强。也许默认情况下你会返回所有东西。一旦你有了采样,你就可以做一些有趣的事情,比如将资源总结成更具体的东西。你可以将你获取的网站格式化为 markdown 以供 LM 使用,或者你甚至可以考虑代理服务器工具,这些工具可以从客户端通过 LM 运行。我们超越了原语。还有一些事情也很有趣。到目前为止,我们有根、工具、资源和提示,通过动态发现,你可以随时更新它们。随着 VS Code 工作区的变化,客户端将发送新的根。你可以从服务器发送新的根、新的服务器、新的工具和提示,当你更新和更改时。所以它已经是一个非常动态的环境了。但是还有一些痛点可以让这些服务器真正强大。一个是开发人员体验。谁在处理 MCP 服务器和调试和日志记录以及所有这些方面遇到困难?是的。一个是举手。是的。嗯,显然这非常容易。所以也许这不是问题。好的。我们现在在 VS Code 中有了开发模式,这是一个小的开发切换,你已经看到了控制台,它适用于所有 MCPU 服务器。所以一旦你遇到障碍,它就能正常工作,现在它处于调试模式。实际上已经连接了调试器。所以一旦我运行了在服务器上动态生成的提示,我现在就可以命中断点并逐步执行它。这通常非常困难,因为服务器通常不属于你手动运行的任何进程。它属于运行 MCP 服务器的任何客户端和主机。所以因为 VS Code 两者都是,它可以将其置入调试模式并附加其调试器,这开箱即用适用于 Python 和 Note。所以非常令人兴奋,它确实改变了我处理 MCP 的方式。最新的规范已经被提及。我只想再次提及它,因为它非常重要,人们要保持在规范的前沿,了解即将发生的事情并理解草案中的内容。草案中的内容只有在人们提供反馈表明它有用且有效时才会稳定。如果它们在草案中,并且没有人提供反馈,那么它们仍然会进入稳定状态,并且可能需要修订,比如 offspec。所以右边的更新的 Ospec 提供了企业级的授权。明天有一个关于构建受保护的 MCP 服务器的讲座,我强烈推荐由实际从事 offspec 工作的人来做。所以如果你想与其中一个幕后人员交谈并深入了解 O,你可以这样做。然后可流式传输的 HTTP 在 VS Code 中已经工作了两个版本,但测试起来一直很困难,因为没有服务器。所以如果你从事托管工作,你对可流式传输的 HTTP 感到非常兴奋。你应该让所有托管你的 MSP 服务器的人都使用它,而不是再使用 SSE。SSE 仍然可以与 HTTP 一起使用。所以你获得了双重好处,但你避免了服务器上这种非常状态化的变化。最后一个已经提到有一个社区注册中心,我认为这是另一个大痛点,比如我构建了一个服务器,但没有人找到它,或者发现体验是什么样的,我如何将人们发送给他们,比如我发送 JSON 块来让人们发现我的服务器吗?社区在这方面做了很多工作,使发现变得容易。所以这是一个对指导委员会、社区工作组以及所有参与其中的人表示的巨大感谢。如果你想查看它,它在 github 上的 model contracts protocolregistry,而且一切都在公开进行。最后,我对 elicitations 感到非常兴奋。这实际上将在下一个草案规范参考、规范草案发布中出现。这是工具最终在需要更多信息时能够回溯到用户的途径。目前,工具都由 LM 控制,你从它们那里获得所有信息。但是当它需要用户更具体具体的输入时,你就可以将它们放入另一个聊天体验中并要求它。但是为什么不直接给它们一个输入来提供呢?所以它再次在工具之上增加了更多的状态。所以需要你的帮助。MCP 中的渐进式增强是可能的。我认为我们希望有更多的最佳实践,甚至在参考服务器中展示它。但现在一切都已准备就绪。有支持最新规范的客户端,你可以在其中运行和测试它。这些客户端被用户使用。随着越来越多的用户展示这些有状态服务器的强大功能并概述这些最佳实践,这种互操作性差距将缩小,客户端也将迎头赶上。这是一个发展非常迅速的系统。人们抱怨说,“哦,你发布这个比别人晚了两周。”但这一切都在整合,随着人们使用和学习并提供反馈,它会变得更好。所以构建面向行动的、上下文感知、语义感知的服务器,使用完整的规范。最后,如果你有时间,请为生态系统做出贡献,阅读一些我分享的开放 RFC,比如命名空间和搜索,看看有什么即将到来。确保它们进入你正在使用的 SDK,方法是关注问题并分享你的经验。我认为很多人误解了他们通过提交问题、提供反馈对客户端和 SDK 以及所有这些事物的影响有多大。我帮助对进入 VS Code 的许多 MCP 问题进行分类。我们阅读所有这些问题。我们从中学习,这确实推动了我们的路线图,而且这可能发生在其他任何一个剪辑团队身上。所以真正发出你的声音,比如你们都应该支持采样。所以 MCP 具有我们都可以通过现有规范解锁的变革潜力。所以生态系统正在赶上规范。那么,就这样吧。随时在微软展位与我们联系。那里有两位 VS Code 人,泰勒和罗布。你也可以和我谈谈,或者和你的友好的 MCP 指导委员会成员谈谈。感谢 [掌声] 你。感谢 Harold 为我们深入介绍了 MCP 的鲜为人知的部分。我认为我们现在都是提示、采样和其他所有功能的粉丝。所以,我们一直在炒作 MCP 在过去的几个讲座中。但现在我想转一下,对吧?我们想告诉你一些使用 MCP 的困难部分。也许甚至是对 MCP 的一点抱怨。我想从听众那里听听,你在尝试使用 MCP 或构建 MCP 时遇到的最大痛点是什么?有人想大声说出答案吗?客户端支持。好的。好的。动态客户端发现。好的。不再有安全问题。好的。好吧,Sentry 的 David 将深入探讨这个主题,给我们一些关于他从解决这些痛点中学到的东西的见解。所以,让我们一起欢迎 David。谢谢。我猜每个人都能听到我。酷。好的。我看到一些幻灯片。欢迎大家。这有点临时,所以请耐心点。如果你不认识我,我很久以前就创办了 Sentry。David Kramer,我是一名工程师,一名高管,一名创始人。我想我有一些理性的观点。所以,这主要是关于这个的。我不认为你会学到什么。也许你会。我不知道。我个人认为这并不复杂。只是大词而已。所以,如果你学到了,那就太好了。如果你没有,也许你走开了,你会说,“是的,我以为就是这样。我们已经完成了。”大部分时间,几天前有人问我,我怎么混进这个会议的,我能不能填补一个空缺。所以填补空缺就像,“哦,来给一些热门观点,也许稍微调味一下。”所以,这就是我们要做的。它不会是太多的抱怨。如果你认识我,我喜欢抱怨,但是,你知道,我们这次会稍微收敛一点。那么,什么是 MCP?你知道,我得说这是最疯狂的现象之一。它就像新的加密货币浪潮一样。每个人都说,“是的,MCP。我们不知道它是什么,但我们在这里。”你会发现很多关于它应该如何,不应该如何的观点。而且你知道我经常发现的是,持有这些观点的人并没有构建任何东西,或者至少没有构建他们所谈论的东西。我主要作为一项有趣的爱好构建了 Sentry 的 MCP 服务器。所以,请按原样接受。它也是 Sentry 的 MCP 服务器。这些是针对 Sentry 的偏见观点。如果你不熟悉 Sentry,你可能应该熟悉,但我们做应用程序监控。我们做很多事情。如果你在网上有错误,它们很可能找上我们。所以,这是在 B2B、SaaS 业务的背景下。你们很多人可能在企业公司工作,如果你愿意的话。所以,从这个角度来考虑。但我们对 MCP 的看法是,它是代理的可插拔架构。句号。就是这样。它相当容易理解。而且,同样,所有这些都处于企业云服务的那种背景下。还有很多其他的方法可以适应 MCP。有适合本地的工具链。我们谈论的是我们运行云服务。这是大多数行业。我们是 B2B。我们是企业。我认为很多这些仍然适用。但请注意这一点。所以,我们如何看待 Sentry 的 MCP,特别是因为这再次与这里相关。我们修复错误。有像光标这样的东西,你也可以修复错误。如果我们能一起修复错误呢?所以一切都与此相关。而且我认为这一切都是关于我们如何变得相关。这就是现在的游戏规则,对于世界上每一个公司来说。就像,哦,我们如何成为一家人工智能公司?我们现在也是一家人工智能公司。但是 Sentry 有很多错误。我在我的编辑器里修复它们。如果错误有时能进入我的编辑器,那不是很酷吗?这是一个很好的 MCP 可能有用的例子,但至少我们会假装它有用。所以,这是这里的背景。但是这一切都回到了,也许每个人都在这里的原因是,我如何变得相关?我有一个人工智能任务。我突然有无限的钱可以花,原因是我昨天还没有。我们如何参与进来?好的。所以,每个人可能都处于同一阶段。我知道这是怎么回事。所以,好吧。我们几个月前就建了这个。我们不是第一个推出 MCP 的。原因是因为 MCP 有两个接口。我将专注于远程接口,但也有标准 IO。你可能已经了解了,或者知道一些。我不认为标准 IO 对我们这样的公司非常有用。我会谈论它,但关于 MCP 有用的类比。这是 VS Code Insiders,你刚才从 Harold 那里听到的,但他们做得相当好。他们是唯一拥有有用的 OAS 支持的人。Cursor 向我承诺了本周。我不知道。让他们兑现。但它效果很好。你插入 Sentry 的 MCP,你可以查找 Sentry 的数据以及一系列精选的工作流程。你也许可以修复一些错误,也许比以前容易,或者至少比以前有趣。为了这个目的,我需要一张截图。所以,昨晚我,就像昨晚一样,我在做这些幻灯片,我进入 VS Code。我说,我只是要插上它。我没时间去折腾它会不会坏。所以,我使用 VS Code,我说,好吧,我只是做一个“帮我修复所有错误”的事情。然后它立即向 Sentry 发出 20 次 API 查询。运行这个东西可能要花我五美元。但它确实开始修复一些错误。我不知道修复得好不好,不过。它们可能很糟糕。但它确实起作用了,对吧?就像它将上下文带入了编辑器,这就是我们想要的。而那个上下文是由别人提供的。在这种情况下是 Sentry。所以,这是我们认为的有趣的事情之一。这是我们认为有价值的有趣的事情之一,对于一个传统的,我不知道,我们有点像一家企业公司,但就像世界上任何一家公司一样,这也是我们都在关注它的原因。它相当容易访问,而这正是我要谈的。它实际上非常容易访问。所以,这是你,我,这就是为什么我现在有意见。就像哦,它只是一个 API 插件。我们有一个 API。我们有一些 OOTH。你知道,我们有自己的 OOTH 提供商。你知道,你们很多人可能使用像 work OS 这样的东西,或者,我不知道,选择一个提供开箱即用功能的身份验证服务。如果你有那个,你基本上就可以开始了,这很酷。它实际上是一个相当低的样板实现。但然后你很快就会发现,它实际上并不那么容易。所以,首先,你进入这个 OOTH ような舞蹈,然后你说,“哦,好吧。就像,是的,我们要这样做,但它需要 OOTH 2.1。”世界上没有人支持这个东西。就像我不知道它有多老,但我以前从未听说过 MCP。所以,那里有一点复杂性,但你会说,“好吧,它差不多了。它是 OOTH。我们有了。我们可以把它插入我们的 API。”你基本上能让它工作。在我们的例子中,我们使用 Cloudflare Shim,它基本上允许我们在 Cloudflare workers 之上代理我们的 OOTH 2 API,它有一个 2.1 客户端注册功能。我不知道是否有人谈论过。TL;DR,这很复杂。但它并不那么复杂。这东西几天就建好了,顺便说一句,我还是公司的执行官,所以就像,是的,如果我能做到,每个人都能做到。但你经历了 oath 流,然后你说,“酷,但是机器人实际上不知道如何推理巨大的 JSON 有效载荷,而这些有效载荷不是为它们设计的。”这实际上是我认为很多人失败的地方。有一个很大的谈话。这是我的第一个观点,如果你愿意,我可能会称之为感觉,MCP 不是一个仅仅位于 OpenAPI 之上的东西。你不能只是说,“我有一个 API。我将把所有这些端点暴露为工具。”你将得到你能想象到的最糟糕的结果。你会说,“哦,这没有意义。”你必须进行调整。你必须围绕系统进行设计。但总的来说,我会稍微谈谈这一点,你需要真正思考你今天将如何使用代理?当你提供上下文时,模型如何对你的行为做出反应,这才是真正重要的,并围绕它设计一个系统。所以可能利用你的 API,但它不是你的 API。然后你通过了它,并将其连接到像光标和 VS Code 这样的东西,然后你说,为什么它总是坏掉?你无法解决这个问题。你只能等到每个人都赶上。他们快到了。你知道,少数客户端现在支持原生身份验证。它们基本上是稳定的。值得称赞的是,VS Code 最近没有怎么坏。光标对我来说坏了很多次,但它们都很棒。别误会。Cloud 有支持。Cloud Code 有某种支持,但不是真的。所以,我想它可能有效,也可能无效。我认为尤其是在开发人员生态系统中,我们比其他人领先得多。所以,如果你试图将你的服务适应我们生态系统中的第三方代理,比如这些编辑器,你很可能明天就能成功。如果我不知道,比如 Salesforce 之类的。我不知道。所以,你基本上依赖于客户端和实现,因为再次,它是代理的可插拔架构。还有很多其他用例不仅仅是第三方,但这是重点。所以,我将尝试从这里开始建设性。我们看看。我们还有九分钟。只是一些学习心得,我很乐意稍后详细讨论。我会在那里。你可能会,房间里的某个人会不同意这一点,但只有当你是一家像我一样的 B2B SaaS 公司时,你才应该关心 OATH。特别是你主要关心远程环境中的 OATH。如果你想知道,我如何将我的服务集成到各种代理中?我希望错误存在于光标中。我想运行一个云服务。我想运行一个云服务,原因和我一直想运行云服务的原因完全一样,因为我可以迭代它。我可以快速发布。我可以拨入安全性。所有这些优势,结果都和以前一样,因为技术没有改变。所以,如果我是你,而你不是在构建高度特定的、以本地设备为中心的东西,那就专注于远程 MCP 服务器,专注于 O 规范,然后就别担心了。问题会自己解决。安全问题也会自己解决,因为有整个安全问题世界,标准 IO 接口充满了其中大部分。我不会谈论那个。我确定这里还有其他关于提示注入的讲座,但它非常非常非常可怕。不要允许你的组织中有随机的 MCP 工具。信任那些赢得了信任的人。不要从互联网上下载随机的包。这对你的组织来说将是一段非常糟糕的时光。我确实提到了这个云桌面现在在 G 中拥有完整的 OS 支持,已投入生产。VS Code Insiders 也有。这些都很棒,因为你只需要插入 MCP URL,它就会处理那里的一切。光标,就像我说的,我想这周。我不知道其他人。我不太关注其他人,我认为 Cloud Code 没有,至少我没有看到任何东西。然后还有很多,长尾。所以,效果很好。有一个 MCP 远程包,我们就是这样发布所有这些东西的。它效果还可以。我赞扬早期采用者将这些东西发布出来。这不是一个很好的体验。你会发现很多这都不是一个很好的用户体验。它很粗糙。它是测试版,没关系。这是最大的事情,回到 OpenAPI 那件事。你实际上必须投入精力。你不能只是说,“哈哈,我们代理了 OpenAPI 并将其暴露为工具。它什么也做不了。”所以,正确的答案是什么?谁知道?我们对这个的看法,我会稍微谈谈为什么,就是我们返回 markdown。我们已经获取了一些 API 端点,并将一些响应直接翻译成了 Markdown,但这是故意的。就像我想从 Sentry 中获取一个错误。我只想给你最基本的东西。我将以一种人类可以理解的结构化方式提供它,因为总的来说,如果人类可以理解它,语言模型也可以理解它,因为它基本上是在语言上进行模式匹配。它可以在 JSON 中找到一些东西,但如果你真的强迫它,你会发现它总是会坏掉。所以,只使用像 Markdown 这样的东西。它不是科学的。我认为这方面缺乏科学。这很难。就用任何有效的东西吧,但你必须真正思考你无法控制消费者。你无法控制模型。所以你有点像这个最小公分母的东西。所以,要考虑到这一点。但你需要设计系统,你需要将其视为你正在为代理提供上下文,而你不知道代理在做什么。所以,这就是游戏名称,上下文。同样的事情,抱歉,这是那个例子。我忘了我的幻灯片是什么了。我们只是给出了一个合理的工具描述作为第一版上下文。有时所有这些都会导致令牌限制。所以还有一些挑战。我们给出了一个合理的工具描述,希望客户端能够弄清楚如何利用这个上下文。所以它可以调用正确的工具。它可以在需要时调用它。它可以选择一个工具而不是另一个工具,这不幸的是一个非常困难的问题。大部分是直接的。错误,同样的事情。你必须设计错误。它们仍然是上下文,因为就像人类无法弄清楚如何调用你的 API 一样,机器也无法弄清楚如何调用你的 API。在我的例子中,我说,帮我修复所有错误。它查询了 Sentry 中我能访问的每个组织。它查询了所有,就像 20 个 API 调用,而本应只有一个,即使有了所有这些上下文。所以,我们离让这个变得很棒还有很长的路要走。但它就像一线希望,对吧?所以,你知道,在这种情况下,就像哦,你没有传递那个东西,或者说你为那个东西传递了一个无效的值。给它一个真正的人类响应。这现在比以往任何时候都更重要,因为再次,不仅仅是机器在推理它,你可以硬编码所有这些东西。它是抽象的。你不知道谁在推理它。最大的事情,这正是我对世界的总体看法,就是你没有控制权,这已经是一个问题了。在很多情况下,你也在转嫁成本。所以你实际上需要注意。所以,另一个不只是说,“这是我的 API。我只是把它全部返回给你,因为突然之间,你知道,那个调用,如果你愿意,那个可能是一美元的工具调用,现在可能要花费十美元,因为你需要的令牌数量。”更重要的是,它可能根本不起作用,就像早期一样。而且,我不知道 VS Code 或 OpenAI,我不知道该怪谁,解决了这个问题,但就像曾经有,现在可能仍然有令牌数量或工具描述长度的限制。有道理,对吧?你想限制每次 API 调用的成本,但突然之间你又有了问题。所以你必须非常认真地考虑这一点。这将不断发展。而且我认为最大的事情是,如果你构建了其中一个,它就不是一劳永逸的。就像我们仍然每周都在更新这个东西,在这里和那里进行调整,试图看看发生了什么并发展它,对吧?但最大的事情,这也是我的收获,我非常非常坚定的信念是,你只需要真正专注于构建代理。MCP 是一个插件架构。它背后有很多价值,但很多 LLM 所带来的内在价值是这种代理架构,顺便说一句,它只是一个带有花哨新词的服务架构。常识性的东西,对吧?所以,我们在 Sentry 做了这个。就目前而言,它与 MCP 的配合还不好。目前还没有工具的流式响应。当你考虑这种代理到代理时,这是一个大问题。我不是指谷歌的方式。我是指从代理到代理的通用观点。但它给了你控制权,这和所有软件一样。如果你有控制权,你就可以对成功、对失败负责。我可以负责决定如何调用工具的提示。我可以负责工具的结果。我可以在后台进行多次调用并将它们打包。所以,如果我承担代理的成本,我就会获得更多的控制权。我甚至可以控制模型。所以,我认为这是我的大赌注,我认为这是 B2B 将大放异彩的地方,当我们开始通过 MCP 架构公开代理时。再次,将 MCP 视为一个插件架构。我们已经用我们的一个做了,就是这个东西。我们一直在重新命名它,所以请耐心点。它现在被称为 Seir,但 Sentry 有很多关于你的应用程序出了什么问题的数据。我们做了一个通过代理完成的非常高质量的根本原因分析。我们主要将这个根本原因分析暴露给我们的 UI。我们也将其暴露给 MCP,但因为它不支持流式传输,所以我们必须进行一些轮询检查,就像,好的,开始工作,然后检查几次。但因为代理的工作方式,它最终会在某个时候放弃。所以这有点复杂,但再次,测试版承诺就在那里。但是当这个奏效时,我真的认为这将是我们许多人的价值解锁。再次,MCP 做很多事情。它是一个抽象协议。但代理的比喻真的很好。顺便说一句,所有这些都是开源的。你可以在互联网上找到 Sentry 的 MCP。你会在 GitHub 上找到它。我应该说公平来源。那里有一些复杂性。这就是 UI 中的代理的样子。如果你还没有看过,请看看。我们会一直在那里。给我反馈。我认为我想分享的最后一件事是,这些东西并不难。它经常坏掉,但并不难。我再次说,我两天就建好了。我有很多工作要做。你可以去构建它并尝试一下,然后学习,就像所有这些东西都很明显一样。我认为我们在 Sentry 学到的教训,或者说我们仍在学习的教训。每个人都害怕所有这些东西,因为一切都有了新的花哨的词。但花哨的新词只是同一个东西的新词。它只是一个新的油漆层,对吧?你知道 MCP 只是一个插件架构。代理只是服务,就像 LLM 调用或 MCP 调用一样。实际上,一半的工具只是带有新响应格式的 API 调用,对吧?所以,做到这一切是相当容易的。这里有很多很棒的技术。就像我说的,我们使用了大量的 Cloudflare 技术。我们以前根本没有使用 Cloudflare。然后几天之内,我们就说,酷,我们可以在 workers 上模拟一个东西。它们为我们提供了一个 OOTH 代理。问题解决了。这一点很重要,因为我们基本上不运行 websocket 基础设施。这并不是我们拥有的东西,对吧?不幸的是,协议需要这样的东西,这使得采用它有点麻烦,但但再次,它并不难。采用它很容易。试试看。你可能会遇到很多错误,但坚持下去。我认为这个会留下来。但我真的会深入思考代理以及你如何为你所了解的数据优化工作流程中的上下文。说到这里,我下午都会在那里,可能在博览馆的展位,如果你想过来聊天。过来打个招呼。我总是很乐意抱怨其他事情,或者给你一些我半知半解的意见。我不是一个 AI 人,要说清楚,但是,酷。说到这里,你知道,感谢大家参加这个讲座,以及这个疯狂的会议,这很有趣。我就说到这里。好的。谢谢 David。如果你有任何问题,请务必抓住演讲者。如果你有兴趣部署或使用 MCP,请与我交谈。下午 2 点见。 [音乐] bas。 [音乐] [音乐] 女孩。嘿 [音乐] [音乐] [音乐] [音乐] 我爱我知道。我们是 Heat。Heat。 [音乐] N 嘿。嘿。嘿。下来。快乐的舞蹈。你你 是的。嘿。嘿。生日快乐。我我 Heat。嘿,Heat。我感觉我 [音乐] 嘿,嘿,嘿。好的,希望大家午餐愉快,因为我们很快就会回到 MCP。所以,接下来是来自 Pyantic 的 Samuel,他将告诉我们,MCP 是我们所需要的一切。让我们一起欢迎 Samuel。非常感谢。所以,是的,我正在谈论 MCP 是我们所需要的一切。在我开始之前,先简单介绍一下我是谁。我最出名的是 Pyantic 的创建者,一个 Python 的数据验证库,它下载量非常大,每月下载量约为 3.6 亿次。所以有人告诉我,这相当于每秒 140 次。Pyantic 在一般的 Python 开发中无处不在,但在 GenAI 中也同样如此。基本上,它被用于 Python 中的所有 SDK 和代理框架。Pantic 于 23 年初成为一家公司,此后我们又开发了 Pyantic AI,一个基于 Pyantic 原理构建的 Python 代理框架,以及 Pantic Logfire 可观测性平台,这是我们商业化的一部分。我还是 MCP Python SDK 的一个不太活跃的共同维护者。所以,MCP 是我们所需要的一切,这显然是对 Jason Lou 两年多前在 AI Engineer 上发表的关于 Pideantic 是我们所需要的一切的演讲的模仿,然后是第二次,Pantic 仍然是我们所需要的一切,也许是去年这个时候。它有相同的基本思想,即人们正在过度复杂化我们可以使用一个工具来完成的事情。而且,同样,这个标题是完全不现实的。当然,Padantic 不是你所需要的一切。MCP 也不是万能的。但我们有,我认为我们同意的是,MCP 可以做很多事情,而人们有时会过度复杂化情况,试图想出新的方法来进行代理到代理通信。我这里特别谈论的是自主代理或你正在编写的代码。我不是在谈论像光标这样的代码代理的 claw desktop 或 Z wind surf 等用例。MCP 最初主要是为这些设计的。我不知道 David Pereira 是否会说我们使用 Python 的 MCP 是一个,他肯定不会说这是滥用,但我认为它不是 MCP 的主要设计用例。MCP 的两个原语,提示和资源,在这种用例中可能不太适用。它们对于光标类型的用例非常有用,或者应该非常有用。它们在我们这里谈论的用例中并不真正适用。但是工具调用,第三个原语,对于我们在这里要做的事情非常有用。工具调用比你最初想象的要复杂得多。很多人对我说 MCPR,但它不能只是 OpenAPI 吗?为什么我们需要这个自定义协议来做这件事?有几个原因。动态工具的想法,在代理执行过程中根据服务器状态出现和消失的工具。日志记录,即在工具仍在执行时向用户返回数据的能力。采样,我今天将重点介绍它,也许是 MCP 中最令人困惑的命名部分,如果不是现在技术总称的话。以及像跟踪、可观测性这样的东西。而且,我还要补充一点,MCP 有效地作为标准输入和输出上的子进程运行的方式,对于许多用例来说非常有用,而 OpenAPI 无法解决这些问题。这是你将从许多人那里看到的关于 MCP 的典型图像。想法是我们有一些代理,我们可以将任何数量的不同工具连接到该代理。关键在于,代理不需要考虑这些特定工具,而这些工具也可以在不知道代理的情况下进行设计。我们可以像我使用浏览器一样将两者组合起来,而我将访问的网站不需要知道关于浏览器的任何信息。我的意思是,我知道我们现在生活在一个浏览器的一统文化中,但至少最初的理想是我们可能有许多不同的浏览器都通过相同的协议进行连接。MCP 遵循相同的想法。但这可能会变得更复杂。我们可以有这样的情况,即我们系统中的工具本身就是代理,并且正在进行代理操作,需要访问 LLM。当然,它们可以反过来通过 MCP 或直接连接到工具来连接到其他工具。这很好。这很优雅。但有一个问题。我们系统中的每个代理都需要访问 LLM。所以我们需要去配置它。我们需要为此工作出资源。如果我们正在使用远程 MCP 服务器,如果该远程 MCP 服务器需要使用 LLM,那么现在它就会担心成本是多少。如果作为工具运行的远程代理可以有效地利用原始代理所拥有的模型呢?这就是采样所提供的。所以,正如我所说,我认为采样有点,不幸的是,这并没有让它变得更大。屏幕上清晰吗?也许我会让它变大,就像这样。采样是这样一种想法,在 MCP 协议中,服务器可以有效地通过客户端向 LLM 发出请求。所以,在这种情况下,客户端发出请求,启动某种 Pantic 查询,调用 LLM,LLM 返回说我想要调用那个特定的工具,这是一个 MCP 服务器。客户端负责调用 MCP 服务器。MCP 服务器现在说,“嘿,我实际上需要能够使用 LLM 来回答这个问题的答案。”然后将其发送回客户端。客户端将该请求代理到 LLM,接收来自 LLM 的响应,将其发送到 MCP 服务器,然后 MCP 服务器返回,我们可以继续前进。采样非常强大,目前支持的并不多。我今天将用 Pantic AI 来演示它,我们有采样支持。好吧,老实说,它目前是一个 PR,但很快就会合并。我们支持采样,既作为客户端。所以,知道如何代理那些 LLM 调用,也作为服务器,基本上能够注册使用 MCP 客户端作为 LLM。所以,这个例子显然就像所有例子一样被简化或简化以适应屏幕。想法是,我们正在构建一个研究代理,它将为我们研究开源包或库。我们已经实现了一个你实际上需要的许多工具之一。这个工具正在查询 BigQuery 的 BigQuery 公共数据集,以获取关于特定包下载次数的数字。所以,这是相当标准的 Pantic AI 代码。我们配置了 log file,我稍后会展示。我们有代理运行时可以访问的依赖项。我们说我们可以做一些重试。所以,如果代理返回,如果 LLM 返回错误的数据,我们可以发送一个重试的大型系统提示,我们基本上给它表的模式。告诉它做什么,给它一些例子,等等。但然后我们得到这个,这可能是强大的部分。所以,作为输出验证器,我们将首先删除 SQL 中的 markdown 块引用,如果它们在那里,然后我们将检查表名是否正确,它正在查询哪个表,并告诉它不应该,如果它不应该,然后我们将运行查询,关键是,如果查询失败,我们将引发模型重试,使用 Pantic 来重试请求 LLM。而且,我们在这里看到的另一件事是,我们有这个上下文。MCP context.log。所以,你在这里看到,当我们定义了 depths 类型时,我们说它是 MCP context 的一个实例,这是当我们调用 MCP 服务器时获得的。所以,我们在这里做的是,我们提供了一种类型安全的方式,在这种情况下,代理验证器,但如果你愿意,它也可以在工具调用中,来访问该上下文。所以,我们在这里可以看到,在类型 int 中,我们知道类型是 MCP context。所以我们有一个 log 函数,我们知道它的签名,我们可以进行这个 log 调用。关键是,这将返回到客户端,并最终返回给正在观看的用户,在事情完成之前。所以,我们可以获得进度更新。MCP 还有一个上下文概念的进度,我在这里没有使用它,但你可以想象它也很有价值,如果你知道查询的进度,你可以显示一个进度更新。所以,我认为像这样的日志记录的原始原则是,你有一个类似光标的代理在运行,我们希望能够向用户提供更新。别担心,我还在进行中,在它完成之前,以及确切发生了什么。但是,如果你也在使用 MCP,你也可以想象这很有用。如果这个研究代理作为 Web 应用程序运行,你想向用户展示发生了什么。这种深度研究可能需要几分钟才能运行。我们可以在工具调用仍在执行时提供这些日志。然后,我们将把输出变成一个字典列表,然后将其格式化为 XML。所以,你得到一个不错的模型,它们非常擅长基本上审查 XML 数据。所以,我们基本上返回查询结果。
它们就像那种 XML 式数据,大型语言模型(LLM)会擅长解释。现在我们来看 MCP 部分。所以在这段代码中,我们使用 fast MCP 来设置一个 MCP 服务器。目前 fast MCP 有两个版本。令人困惑的是,这是 MCP SDK 内部的版本。嗯,我们为我们的函数编写了文档字符串。所以,我们在这里注册了一个工具,Pippi downloads,而我们函数中的文档字符串最终将成为最终提供给选择调用它的 LLM 的工具的描述。嗯,我们将传入用户的问题。我认为这里要说的重要事情之一是,当然,你可以将其设置为在你的中央代理中生成 SQL。你可以将 SQL 的所有描述,指令包含在工具的描述中。模型似乎不太喜欢工具描述中有这么多数据。但更重要的是,如果我们把所有这些关于如何制作这些查询的上下文都发送到我们的主代理,我们就会炸掉我们主代理的上下文窗口。这只是我们对该代理的所有调用的开销,无论我们是否要调用这个特定的工具。因此,做这种我们在工具内部进行推理的事情,是一种有效限制主运行代理的上下文窗口的强大方法。然后我们将返回这个输出,它将是一个字符串,是从这里返回的值。我们将运行 MCP 服务器,默认情况下,MCP 服务器将在标准输入/输出上运行。嗯,然后我们来到我们的主应用程序。所以这里我们有一个代理的定义。你看到我们定义了一个 MCP 服务器,它将运行我刚才向你展示的脚本,Pippi MCP 服务器。嗯,所以然后这个代理将充当客户端,并已注册为可调用的工具。我还会设置当前日期,这样它就不会像它们经常做的那样假设是 2023 年。嗯,现在我们可以最终运行我们的主代理,例如问它 Pantic 今年有多少次下载,我将勇敢地运行它,看看会发生什么。考虑到互联网,我只有中等希望,但我们会看看会发生什么。嗯,你会看到我没有怎么谈论 Logfire 的可观测性,但你很快就会看到。我们立即遇到了超时。这太棒了。如果这就是它的普遍表现方式,我可能需要做很多即兴发挥。我再试一次,看看是否会。它又立即超时了。我是否在错误的网络上?我在演讲者网络上。所以我不知道为什么我们会立即超时。我再试几次。看看我是否能从这里运行它,看看我们是否会更幸运。模型立即超时了。我认为 Logfire 也一样。一切都失败了。我将尝试切换网络。给我一分钟。我有四分钟。我们将看看进展如何。尝试困难的那个。是这个吗?在我们开始之前,它工作得很好。现在已经有线了。尝试运行这个。哦,我们有运气了。嗯,所以不要太早鼓掌。它仍然可能失败。但是,嗯,它成功了,它告诉我们今年我们有 16 亿次下载。但可能更有趣的是来看看 Logfire 中的情况。所以,如果你看看它是否会进入 Logfire,或者我们在这里也遇到了失败吗?我承认这是在我上台前的一次运行,但它看起来完全一样。所以我不会过多地谈论可观测性以及我们如何做到 MCP 可观测性或跟踪在 MCP 中如何工作,因为我知道在我之后有一个关于这个的演讲。所以把它看作是对即将发生的事情的剧透。但你可以看到我们运行了我们的外部代理。它决定调用 uh uh40,它确实决定我将调用这个工具。它不需要考虑生成 SQL。它只需要对我们正在进行的查询有一个自然语言描述。然后我们,正如你在这里看到的,这是 MCP 客户端。MCP 客户端然后调用 MCP 服务器,然后再次运行另一个 podantic AI 代理,然后该代理调用 LLM,这通过客户端代理完成。所以这就是你可以看到服务客户端服务器客户端服务器最终如果你看看顶层的与模型的交互,你会在这里看到是的,最终的输出是运行查询的返回响应是这种 XML 式数据,然后 LLM 能够将其转化为人类对正在发生的事情的描述。我认为另一件有趣的事情可能是我们可以去看看,我们应该能够看到实际调用的 SQL。所以这是 MCP 服务器内的代理调用,你可以在这里看到它写的 SQL,你可以确认它确实看起来是正确的。嗯,我将从那里继续说,谢谢。嗯,我们在展位上,Pantic 展位。所以如果任何人对此有疑问,想看到它以许多其他令人兴奋的方式失败,我非常乐意与你交谈。是的,过来打个招呼。好的,谢谢 Samuel 的演讲。现场演示在舞台上成功总是令人印象深刻的。那么有多少人在使用 MCP 时遇到过问题,但却无法弄清楚发生了什么?有人举手吗?好的,有几个人。所以,我们的下一位演讲者将稍微谈谈 MCP 中的可观测性。希望通过正确的可观测性日志记录,我们都能弄清楚 MCP 内部发生了什么并加以改进。所以,请和我一起欢迎来自 Weights and Biases 的 Alex 和来自 DIPso 的 Ben 来谈谈可观测性。谢谢 Henry。[掌声] 大家好,我叫 Alex Vulov。我是 Weights and Biases 的 AI 传道者。我是 Benjamin Ekl。我是 DIPso 的联合创始人兼首席技术官。我们是 MCP.Run 的创建者。好的。我们在这里谈论 MCP 可观测性。嘿 Ben,我想问你一个问题。你曾在 Data Dog 工作过,而且你还在生产环境中运行了多个 MCP 服务器和客户端。嗯,前几天我的代理在生产环境中发生了一些事情。好的。嗯,是的,我的意思是,我们从一开始就在生产环境中运行 MCP 客户端和服务器。嗯,是的,但是等等,你不是在一家可观测性公司工作吗?Weights and biases,你不是在做那个叫做 Weave 的东西吗?是的,没错。我确实在做 Weave,但是自从我通过 MCP 为我的代理添加了一些功能以来,我习惯的从我的代码端到端运行的所有可观测性都变得有点黑暗了。明白了。所以这就是我们要和大家谈论的。MCP 的兴起正在造成可观测性的盲点。随着 AI 代理越来越普遍,这个问题会随着越来越多的 MCP 工具而加剧,开发者对代理内部端到端的事件的了解就越少。是的。嗯,是的。所以,在 MCP run 上,我们同时运行客户端和服务器,因为这是一个新的生态系统,我们不得不自己拼凑出很多可观测性的方法。我一直在四处看看。似乎每个人都在孤立地做这件事,他们都在解决同样的问题。所以,你知道,我们想把社区聚集在一起解决这个问题,所以今天我们将讨论 MCP 生态系统中可观测性的现状。是的。所以我们为什么关心这个,为什么我们认为你们也应该关心这个?所以,如果你无法快速了解生产环境中出现问题的原因、在哪里出现问题以及如何出现问题,那么你快速响应的能力将大大降低。我们非常关心,我们都构建需要 MCP 可观测性的工具,我们也支持 MCP,我们都非常关心开发者的体验。是的,这对我来说非常重要,因为企业工程团队不会将产品投入生产,除非他们确信他们能够识别安全和可靠性问题,然后再由客户发现。所以,这就是为什么他们会在可观测性平台投入大量资金。所以,如果你要将 MCP 投入这些生产环境,你必须无缝地集成到这些可观测性平台中。是的。所以,因为我们非常关心 W&B weave 的开发者体验,我很高兴在这里宣布 Weave 支持 MCP。万岁。只要你是客户端和服务器的开发者,你只需要在你的客户端和服务器上设置这个 MCP trace list 操作环境变量。我们将向你展示列表工具调用,以及你的 MCP 调用的持续时间。目前这适用于我们的 Python 客户端。这就是它的样子,非常快。用红箭头,你可以看到客户端跟踪,例如。用蓝箭头,我们指向 calculate BMI 工具和其他工具。就是这样。可观测性解决了,对吧?我们下台吧。我们完成了。等等。那么这个 calculate BMI 工具呢?这个 MCP 服务器。我为什么看不到里面?嗯,是的,我们正在处理这个问题。嗯,是的,这似乎只适用于 Weave,对吧?有没有一种不依赖供应商的方式来做到这一点并进行标准化?是的,没错。这是我们集成到 Weave 的 Python SDK 中的一个定制集成。在开发这个集成时,我们的开发人员一直在构建这个 RMCP 工具集成,我一直在内部和外部倡导我们应该遵循 MCP 作为概念的开放性,并创建 observable。也许你们中的一些人已经看到了。这是一个宣言,旨在推动一场关于这个问题需要解决的对话,以及我们和其他在舞台上出现过的人以及明天将在 EVOS 赛道上出现的人之间的对话,以一种不依赖供应商且标准化的方式进行可观测性。所以在开发 observable 工具时,我意识到我做了一些搜索,发现存在一种不依赖供应商且可扩展的方式来添加可观测性,并且可以有一种很好的方式将这两个开放协议结合起来。是的,没错。幸运的是,MCP 驱动的代理实际上只是另一个分布式系统,我们已经这样做了几十年了。所以 Open Telemetry 就是我们选择的这样做的方式。我们将稍微谈谈 OT。如果你不熟悉它,我们需要先了解一些基本概念。所以我们需要了解的主要基本概念是跟踪。所以跟踪就像你系统中的一个原子操作。它由一系列我们称之为跨度的步骤组成,呈树状结构。跨度代表每个步骤的持续时间和一些任意元数据。这个步骤到底是什么完全由你定义。它可以像 HTTP 请求一样高层,也可以像一个微小的函数调用一样低层。这里有一个结账体验的例子,一个结账的 API。每个跨度的大小和位置分别对应于它花费的时间以及它在调用图中的位置。仅仅从这些数据中,你就可以了解很多关于系统以及如何观察它的信息。你需要了解的另一个基本概念是同步。所以同步就像一个集中的数据库,你的所有遥测数据都去那里,但通常它们是一个完整的平台,带有用户界面、仪表板和警报和监控以及所有这些东西。所以这里有很多标志,Ben。基本上,同步是一种开放的标准方式,供像收集器这样的东西接收这些跨度。只要开发者以某种标准规范的方式检测了他们的应用程序代码,每个人都可以以统一的方式接收它们。对,没错。是的。这就像一堆数据库,它们都支持相同的模式和有线协议。你可以替换它们,事实上它们不必改变太多代码,甚至不必改变代码,这可能只是配置。对,对。顺便说一下,像 W&B weave 和一些朋友,比如之前的 Simon 来自 Lockfire 和一些其他朋友,也都切换支持 hotel 了。Open Telemetry 正在成为一种全球标准。太好了。嗯,是的,拥有一个集中的同步的另一个好处是最后一个概念分布式跟踪。所以回到我们的结账端点,如果欺诈服务将其跨度发送到同一个同步,那么我们就可以将跟踪拼接起来,并显示整个上下文。所以也许你已经看到了 MCP 服务器的部分在这里。是的。所以,嘿 Ben,如果通过与开放协议的集成是可能的,那么如果我想使用其他人托管的 MCP 服务器,比如 GitHub、Stripe、还有其他人呢?是的,这是个好问题。所以,对于启用 MCP 的代理,或者实际上是任何分布式系统,有两种情况。一种是客户端和服务器在不同的域中,另一种是它们在同一个域中。这里的域不一定是指字面定义。我指的是控制的管理域,对吧?你拥有这个 MCP 服务器吗?你拥有这个 MCP 客户端还是它是第三方的东西?所以你的 GitHub Stripe 例子是一个很好的不同域场景的例子。所以,这是一个代理的跟踪,它正在执行提示读取和总结 Hacker News 上的热门文章。它将联系这个远程获取服务器来读取 Hacker News,但对我们来说,在跟踪中它是一个单一的服务跨度,因为它在我们的控制域之外运行。所以它对我们来说仍然是黑盒。但假设我们拥有服务器,比如它可能运行在与客户端不同的数据中心。我们如何获得完整的上下文?这很简单。通过分布式跟踪和上下文传播。我们可以让远程获取服务器将它的跨度发送到与客户端相同的同步,然后同步将为我们拼接回缺失的跟踪部分。所以在图表中,你可以看到我们现在可以进入那个获取服务器,我们可以看到它在做什么。它正在进行一些 HTTP 请求,大约需要 350 毫秒,然后它会做一些小的计算来创建 markdown。好的,理论上这很棒,我们已经经历过了。我们可以花一个小时来谈论 hotel。不是我们有一个小时。但是我们如何将这两种协议结合起来呢?对吧?有没有标准的方法?MCP 规范人员是否部署了方法让我们进行可观测性?不完全是。它确实工作了,但比应该的要困难一些。所以为了做到这一点,我们需要像我说的,将跟踪上下文从客户端传播到服务器。所以这里有一个 TypeScript 的例子,当我们调用客户端中的工具时,我们将提取当前的跨度,然后将其传递给服务器。我们通过将数据通过协议的元数据负载来做到这一点。现在我们在服务器内部,这就像在获取服务器中,我们可以提取跟踪上下文,将其继承为当前的跨度,然后当我们发送跨度到同步时,就好像它来自那个父跨度一样,然后同步就可以将其拼接回来。伙计,这太棒了。所以你基本上利用了发送负载以及客户端和服务器之间的负载的一种未记录的属性来传递 hotel 需要连接这些东西的数据,对吧?是的,有点。我只是不得不滥用保留给协议的低级接口,但应该通过工具提供一种更高级的方法。这是我们稍后在演讲中应该谈论的内容。是的。哦,是的。所以,顺便说一句,这不仅仅是一个截图。这是一个正在工作的演示。所以,它比我幻灯片中展示的代码要多得多。所以,如果你想看看它是如何工作的并根据你的需要进行调整,请查看这个 GitHub 链接。我认为你实际上是为了让它与 Weave 一起工作,对吧?是的。所以现在我们知道如何传递上下文了,你向我展示了方法,让我们看看这个解决方案实际上有多棒。虽然 Weave MCP,我之前向你们展示的是我们为 Weave 的 Python SDK 定制的解决方案。MCP 的普遍好处,不仅仅是可观测性方面,是服务器和客户端不必运行在相同的环境中,也不必共享相同的代码,也不必来自相同的编程语言。所以,当我们在开发 Python SDK 时,你用 TypeScript 构建了一个代理,因为 Wave WB weave 支持 hotel open telemetry,而且它是一个开放协议,你的 TypeScript 代理,我花了几分钟时间,没有改变太多代码,就将这些跟踪发送到 Weave,而不是从 Python 边缘发送。所以在这里,你可以看到绿色部分是客户端跟踪,然后服务器跟踪实际上显示了这些调用在服务器端发生了什么。是的,这真的很酷。那么你是如何将跟踪导入 Weave 的呢?这非常非常简单,比以前简单得多。我们只是将 W&B 定义为 OTLP 端点,就像你给我展示的那样。然后人们就可以将他们的跟踪发送到 1b.ai/otel I/OTE。你只需要做的就是授权。添加授权头并指定你想进入哪个项目。酷。是的。所以,当我们谈论可观测性时,我正在开发这个的时候,我有一个神奇的时刻发生在 MCP 上。我想和大家分享一下,我也喜欢你。MCP 的故事。是的。所以,我使用了刚刚发布的 Cloudopus 4 来将你构建的代理进行 Weave 化,并添加 MCP 可观测性,而 W&B weave 将变得有点元,请继续。它还有一个 MCP 服务器。好的。它做什么?所以我们有一个 MCP 服务器,它允许你的代理或聊天等与你的跟踪对话,查看数据并为你总结数据。好的。所以我们有一个 MCP。它已经在我的 windsurf 和 CL 代码中配置好了,ous 4 能够使用这个 MCP 服务器来处理它。所以在这里你看到一个例子。代理基本上开始处理你的代码,然后决定好的,我将运行代码,然后说好的,我将去实际看看跟踪是否出现在 WBe。然后它注意到它们出现了,但出现了错误。所以,它需要的一些输入或输出,它不知道如何做,它不是文档的一部分。所以,下一刻绝对让我大吃一惊。Oppus 4 发现我们的 MCP 服务器暴露了一个支持机器人。所以,基本上是另一个代理,它决定为它编写一个查询,收到正确的信息一段时间后,并根据这些信息采取行动,学会修复它需要修复的东西,修复它,然后回去看看修复是否正确。所以我的编码代理通过它自己发现的支持 VMCV 与另一个代理进行了通信。我甚至不知道这种能力存在,可以处理我的编码代理。事情变得有点元,我的头脑绝对是这样,我坐在那里,而这一切都发生了。一次都没有碰过键盘。太棒了。是的,这很元。嗯,是的,在我们离开之前,我还想宣布一下。所以,MCP run 也将导出遥测数据到兼容 hotel 的同步。所以,正如我之前提到的,我们同时运行服务器和客户端。所以对于服务器,我们有一个叫做配置文件(profiles)的概念,它们允许你将多个 MCP 服务器切片并组合成一个单一的虚拟服务器。在 MCP 客户端方面,我们有一个叫做任务(task)的客户端。这就像一个单一的提示代理,可以通过 URL 或计划触发。它也只是与配置文件(profiles)的概念相结合。但是,是的,很快你就可以从这两者中获得,而且我希望你知道,我们将连接到 Weights and Biases 并举行一个小派对。是的,你可以直接从 mcp.run 将它们发送到 Weave。好的,所以,总结一下,可观测性今天在 MCP 中已经存在,但它并不平均分布。hotel 应该能让你大部分时间都做到这一点,但社区需要团结起来,创建工具和约定,使其更顺畅。你不应该需要成为可观测性专家才能让这些东西正常工作。那么你如何参与呢?嗯,AI 工程师们,开始思考通过 MCP 工具进行可观测性,以及你是否获得了执行链端到端的可观测性。对于工具构建者和平台提供者,我们应该加入并致力于更高级的 SDK。所以,例如,Open Inference 是一个很好的开始,但我们都应该帮助那些使用定制 SDK 的客户端进行检测,共同制定约定。Ben 能否快速解释一下语义约定?是的,当然。所以,正如我们之前学到的,跨度携带用户定义的属性,对吧?所以,如果它们是用户定义的,那么同步如何知道一个跨度实际上是一个 HTTP 请求,状态码为 200,或者它如何知道它是一个有错误的 MCP 工具调用?这就是语义约定的作用。你可以参与定义代理的约定,所有可观测性平台都同意这些约定。如果你对此感兴趣,我建议你查看 hotel 团队的 Genai 语义约定工作。嗯,是的,最后,对于像 MCP Run 这样的平台构建者,你知道,去添加 hotel 支持,帮助审查 RFC,最后,是的,只是来和我们谈谈想法,因为我们只是,一切都刚刚汇集在一起。一切都如此新颖和新鲜,我们不知道确切该怎么做。这里有一个额外的赛道,叫做 AI 工程师,叫做走廊赛道,我从那些实现这个的人那里学到的关于我们正在谈论的东西比我准备演讲之前学到的还要多。这真是令人难以置信。所以,嗯,是的,当然。嗯,是的,所以再说一遍,我是 Ben。我的行动呼吁就是去看看 MCP Run。你可以获得免费账户。试试看。嗯,是的,就这样。我是 Alex。查看 WBWeave MCP OP,了解如何使用 hotel 跟踪 MCP。我也参与了 observable 工具倡议。我很希望你能看看宣言,看看它是否能引起你的共鸣,以便我们联手谈论可观测性,而且,是的,请访问我们的展位。我们有一些非常有趣的惊喜。我们这里有一只可观测的机器狗。我还运行周四的播客。我想特别感谢 Swix 给予我的支持,让我能够来到这里。如果你对 AI 新闻感兴趣,我们明天将录制一期节目。就这样。非常感谢。谢谢 Alex 和 Ben。所以,今天我们涵盖了很多内容。我们谈到了 MCP 的起源,MCP 规范的细节,可观测性。看起来 AI 代理现在将一直自主地为我们完成任务。但也许缺少的一件事是代理如何代表我们付款,以及我们应该使用哪个代理的问题。所以我们的下一位演讲者将讨论这个话题。我们有来自 Appify 的 Jan 来谈论代理经济。请开始。那么让我从一个问题开始。智能如何在生物系统中出现,对吧?嗯,是通过神经元,对吧?嗯,当神经元诞生时,它们就像单个细胞,但随着时间的推移,它们会长出轴突和树突,并与其他细胞或其他神经元建立连接,并学会如何沟通,以便追求自己的利益,比如获取营养等等。随着时间的推移,它们学会了如何相互沟通以及与其它细胞沟通以获取营养,并蓬勃发展,这种集体行为,如果你放大并观察大量神经元,我们称之为智能,它是追求自身利益的较小个体单位的涌现行为。那么市场中的智能是如何出现的呢?人们总是谈论市场,比如市场认为市场对这个做出了反应,等等,在某种程度上,市场比个体市场参与者更智能,个体成员的相互作用,他们追求自己的利益,沟通并与他人建立新的互动,在那里某种集体智能,比各部分的总和更大,出现了。嗯,我不确定这里发生了什么,抱歉,我们跳过了好几张幻灯片。好吧,让我们再试一次。那么公司中的智能是如何出现的呢?这个很有挑衅性,通过 Slack,对吧?人们在那里互动并追求自己的利益,随着时间的推移,公司有时会比公司里的个别员工更智能。所以,这引出了我的最后一个问题。那么计算系统中的通用智能是如何出现的呢?有很多关于 AGI 的讨论,以及越来越大的模型表现出超智能行为,但在我看来,通用智能实际上将通过多个实体(可以称它们为代理)的互动而出现,基本上是多个模型追求自己的目标,相互互动,并共同表现出某种我们可以称之为通用智能的东西。感谢 MCP,我们终于有了这个缺失的部分,它允许代理相互沟通,真正创建一个代理网格或代理网格,它们可以一起交谈。所以,大家好,我叫 Yan Churn。我是 Apify 的创始人,我将谈论代理经济的兴起,站在 MCP 的肩膀上。基本上是一个经济体,代理可以找到对手方进行互动,并从企业、工具或其他代理那里购买服务,比如 B2A 和 B2B,抱歉,以及 A2A。好的。在我开始之前,让我快速介绍一下 API。Apify 是一个拥有 5000 个工具(称为 actors)的市场。历史上,我们来自网络抓取行业,对吧?所以,这些 actors 大部分是数据提取工具,允许你从社交媒体、搜索引擎中获取数据,为构建数据管道的数据,为潜在客户生成数据等等。但也有其他工具,比如数据处理工具等等。总共有大约 5000 个,其中一些由 API 构建,一些由我们的创作者社区构建,他们实际上从中赚钱。所以,如果你愿意,这是一个软件创作者市场,对吧?所以 actors 是基于 Docker 的独立的软件组件,具有明确定义的输入和输出,对吧?基本上,它们代表了一种新的软件发布和发布方式,你知道,并集成到其他系统中,对吧?所以,例如,Google 地图抓取器是我们商店里一个相当受欢迎的 actor,它可以从 Google 地图提取数据,比 Google Places API 提供的更多数据,嗯,有 actor 的创建者描述,不同的统计数据等等,这是你从普通市场期望的,实际上,由于 actors 的构建方式,从其他系统集成 actors 非常容易,对吧?所以,例如,我们有 TypeScript、Python、OpenAPI、C common、CLI 的 SDK,你知道,我们可以从终端调用它们,这仅仅是因为它们是具有输入和输出的明确定义的软件单元。我们还集成了工作流自动化工具,比如 mag zapier,你知道,clay 和许多其他工具,以便真正轻松地从这些系统中调用 actors。但显然,现在我们也有 MCP 集成,这使得可以从 AI 代理或 AI 工作流中调用 actors。它的工作方式实际上是,代理只需要一个 API 密钥,或者你知道在 Apify 上的任何工作流账户,然后通过我们的 MCP 服务器,它就可以与我们市场上的任何一个 5000 个 actors 进行交互或调用。实际上,这只有在 MCP 的杀手级功能,即工具发现,才成为可能。实际上,目前支持它的客户端不多,但今天我看到 VS Code 添加了对它的支持。实际上,就在两天前,Code for Desktop 添加了对工具发现的支持。它的工作原理是,客户端连接到 MCP 服务器,并根据工作流动态发现要使用的工具以及与之交互的工具。我们有 5000 个工具,不可能通过 OpenAPI 发布所有这些工具,因为你知道上下文会太大了,而且你拥有的工具越多,结果就越有风险。所以我们真的想只按需提供工具,而这只有通过工具发现才有可能,我认为这才是真正使 MCP 成为与 OpenAPI 相比的巨大差异化因素。所以 MCP 很快就成为了代理交互的标准。这是 Google 趋势数据,显示 MCP 在与 OpenAPI 或 Google 的 A2A 相比,基本上主导着这个领域。实际上,我认为 MCP 已经成为了代理交互的标准。它变得如此受欢迎,以至于目前有很多不同的 MCP 服务器注册表,甚至 Master 的朋友们也创建了 MCP 服务器注册表,只是为了让它有意义。当然,Antropic 也在开发自己的注册表,我认为 Google 的 A2A 有一个基于 DNS 的协议,有一个众所周知的代理 JSON 的方式来发布服务。所以基本上,现在代理可以使用如此多的不同服务器。那么这是否意味着如此多的工具现在支持 MCP?那么这是否意味着代理可以自己发现并访问它们?不完全是,因为要使用这些服务,你的代理仍然需要这些服务的 API 令牌。所以,即使你使用 Zapier MCP,它提供了对他们市场上的 5000 个应用程序的访问,你仍然需要将这些单独的应用程序连接到你的服务,你知道,比如 GitHub 或 Slack 或任何东西。所以,Zapier 本身无法提供对第三方服务的访问,你仍然需要作为用户来促进这一点。所以这实际上意味着代理无法自己找到对手方或其他代理或工具进行交互。它们仍然依赖于构建系统的开发人员,你知道,他们会给这些代理访问不同工具的权限。如果这些代理要取代所有人和所有工作,它们需要能够找到服务进行交互。它们不能只是这样做,就像我们任何人都可以做到的基本事情,找到服务并购买它。所以,我认为,除非代理能够做到这一点,否则我们将无法达到这些代理系统的更高层次的智能和行为,基本上,如果代理无法购买服务,那么我们如何解决这个问题?所以,首先,一种方法是让代理自己订阅目标服务。基本上,代理可以拥有电子邮件,也许是信用卡,它们可以填写订阅流程,也许可以解决验证码,创建账户等等。但你看,这不太实用。我的意思是,你知道,它们可能还需要电话号码等等,而且服务通常需要一个真实的人在账户后面。所以,基本上这行不通。第二种解决方案是中央身份和支付提供商。现在有几家公司正在追求这一点,即有一个中央机构,你可以向其收费,然后代理可以使用它来购买服务并提供身份。例如,Vertifier Coinbase 现在正在推广他们的 X42 标准,我认为 Stripe 正在研究这个问题,万事达卡和维萨卡 2 也是。所以我认为这最终会发生,但启动新的支付系统非常复杂,因为你面临着市场上的鸡生蛋蛋生鸡问题。我认为 PayPal 必须每月支付 1 亿美元才能购买市场,而 70 年代推出信用卡是一个巨大的挑战,因为没有人接受这些卡,所以人们为什么要使用它们等等。所以我认为这会发生,但它将是一个漫长的过程。所以让我提供第三种方法,它通过一个集中的 MCP 服务市场,比如商店,你只需要一个 API 令牌或一个身份验证,一个账户就可以访问所有其他服务。基本上,它的工作方式是,发布这些工具、这些 actors 的开发人员,他们将他们的信用卡和账户提供给第三方服务,然后发布它,添加货币化。比如,你知道调用服务需要多少钱,然后他们基本上是服务的所有者,现在他们在我们的市场上发布它,突然它就对整个工具生态系统可用了。这样我们就可以快速扩展,甚至在目标服务不知道的情况下。所以,基本上,通过这种方式,actor 可以自己运行代码,或者包装外部 API,或者只是发布一个外部 MCP 服务器,因为 MCP 服务器实际上可以嵌套。你可以有一个父服务器提供嵌套 MCP 服务器的操作或工具。所以这是 FMCP 的另一个很酷的功能。如果你能促进支付和货币化,你就可以真正构建这种生态系统。所以 actors 向用户收费,然后它的开发者赚钱并支付外部服务的费用,任何人都可以发布这样的 actor,即使目标服务不知道。所以,是时候演示了。这不是现场演示,因为这里的互联网非常不稳定。所以你在这里看到的是 Cloud for Desktop,它有权访问 appy mcbp 服务器,现在有 18 个工具可用。我问旧金山 AI Engineer World Fair 的场地是什么?可以使用 actors 吗?所以你可以看到它搜索 actors,寻找一个可以回答这个问题的工具。它会找到一个叫做 rag web browser 的工具或 actor。所以它被调用了,它就像一个 Google 搜索,你知道,获取数据。所以基本上它会查询“场地是什么”等等,然后解析结果页面。所以我们可以看到它找到了 SF Marriott Maris,这似乎是正确的。现在让我们使用一个用于抓取 Twitter 的 actor。所以这个 actor 在上下文中不可用。所以代理不知道如何使用它。所以它在我们的商店里搜索 actors,并找到一个可以抓取 Twitter 的 actor。所以它调用了 add actor,这是一个向上下文中添加新工具的工具。实际上,Cloud 非常冗长地描述了它很多东西。实际上,Cloud Desktop 中还有一个小 bug,你需要禁用然后启用一个工具,这样工具列表才会刷新,然后工具才可用。我相信在下一个版本中会修复。现在让我们使用那个 actor 来获取 AI 工程师会议的最后一条推文。好的。所以它调用了 Apify 上的 actor。它可能知道来自网站的 Twitter 句柄。现在你可以看到它找到了结果,今早的最后一条推文是关于研讨会的。这似乎是正确的。那么现在呢?我们已经看到了如何使用我们商店中现有的工具。但是,比如说,我们的一家竞争对手,一家叫做 Browser Base 的公司。嘿 Paul,如果你在这里。他们肯定没有在我们的商店里发布 actor,但我们发布了。所以我们注册了 Browser Base 账户,添加了我们的 API 令牌,基本上发布了他们的 MCP 服务器在我们的商店里,实际上他们甚至不知道。现在任何人都可以通过 Apify 的生态系统使用 Browser Base 的 MCP。即使他们什么都不做或不知道。所以,现在让我们使用 Browser Base 在 AI 工程师网站上填写电子邮件订阅表单,填写电子邮件 yanappify.com,然后让我们看看会发生什么。实际上,我们将看到代理实际上会通过我们发布的 actor 调用 Browser Base 的 MCP,你知道,在我们的商店里,并在网上执行操作。实际上,通过这种方式,我们可以轻松地将大量现有的 MCP 服务器带到我们的商店,你知道,并快速扩展生态系统,而无需请求第三方合作。所以,这实际上是我们现在正在做的。我们想快速扩展这个市场。现在,它正在评估截图,寻找字段等等。你知道,最终它将能够完成表单并成功完成任务。我可以跳过这个来节省时间。代理需要一些时间来找到表单等等。但是,是的,它成功了。它完成了电子邮件订阅。通过这种方式,你基本上可以看到,我们可以将我们的 actor 生态系统插入到任何支持工具发现的 AI 代理中。对。好的。[音乐]所以,这意味着现在任何人都可以发布工具或代理到 Apify 商店并将其货币化,并立即获得所有已经集成 Apify 的 AI 客户端以及所有工具生态系统的访问权限。实际上,人们可以通过它赚钱,就像上个月我们支付了超过 25 万美元给我们的创作者一样,这个数字正在快速增长。你知道,总的来说,actors 每月产生超过一百五十万美元。现在,我们有大约 100 万月度访问者到整个生态系统。现在我们正处于扩展这个生态系统的过程中。所以,如果你正在寻找货币化你的工具或代理的方法,你知道,只是和我们谈谈,发布你的 actor 商店,并获得这个开发者生态系统和可见性的访问权限。当然,还有一些悬而未决的问题。所以,这种自主工具发现是否会提供真正的价值?我的意思是,任何构建代理系统的人都知道,确保系统按预期工作是很棘手的,即使它已经修复了。所以,如果我们添加了这些变量,比如,如果代理可以发现新工具,它真的会起作用吗?嗯,目前可能有点不稳定。我认为我们仍然相当早期,但随着模型的进步,我认为即使有了发现,代理也突然能够提供有价值且可靠的结果。所以这还有待观察,但我乐观地认为,随着 LMS 的改进,我们将能够实现工具发现真正提供价值。那么,代理如何信任工具或彼此呢?哦,抱歉。或者彼此呢?对吧?我们知道,你只与你信任的人互动。那么代理如何做到这一点呢?我们将拭目以待。自主代理交互能否实现 AGI?嗯,我们将拭目以待。非常感谢您的关注。请随意尝试。[掌声] mcp.fi.com。谢谢 Yan。这基本上结束了我们今天的 MCP 赛道。感谢大家的到来。再次,我叫 Henry。我是 Smidy 的创始人。很高兴在休息时间谈论 MCP。确保你也和演讲者交流。祝你在 AI 工程师会议上度过愉快的一天。再见。一切。嘿,嘿,嘿。[音乐][音乐]我不想去。工厂。嘿。热。热。[音乐]热。热。[音乐]嘿,嘿,嘿,嘿。下来。下来。嘿。嘿。嘿。热。热。我跳舞了。我感觉嘿。我感觉快乐。[音乐]嘿,[音乐]嘿,嘿。[音乐]嘿,嘿,嘿。[音乐]嘿,嘿,嘿。[音乐][音乐]我将是全部。嘿,嘿,嘿,嘿。[音乐][音乐]我他妈的。[音乐][音乐]我不想[音乐]去[音乐]知道。我不想这样做。[音乐]我接受。[音乐][音乐][音乐][音乐][音乐]每个人[音乐]都变成了热。热。[音乐]D。[音乐][音乐][音乐][音乐][音乐][音乐][音乐][音乐][音乐][音乐]嘿,嘿,[音乐]嘿。[音乐][音乐]我感觉嘿。[音乐][音乐][音乐]嘿。嘿。嘿。[音乐]嘿,嘿,嘿。[音乐][音乐]数据。嘿。[音乐]嘿。热。热。[音乐][音乐][音乐]女士们。女士们,先生们,请欢迎 Lorie [音乐] Voss 回到舞台上,她是 Llama Index 的开发者关系副总裁。大家好,欢迎回来。希望你们玩得开心。如果你们玩得开心,请让我听到你们的声音。太棒了。希望你们学到了很多东西。我个人在 MCP 赛道上待过,因为,这是我目前最喜欢的。我了解了动态工具发现。我了解到 VS Code 的 Insider 版本完全支持整个 MCP 规范,这对我个人来说非常令人兴奋。而且我了解到为什么 MCP 现在还不好,但它会变好的。在介绍下一位演讲者之前,我没有什么要说的。嗯,我确实问了我的同事们后台有没有笑话,有人说 Wi-Fi,这实际上是金句。我们有一些很棒的主旨演讲来结束今天,包括构建云规模的代理,以及 Windsurf 做到的无所不能,当然还有 Greg。
Brockman of OpenAI 谈论成为一名人工智能工程师意味着什么。嗯,但首先,请听 Stephen Chin 和 Andreas Colliger 就图谱 RAG 赛道发表一些闭幕感想。我们的下一位演讲者是图谱 RAG 赛道的策展人,他们将就代理图谱 RAG 发表讲话。请大家鼓掌欢迎 Neo4j 的开发者关系副总裁 Steven Chin 和 Neo4j 的 Genai 主管 Andreas [音乐] Kger 登上舞台。看看这热烈的掌声。好的。很高兴再次回到舞台上,见到大家。嗯,我们今天早上的主题演讲以一些关于 AGI 的激动人心的科幻梗图开始,并且有一个很棒的图谱 RAG 赛道。我最喜欢的部分是看到 Zep 和我们能够利用图谱代理记忆来实际改进模型在代理系统中响应的方式。你喜欢什么?你喜欢什么,康纳?我不得不说,代理记忆绝对是今天的重头戏。Zep 太棒了。事情。然后我们还吃了午餐和学习,这都是关于代理记忆的。对于图谱 RAG,令人惊叹的是,这就像是图谱 RAG 的大伞。它不仅仅是一件事,你可以做很多事情。在图谱 RAG 中,你可以做很多事情。所以,嗯,说到图谱 RAG,我们在早上的主题演讲中确实谈了很多,嗯,我遇到了很多与会者,我意识到我们从未真正详细解释过图谱 RAG 是什么。所以,嗯,我们认为在舞台上展示一个端到端的导入、构建知识图谱的演示会很棒。你们觉得呢?这会是个好主意吗?是的。是的。好的。那么,让我们快速看一下演示。所以,让我,让我只是拿到我的不,不,没有笔记本电脑。实际上不是。Wi-Fi 的笑话是我的。这就是为什么我们不做现场演示。抱歉,但它昨晚在他的酒店房间里是现场的。所以,请演示。好的。那么,随着这个开始,它起来了吗?哦,好的。所以,演示已经开始了。是的。好的。太棒了。这是我们在 Neo Forj 的 LLM 图谱构建器的演示。它允许您获取非结构化数据源,然后从中构建图谱,然后查询该图谱。现在,您看到它正在进行的只是从维基百科抓取一些网络来源。当然,正如我们今天早上看电影时所说,我只是从维基百科抓取所有这些不同电影的页面。我只是辛苦地抓取了什么?《2001太空漫游》、《黑客帝国》之类的内容。这就是我们今天早上在幻灯片上展示的内容。现在所有这些来源都已选定,我将说继续,然后直接从中创建一个图谱。图谱创建过程将经历任何非结构化数据都会发生的情况。首先,它将被分块。所有数据都将被分块。向量化也是如此。所有这些都会被存储。但然后会发生图谱部分。图谱部分是对于我们拥有的任何块,我们将找到人物、地点和事物,以及在这种情况下,电影、电影角色,以及电影主题,并将其转化为与非结构化数据连接的图谱。因此,我们从块、块中的向量到围绕它的结构化图谱,提供可查询的内容。好的,看起来已经全部完成了。快速旋转一下,这就是从那些非结构化数据中演变出来的美丽图谱。不错,对吧?是的。现在,如果我们在这里稍微放大一点,如果我能掌握好时机,对吧?所以,好的,有文档和块。我们将删除它们。但是中间那个美丽的紫色球体,如果我们稍微放大一点,我在这里看的一部电影是《终结者》。您还会看到《终结者》作为一个角色已经被找到并从图谱中、从非结构化数据中提取出来。所有那些紫色的节点只是主题。现在,语言模型在寻找主题方面有点过于热情,所以它在电影中找到了很多不同的主题。没关系。它还找到了维基百科文章中提到的其他电影。那些是其他绿色的气泡。看起来,我不知道您是否能看到,在右上方那个绿色的气泡,那是《银翼杀手》,它连接到另一个名为 Tech Noir 的节点,然后又连接到《终结者》。所以,至少通过查看图谱,您可以看出《终结者》和《银翼杀手》通过主题 Tech Noir 联系在一起。所以,如果我们现在切换到图谱聊天,我们可以看到这是一个内置的聊天,它将与该图谱对话。我将熟练地输入“银翼杀手”和“终结者”有什么共同的主题。祈祷并庆幸我录制了这一点。我们知道它会奏效。点点点。你必须留下点点点的悬念。好的。那里有主题 Tech Noir 和科幻小说将其联系起来,验证了图谱有效,并且图谱上的聊天以完全相同的方式工作。不错,对吧?是的。不,这太棒了。而且,嗯,我们这里还有一个大公告,关于人工智能工程师世界博览会。所以,嗯,我认为这是历史上的第一次,Neo Forj,信不信由你,我们仍然是一家初创公司。我们技术上是一家大型初创公司。是的,一家拥有 15、16 年历史的初创公司,但我们仍然是一家初创公司,提供初创公司计划来帮助其他初创公司利用我们的技术。所以,我们推出了新的 Neo Forj 初创公司计划,该计划即将推出。嗯,这是你们放上幻灯片的地方。嗯,你可以用 Neo Forj 建立你的人工智能初创公司。我们有一个二维码,你可以注册加入该计划,这将为你提供 Aura 积分,并免费使用我们在云端所做的一切。当然,我们的技术是开源的。你也可以在我们的社区版上自己动手。非常感谢您邀请我们参加主题演讲。谢谢大家。 [掌声] [音乐] 我们的下一位演讲者将教我们如何在云规模上构建代理。请大家鼓掌欢迎 AWS 的开发者关系副总裁 Antia Bar 登上舞台。 [音乐] 大家好。我很高兴能再次回到工程师世界博览会的舞台上,看到这个社区的成长真是太棒了。今天我将谈论如何在云规模上构建代理。现在,在亚马逊和 AWS,我们坚信我们所知的几乎所有客户体验都将被人工智能重塑。不仅仅是现有的体验,而且还将有我们现在能够借助人工智能代理构建的全新体验。我们不仅仅是在理论上谈论这个,对吧?我们都在这里一起构建未来。现在,我想先简单谈谈这在亚马逊内部作为一项业务意味着什么。在亚马逊,我们有超过 1000 个已构建或正在开发中的生成式人工智能应用程序,它们正在改变从我们如何预测库存到我们如何优化配送路线,再到客户如何购物以及他们如何与家居互动的一切。人工智能代理最雄心勃勃的部署之一就是对 Alexa 的彻底重新构想。我知道我们很多人都在等待这一刻很久了。所以,您即将看到的内容代表了我们所知的任何地方最大的服务、代理能力和 LLM 集成。所以,让我们快速看一下。看看我的风格。哦,你好。我喜欢分享这个视频,因为它真正展示了代理的规模化力量,并且可以快速了解一下这在数字方面意味着什么。我们现在在全球拥有超过 6 亿台 Alexa 设备,借助最新的 AI 进展,我们能够真正重新构想这种体验。Alexa Plus 通过数百个专业的专家系统运行。这就是 Alexa 团队称之为一组能力、API 和指令,以便为您完成特定任务。所有这些专家还协调跨越数万个合作伙伴服务和设备来完成工作,您刚刚在这个视频中瞥见了这一点。我们坚信未来将充满这些专业的代理,每个代理都有其独特的能力,并与其他 AI 代理无缝协作。现在,这个例子展示了在大规模下可能实现什么。但我们如何才能做到这一点?我们如何在大规模下运作?或者换句话说,我们如何从我们多年来构建的 Web 服务转向开发这些代理服务?幸运的是,许多基本原则保持不变,无论您是为数百万台设备构建,还是正在重新构想并将 AI 体验集成到您的企业应用程序中,或者您是一家初创公司,并且您真的只是想将您的想法提升到一个新的水平。现在,我想展示的另一个例子是我们构建的一个代理服务在 AWS。您可能听说过 Amazon Q developer,它是我们的代码助手,可以帮助您真正地贯穿整个软件开发生命周期。就在几个月前,我们为您的 CLI 发布了一个 Q developer 代理。它将代理聊天体验带入终端。它帮助您调试问题。您可以问它自然语言问题。它可以读取和写入文件,并真正帮助您提高日常在终端中的工作效率。所以,让我们快速看一下它的样子。这是 CLI 中的 Amazon Q,我将问一个好问题。在这种情况下,嘿,您对 Amazon Bedrock 有什么了解?CLI 与 MCP 集成。所以它所做的就是它实际上找到了一个工具,我们的 AWS 文档团队发布了一个 MCP 服务器。它正在连接到它。您看到工具正在进行,并且它正在请求权限。我授予它权限,然后它会返回一个基于官方 AWS 文档的响应。现在,我不想多谈 Q,但我确实想请您快速思考一下,AWS 内部团队构建和发布这个代理服务花了多长时间。让我们快速举手。谁认为开发和发布它花了两个月?有几只手。谁认为花了三个星期?好的,更多的人。您认为花了半年吗?几乎没有。哇,你们都很棒。我们在三周内就构建并发布了它。对我来说,这简直是疯狂的,对吧?就像速度,我们之前听过 AI 的模式。嗯,一位主题演讲嘉宾称之为执行,对吧?我认为三周非常令人印象深刻。现在,我们如何才能让团队,不仅仅是 AWS 内部的团队,而是普遍地,能够如此快速地构建和发布生产就绪的 AI 代理?我们在内部所做的,我们的团队,我们需要从根本上重新思考如何构建代理。我们所做的是开发了一种模型驱动的方法,它真正利用了当今 LLM 的强大功能以及那些在决策、规划、推理、采取行动方面能力更强的模型,让开发人员专注于他们的代理应该做什么,而不是确切地告诉它如何做。好消息是,我们也将其提供给所有人使用。所以,就在几周前,我们发布了 Strand Agents。它是一个开源的 Python SDK,您可以查看它,并用几行代码开始构建和运行 AI 代理。所以,让我快速展示一下它的样子。在我进去之前,先讲个有趣的笑话。如果您想知道为什么他们称之为 Trans Agents?嗯,这就是当你让 AI 自己选择名字时会发生什么。好的。背后的原因是,因为 AI 代理能够进行推理。它想出了像 DNA 的两股链一样,就像 DNA 的两股链一样,Strands Agents 将代理的两个核心部分连接在一起:模型和工具。它通过您真正依赖最先进的模型来推理、规划和采取行动来帮助您构建代理。您可以简单地从定义提示和代码中的工具开始,然后在本地进行测试,然后一旦准备好,就可以将其部署到云端,例如,这就是它的简单之处。再次,只需要几行代码,应该看起来很熟悉。您安装 strands agents,导入它,然后它附带预构建的工具,我稍后会详细介绍,基本上您只需将工具添加到您的代理中,然后您就可以开始提问或构建更复杂的流程。默认情况下,Strands Agents 与 Amazon Bedrock 集成作为模型提供商。所以您可以在这里使用 cloud 3.7 sonnet 检查模型配置。但当然,它不仅仅限于 AWS。您可以使用 strands agents 跨多个提供商。例如,我们与 Llama 集成。所以您可以开始在本地开发,进行测试。我们与 Tropic Edit 集成,与 MetaEdit 集成到 Llama API。您可以使用 OpenAI 模型和通过与 Light LLM 集成可用的任何其他提供商,当然您也可以开发自己的自定义模型提供商。现在,快速谈谈工具,正如我所说,Agents 附带了超过 20 个预构建的工具。所以,从简单的任务,比如嘿,我只想做一些文件操作,一些 API 调用,显然与 AWS 服务集成,但也有更复杂的用例,我只想强调其中几个。因此,有一整组集成的工具,包括内存和 RAG,其中一个名为 retrieve 的工具可以对知识库进行语义搜索。为了展示它的强大功能,我们在 AWS 内部有一个代理,它管理着超过 6000 个工具。6000 个工具是一个很难放入单个上下文窗口并让一个模型来决定的数字。所以我们所做的是将这些工具的描述放入知识库中,并使用这里的 retrieve 工具。因此,代理可以找到最相关的工具来处理手头的任务,并且只将这些工具拉回到模型上下文中,供模型决定使用哪个。所以这只是我们利用它的一个用例。Strands 还支持跨图像、视频和音频的多模态。有一个工具可以进行更多的思考和深入推理。它还附带预构建的工具来实现多代理工作流,无论是基于图的工作流还是协同工作的子代理群。现在,如果不提 MCP,就无法谈论工具,对吧?所以,显然我们将 MCP 原生集成到 Strands 中,所以您也可以使用它来连接到数千个可用的 MCP 服务器,并将它们作为工具提供给您的代理。对 A2A 的支持也即将推出,但让我们先开始谈谈 MCP。如果您已经在 AWS 上构建,请务必将此 GitHub 存储库加入书签。它是 AWSLAB/MCP。在这里,您可以找到一个非常长的列表,比您在此幻灯片上看到的要长得多,并且不断增长的 MCP 服务器实现,特别是如果您在 AWS 上工作和构建。现在,其中一个挑战源于这样一个事实:一旦我们都开始构建 MCP 服务器,我们就有了标准 IO,对吧?所以,它最初是为了帮助本地连接您的系统、您的客户端到相应的工具。这里有一个快速的例子,这对于我稍后将要展示的演示很重要。这只是一个 MCP 服务器的标准 IO 实现。对于大多数使用 MCP、使用 Python SDK、使用 fast MCP 的人来说,它看起来应该很熟悉。我所做的就是设置我的服务器,并使用装饰器来定义一个工具。在这种情况下,我的工具是掷骰子。我必须在这里放一张图片,因为我必须承认,我刚学到这个。房间里有 D&D 粉丝吗?万岁。好的,有几个。所以,你们都知道我在说什么。对于我们其他人来说,我刚学到有骰子,我这里有一个。我不确定相机是否能捕捉到。它只是这里幻灯片上的一个。一个骰子,例如,这个有 20 面。在 D&D 世界中,这是非常正常的,可以开始一个思考游戏。不要问我关于 D&D 的问题。我的同事 Mike Chambers,他要么在这里,要么在展厅里。他构建了演示,所以功劳归他,他可以回答所有 D&D 问题。好的,请记住这一点。我稍后会回来。现在,我们想做的是解耦并连接到远程 MCP 服务器,因为主题是扩展,对吧?在 AWS 世界中,做到这一点的方法就像将其部署为 Lambda 函数一样简单。我们现在可以使用流式 HTTP 来做到这一点。相同的概念也适用。您可以将 Lambda 函数放在 MCP 网关后面,就像以前一样,然后连接。因为我们关心安全和授权,在我将要展示的快速演示中,我使用的是一个授权器。您也可以为此部分插入 Cognto 框架。我还将在 DynamoB 表中存储会话数据。所以,让我们快速看一下这个演示。您看到的是我们开发的 MCP Lambda 处理程序。它在 GitHub 存储库上可用,这使得在 Lambda 中设置 MCP 服务器变得非常容易。这是一个非常简单的 Hello World 示例。工具再次使用工具装饰器定义,然后在 Lambda 处理程序函数中,您可以引用这里的调用函数,并将其传递给该 MCP 服务器。现在,如果我们查看服务器实现,并且在这里我们做得更多。您可以看到我们如何添加会话表支持,这是一个 Dynamob 表。我们正在定义工具。这是我刚才指出的掷骰子工具,但这次它被托管为 Lambda 函数。您可以在那里编写所有您想要的任何代码。然后在最后,就是那一行代码,基本上当您调用 Lambda 函数时,它会将此传递给 MCP 服务器。让我们部署它。同样,我们使用现有的工具来部署 Lambda 函数,就像以前一样。所以这个使用了 AWS SAM 来将其部署到云端。然后我们还将收到 API 网关 URL。现在,从客户端这里,我使用的是 strand agents,正如您所见,然后我使用的是 MCP 集成。我在这里传递我的 API 网关 URL 进行授权。我有一个 ब्यूरो 令牌。同样,这是一个简单的概念演示,但您可以构建更强大的集成。我正在调用 list tool,然后我们将这些工具传递给我的代理,正如我们之前所见。这次是 MCP 可用工具。然后,如果我们在这里运行它,我们可以快速看到它的实际效果,基本上我将要求它掷骰子。我们要求它掷一个 d20。所以,再次,20 面,它回来了。我们掷了什么?您可以看到工具的使用正在启动。我们掷了七。太棒了。所以这只是一个非常快速的例子。好消息是,一旦您进入 AWS 世界并在 Lambda 上工作,您就可以在 Lambda 上构建的所有内容都可以集成到那里。所以,基本上,您再次可以访问所有您可能已经在 AWS 上构建的伟大功能、能力和应用程序。现在,下一步是如何让代理相互通信,对吧?这可以说是下一个前沿。我们对目前出现的 MCP 等所有开放协议感到非常兴奋。例如,我们加入了指导委员会。我们是社区的积极参与者,贡献代码并帮助进一步发展 MCP。如果您想了解更多关于此的信息,这里有一个二维码。我们在我们的开源博客上有一个完整的博客系列。请随时查看,因为我们将继续帮助发展这些协议。那么,接下来是什么?我们都知道这只是一个开始,对吧?未来将会有更多。如果您有机会查看我同事 Danielle 昨天关于有用通用智能的演讲,我想引用她的一句话。她说,所有数字交互的原子单位将是代理调用。所以,我们可以想象一个未来,您可能只有您的个人代理,就像这样连接到代理商店,真正让代理一起为您完成任务。在座的有些人可能已经在构建这个了,对吧?所以,让我们一起构建这个未来。非常感谢您。查看其他会议。我的同事 Mike 将更深入地探讨掷骰子演示、所有 MCP 和 Strands。我的同事 Suman 明天还将深入探讨 Strands。就这样,非常感谢您。在展厅里找我们,然后拿你的 [掌声] [音乐] D20。我们的下一位演讲者将告诉我们 Aenticides 的未来。请大家鼓掌欢迎 Windsurf 产品主管 Kevin Hoe 登上舞台。 [音乐] 你好。你好。我们怎么样?好的。能量水平如何?我们很好。很好。是的。让我们开始吧。让我们开始吧。还有两个。还有两个。我叫 Kevin。我在 Windsurf 担任产品主管。我很高兴能回到这里。非常感谢 Swix 和 Ben。能回到 AI Engineer Worlds Fair 总是很荣幸。我们行业的当前速度令人难以置信。就像在海浪上放风筝一样,我们非常期待看到风将我们带往何方。一年前,我们还没有 Windfur 编辑器被全球数百万用户使用。希望这次的数量比上次多。有多少人听说过 Windsurf?有多少人使用过 Windsurf? [笑声] 好的数字。好的数字。我们必须改进。Windsurf 本身自去年 11 月推出以来,在过去 6 个月里发生了巨大的变化。我们放弃了 Kodium 这个名字,因为我们决定抓住这个新的浪潮,顺便说一句,这就是我们称之为我们下一代产品创新的方式。我们称它们为浪潮。如果您错过了,我们现在已经有 10 个浪潮了。一些关键的浪潮让我们非常兴奋,包括网络搜索、MCP 支持、自动生成记忆。哦,我本该做那个的。自动生成记忆、部署和并行代理等等。随着浪潮的不断增长,发现并将 Windsurf 集成到日常工作流程中的人数也在不断增加。至今,我们每天生成约 9000 万行代码。这相当于每分钟发送超过一千条消息。但今天不是关于增长。我不会坐在这里告诉你数字。我要告诉你原因。为什么人们对 Windsurf 编辑器有亲切感?我知道没有一家人工智能公司真的想透露它的秘密,但我不得不准备一些内容。所以今天,我将让你了解我们的一个秘密。我们的秘诀是人类和人工智能之间的共享时间线。这就是让人们觉得我们在读心术。现在,您作为一名软件工程师所做的一切都可以被视为这条共享时间线上的内容。所以,如果我们回溯到黑暗时代,这是自动补全之前,每个人都知道如何编写 for 循环。人工智能必须做所有事情。您必须编辑文件,您必须输入每一个字符。想象一下。但是,一旦 C-pilot、Codium 等服务推出,开发人员就非常兴奋了。他们开始看到一小部分代码是由 AI 编写的。我们开始抽象和加速我们为用户执行的小编辑、小操作的数量。在 2024 年末,随着 Windsor 的代理的出现和 Windsorf 编辑器的推出,我们看到我们可以为用户做更多的事情。我们开始能够一次编辑多个文件,跨数千个文件进行后台研究,并直接在编辑器中执行终端命令。但在 Windsurf,我们的业务是试图改变软件的创建方式。这意味着时间线实际上要复杂一些。它需要处理 IDE 之外的操作。考虑到开发人员的工作流程有多少发生在 IDE 之外,这对 Windsurf 意味着什么?首先,Windsurf 将无处不在。具体来说,Windsurf 需要能够读取和摄取开发人员使用的每个来源的上下文。如果我们放大并思考是什么让你们所有软件工程师都取得成功,那么有几个不同的类别。首先是与编码相关的读取文件、运行终端命令、查看历史记录,甚至您知道的编辑器中打开的选项卡。所有这些都为如何生成正确的代码提供了信息。但它不止于此。有外部来源。比如去 GitHub 查看过去的提交历史,可能查看一个正在做类似您即将实现的功能的 PR,进行在线搜索、网络搜索、查看文档。然后是第三类,这里有点意思。它被称为元学习。这是区分初级工程师、高级工程师和资深工程师的想法。这些是组织最佳实践、工程偏好,所有这些都编码在什么构成好代码中。所以,如果我们考虑一下这在实践中意味着什么,假设我们要构建一个数据可视化仪表板上的新页面。让我们一步一步地进行。所以,首先您可能会在 Slack 中开始,就像所有好事都始于 Slack 一样。您将通过查看大量客户请求来建立上下文。也许您会有一些内部消息。您将收集上下文并开始计划。这意味着您将在 Google Docs 中。您将编写设计文档,可能还会处理一些基础设施设计。您将在 Jira 中跟踪工单。然后您可能会有一个设计师,他实际上在 Figma 中并行工作,整理所有这些材料。最后,有趣的部分,或者至少是我最喜欢的部分,就是实际编写代码。希望您使用 Windsurf 之类的工具。但之后您还没有完成。一旦您的代码完成,您仍然需要打开 PR。您需要获得审查。您需要将其合并到 main。您需要部署 SEO 分析。等等等等。这就是我们构建我们所构建的原因。因为我们知道,对您来说,我们能够从您的 Google Docs 中获取上下文,读取您的 Figma 文件,并一键连接到任何 MCP 服务,以便您可以访问 Notion、Linear、Stripe 等无数其他信息中的信息,这非常重要。在过去的十个浪潮中,我们一直致力于确保 Windsurf 无处不在。但我们也知道这还不够。我们知道仅仅阅读是不够的。我们需要能够做和写所有事情。我们需要为您做所有事情。因此,人工智能必须在比编码表面更广泛的表面上采取行动,才能完成人类软件工程师所做的事情。所以,这不仅仅是编写代码。这包括与第三方服务交互、配置 API 密钥、编写设计文档、PRD、线框图、测试,等等等等。所以,在过去的六个月里,我们一直致力于如何做所有事情。如果我们回到这个构建新 Web 应用程序的具体例子,我们从哪里开始?我们开始运行与代码库相关的终端命令。这是我们在 Windsurf 推出时就发布的功能。我们在这里能做的很酷之处在于,我们可以智能地决定要自动运行哪些命令,以及哪些命令我们要等待并征求明确的用户批准。接下来,您将打开 Windsurf 浏览器预览,这允许您从中进行迭代。它允许您与代理进行可视化迭代,以便 Windsurf 可以像您一样控制 Chrome。检查 DOM 元素,查看您的 JS 控制台,能够做 Web 开发人员会做的事情。所以,现在可以说我们的应用程序代码已完成。我们将使用 GitHub MCP 打开一个拉取请求,并可以使用您其他 PR 的上下文来告知描述和测试计划。代码审查仍然是任何软件公司的必要组成部分。因此,我们推出了 Windsurf 审查,它可以自动留下评论并异步建议更改,以便您可以确信进入 main 的代码已准备好生产。现在您的代码已合并,您将希望能够部署。因此,我们还发布了一个一键式服务到 Netlify,以便您可以使用 Windsurf 的自定义工具集成,只需一键操作,代理就会将您拥有的内容部署到实时 Web。因此,正如您所看到的,我们确实构建了 Windsurf 读取您能读取的一切,并完成软件工程师能做的一切或几乎所有事情的能力。那么您可能会问,接下来是什么?Windinsurf 将始终在线,为您工作,即使您不知道它,这只是不可避免的。我们在 2024 年推出 Windsurf 时就开创了代理式人机同步工作流。如今,时间线是 80% 到 90% 的代理,10% 到 20% 的人类。但我们正在努力构建一个能够实现 99% 代理和 1% 人类的未来。我们只想征求用户的最终批准。随着越来越多的时间线和工作流由 AI 提供支持,Windsurf 可以随时为您工作。不仅在您键入和使用自动补全和制表符时,而且在后台,在您完全并行工作时进行研究,只要求您批准。我们希望构建一个您可以随时编码的未来。您可以随时编写软件。这包括您的床。这包括您在公共汽车上的马桶。语音激活的 Alexa,好的,我们将把 GPT、Gemini 投入到这个时间线问题中,但从那里,我们去哪里?我们如何改进?特别是,WindSurf 如何解决时间线问题?如果我们退一步看,这看起来不像我们在编写代码了。这看起来比普通的竞争性编程问题复杂得多。Windsurf 希望彻底改变软件的构建方式。它不仅仅是如何编写代码。我们正在解决比代码更广泛的任务集。虽然行业高度关注 SWEBench 等事物,但我们知道未来不会是 token 进 token 出。软件工程工作流将比这混乱得多。这意味着您必须能够在工作流程中间接手任务。您必须能够在提交时处理混乱的代码库状态,并且您必须使用 IDE 之外的工具。因此,我们必须能够摄取并在这个时间线上执行广泛的动作,以使我们的用户保持流畅。我们必须能够打开 PR。我们需要知道何时访问分析。我们需要知道如何自己调试您的 CI/CD。这个问题开始看起来与人们评估的问题非常不同。由于我们有自己的时间线表示,我们需要一个不同的系统来处理这些类型的操作,而不是现成的 Frontier 模型所能提供的。那么我们在这里要去哪里?实现这一点的是我们全新的软件工程模型,称为 1。我们自己意识到我们可以梦想更大,并构建我们能拥有的最好的软件工程模型。Suite 1 经过训练,可以处理软件工程工作流,而不仅仅是纯粹的代码生成。我们使用两个主要的离线评估基准。第一个是端到端任务基准。这基本上是处理拉取请求。这是说,给定一个意图,给定代码库的起点,我们如何到达终点并通过所有单元测试?熟悉的配对。第二个是它变得更有趣的地方。这被称为对话式套件任务基准。这是模型在被置于现有用户对话或部分完成的任务中时能够提供多大帮助。因此,这实际上非常适合 Windsurf 范式,对吧?因为我们不是从头到尾干净利落地进行。我们正在协助您在中途提供帮助。因此,它产生了一个混合分数,包括有用性、效率和正确性,并真正测试了模型无缝集成到 Windsurf 工作方式中的能力。这种初步表现让我们对 SU1 的架构充满信心,特别是我们如何能够针对软件工程工作流进行训练。我们能够在成本的一小部分和一支规模小得多的团队中实现接近 Frontier 模型的结果。Windsurf 最强大的优势之一当然是社区的价值。真正的软件工程师在做真正的工作,提供真正的反馈。我们发现,SUI 1,它在模型的小下拉菜单中。它与所有其他 Frontier 模型并列。人们选择 SU1 是因为它认识到他们是如何工作的,不一定是如何生成代码,并且它的贡献频率甚至高于 3.7 和 3.5 等模型。Windsurf 在 Frontier 构建,以便我们的用户能够利用最好的技术构建更多内容。我们从失败模式中学习,以便从中迭代。这开始看起来是什么?我敢说,一个数据飞轮。我们提供最好的产品。开发人员和非开发人员使用该产品来提升技能,作为技能乘数或技能赋能者。然后用户帮助我们找到 Frontier。他们使用点赞、点踩、接受、拒绝等功能,不断告知我们,不是关于 Sweet Bench Frontier 是什么,而是软件工程 Frontier 是什么。缺少哪些工具?哪些工作流程是重复的?产品在哪些方面不足?我们利用这些见解,在 Frontier 上进行构建。我们训练一个更好的模型。我们构建更多工具。我们改进我们的代理工具。我们改进我们的记忆、我们的检查点,目标是无处不在,无所不能。我们将重复这个周期。我们将发货,找到 Frontier,在边缘构建,然后重复。让我个人感到兴奋的是,Sweet One 确实是这个的实际应用。我们有一个非常小的团队,资源明显少于大公司,但我们能够用 Sweet One 实现接近 Frontier 模型质量的结果。更重要的是,这确实展示了在 2025 年构建 AI 产品意味着什么。它要求模型、数据和应用程序的和谐统一,其中应用程序实际上是在模仿您想在模型中复制的用户行为。这就是 Windsurf 将如何无处不在,同时做所有事情。非常感谢您的聆听。 [掌声] 我不会给您任何承诺,但有人赚钱了。嗯,但说真的,非常感谢您的聆听。我想确保这里的每一位工程师都使用最好的工具。所以,请今天试试 Winer。我们也在招聘多个岗位的员工。我们楼下有一个展位,所以请加入我们。帮助我们实现这个未来。谢谢。 [掌声] 好的,各位。为我们迄今为止的所有主题演讲者鼓掌。我今天从主题演讲中学到了很多。我了解到 Alexa 可以跟踪我的狗,这太棒了,因为我的狗是个逃跑者。嗯,而且您可以将代理插入 Lambda,这确实非常棒。我绝对想这样做。嗯,我们还了解了 Windsurf 的巨大增长。嗯,当他问谁在使用 Windsurf 时,我不在房间里。正在使用 Windsorf 的人举手。那些使用 Cursor 的人呢?哇。好的。嗯,谁在使用 VS Code 的任何版本?好的。嗯,Zed 呢?少数,骄傲的。嗯,还有什么?谁在使用其他东西?好的。我们接下来的对话是与 Greg Brockman,前 Stripe 首席技术官,OpenAI 的联合创始人,以及现任 OpenAI 的总裁。嗯,关于 Greg 的一个有趣事实是,他完全是自学人工智能的。嗯,他没有正式的背景。嗯,没有正式的背景,他从免费在线资源自学,并写博客分享经验以鼓励其他人,我认为这确实鼓舞人心。就像我自学 Web 开发一样。嗯,这是互联网的一个有趣的基本方面,你可以自学。所以,嗯,在不耽误时间的情况下,当他们安排椅子时,请欢迎一位火炉旁的谈话嘉宾,独一无二的 Swixs 和 Greg Brockman。 [音乐] 嗯,你好。你好。麦克风对您来说工作正常吗?检查,检查,检查。一,二,三。好的。今天第一个硬技术问题解决了。是的。是的。嗯,Wi-Fi 是另一个。嗯,这里的每个人都知道。嗯,所以,Greg,欢迎来到 AI Engineer。非常感谢您抽出时间。谢谢您的邀请。嗯,我们将按时间顺序进行,并且,嗯,很多人发送了问题,我将它们为您分组了。所以,我们将直接开始。U,嗯,所以,您,您,嗯,我做了一些深入的研究。嗯,您从深度研究开始。嗯,我称之为 Peep 研究,因为我们在研究一个人。嗯,您小时候确实参加过戏剧、化学和数学,并且您写了一个日历调度应用程序,这就是您开始编程的原因。但是,是什么真正激发了您对编程的热爱?就像,为什么您是那个编程的人?嗯,有趣的是,我长大后以为自己会成为一名数学家。是的。您知道,我读过像 Gowa 和 Gaus 这样的人,您知道,他们工作的时间跨度是 100 到 200 到 300 年,我当时想,这就是我想做的。如果我提出的任何东西在我有生之年得到使用,那就不够长远。不够抽象。嗯,高中毕业后我正在写一本化学教科书,寄给了一位做过类似数学工作的朋友,他说:“没有人会出版这个。你可以自己出版。”我说:“啊,听起来工作量很大,资本很大,或者你可以做一个网站。”我说:“好吧,我得学怎么做一个网站。”所以,我真的去 W3 Schools 做了他们的 PHP 教程。有多少人还记得 W3 Schools?是的,相当多的人举手。嗯,我记得我做的第一件事是一个表格排序小部件,对吧?我脑子里有一个画面,它会是什么样子。我记得当我点击列并根据该列进行排序的那一刻,这正是我想要的。我当时想,那太神奇了,对吧?我当时想,这太酷了。因为数学的问题在于,你认真思考一个问题,你理解它,你用一种晦涩的方式写下来,你称之为证明。然后,可能只有三个人会关心,对吧?但在编程中,你用一种晦涩的方式写下来,我们称之为程序。然后,也许只有三个人会读这个程序并关心代码。但每个人都受益。没有人需要理解细节。你脑海中的那个东西,它是真实的。它就在世界上。我当时想,那就是我想做的事。忘掉那个百年时间跨度吧。我只想建造。嗯,您就是想建造。嗯,这是。所以,您做得如此出色,以至于您在大学期间不知何故被 Stripe 发送了冷邮件。没错。嗯,这个故事是什么?首先,他们是怎么找到您的,以及是什么说服您辍学加入他们的?嗯,所以我和 Stripe 的所有人都有共同的朋友,您知道,当时只有三个人组成的巨头公司。嗯,嗯,他们问了,你知道,通常他们会问哈佛大学的人,你知道,校园里的人,他们可能会招募谁,我的名字被提到了。他们也问了麻省理工学院的人,因为我实际上已经退学了,我曾经在哈佛,后来退学去了麻省理工学院,所以我的优势是,嗯,我猜,你知道,在两边都获得了赞成票。嗯,但我记得当我见到 Patrick 时,他刚飞过来。当时是深夜,你知道,正在下雨。嗯,我出现了,我们开始谈论代码,对吧?这就像一个时刻,你当时想,这就是我想与之合作并一直在寻找的那种人。嗯,所以我最终从麻省理工学院退学了。嗯,嗯,你知道,飞了过来,一直在这里。是的。是的。嗯,我们有一些,你知道,正如您所知,我们有一些嘉宾问题穿插其中。嗯,所以,来自一个叫 Matthew Brockman 的人的问题。我听说过他。Julius AI 的 CTO。您认为我们的父母什么时候会放弃您完成学业的梦想?也许,也许哈佛或 UND 会接纳您。是的。嗯,永远不会。嗯,这绝对是,你知道,我认为这是,无论你要去哪里,如果你告诉你的父母你要离开哈佛,那将是困难的。嗯,你告诉你的父母你完全退学了,那将是困难的。嗯,我认为,你知道,实际上,嗯,值得称赞的是,你知道,我认为即使这很困难,嗯,他们说,你知道,我们信任你,就像你一定能看到一些东西,并从你所在的位置理解一些事情,而我们从半个国家之外很难看到。嗯,但是的,我认为,你知道,正如,嗯,Stripe,嗯,并且度过了愉快的时光,并且实际上学到了东西,嗯,并且事实证明它是一家真正的公司,而不仅仅是,嗯,嗯,只是辍学什么都没做。我认为,嗯,他们,他们真的,嗯,你知道,已经适应了。所以,嗯,我认为他们为你感到非常自豪。是的,绝对。所以您从 4 人到 250 人一直在 Stripe,最终成为第一任 CTO。嗯,我最近发现的一件事,Hacker News 可能不知道的是,Apparently 的 `call` 安装只发生了几次。在 Stripe 并不是这样。是这样吗?我认为是真的。嗯,是的,这是,这是,你知道,就像,就像它幸存下来一样,嗯,它是城市传说,因为它太酷了。就像你,如此以客户为中心。总之,那么,人们还对早期 Stripe 存在哪些误解?就像,为什么我们要澄清一下?是的,嗯,我认为人们不理解它有多难,对吧?这就像,嗯,就像我记得,嗯,你知道,首先,我们经常做的事情是,我们将所有客户添加到 G-Chat 中。所以,我们与他们保持持续联系是很普遍的。所以,即使你不是真的坐在他们旁边,你也做着最接近的事情。嗯,但我记得,嗯,就像一个,你知道,有一天我们意识到,你知道,我们使用的支付后端,它根本无法扩展。嗯,我们绝对需要使用 Wells Fargo,并且我们完成了交易,但现在我们需要进行技术集成。他们说,好吧,这个技术集成需要大约 9 个月,因为需要这么长时间。我们说,这太疯狂了。就像
你是一家初创公司。我们不能坐等九个月来完成这件事。嗯,所以在 24 小时内,我们完成了它,基本上把它当作一个大学的习题集来处理。嗯,你知道,我实现了所有东西。约翰在测试脚本的顶部工作,测试所有东西,并说“这坏了”。达里尔从底部开始,一路向上。嗯,早上我们和认证人员一起进行了沟通,我们发送了一些测试消息,出现了一个错误,那个人说“好吧,下周见”。嗯,因为那是他们所有客户的运作方式,对吧?有一个错误,你知道,很清楚你需要把它发送给你的开发团队,而我们则说“不,不,不,系统里一定有什么故障”,而帕特里克只是在和她说话,让她保持通话,疯狂地,我当时正在编辑代码,所以我们进行了五轮,嗯,我们实际上失败了,但幸运的是,她很友善,同意推迟两个小时,嗯,然后我们就通过了。所以你意识到,那本来是正常开发工作六周的量,你那一刻就完成了,因为你没有仅仅接受其他组织运作方式的任意限制。是的。是的。你认为大多数工作中还有很多这样的机会吗?嗯,你如何建议其他人变得如此快速,或者说削减这么多周期?是的。我的意思是,我认为,如果从第一性原理思考,你可以找到需要缓慢进行或按常规进行的地方,或者无论那些东西是什么,它们都存在,对吧?“别担心限制, just do the thing” 的普遍原则。嗯,我认为那不是百分之百正确的。我认为这实际上是关于映射到哪里存在不必要的开销,这些开销是由于不再适用、不适用于你特定情况的限制而存在的。而且我认为,在人工智能正在极大地加速生产力的当今世界,这一点尤其如此。是的。随便发一个 CodeX。为什么不呢,对吧?嗯,关于你“开放前”生活的一件事,最后一件事是独立学习。我只是,我发现它只是高中时期的一个反复出现的主题。你做了回力球场。我做了。嗯,还有你的休假。所以你一直在重复这样做。是什么让独立学习有效?嗯,我认为很多人在这方面做得不好,并且会浪费一年。你做了什么让它如此有效?嗯,我认为这是我成长过程中一个关键的部分。嗯,你知道,在六年级,我父亲教我代数,在七年级,我第一次进入高中,你选择了高级数学预代数,我们去了老师那里,问他能不能跳过这个,直接进入八年级,八年级课程,老师带着一种居高临下的态度看着我和我妈妈说:“每个家长都认为自己的孩子很特别。”嗯,在一个月的老师课后,你知道,我根本没注意,只是在后面玩计算器游戏,她会试图难倒我,你知道,叫我回答白板上的问题,而我都会答对。她说:“好吧,好吧。嗯,你的孩子应该在明年。”嗯,但那时我八年级,我的中学已经没有数学了。我没有车,所以我不得不上在线课程。在那一年里,我完成了三年高中数学。所以,我认为对我来说,很多时候是关于突然这些,如果你对某件事感到兴奋,你独立地想做,你也可以打破那里的限制。嗯,你可以在一年内完成三年的数学,然后它会累积,因为第二年我在我的高中完成了数学,然后整个十年级、十一年级、十二年级,我没有更多的数学了,所以我有一辆车,我能够去北达科他大学,在那里上任何我想上的课程。所以,我认为那种复利效应一直持续到学习编程。然后,我认为我学习编程的方式很大程度上是自学,通过构建事物并在世界上体验事物。所以,我认为我想建议的是,如果你有机会去探索,并且你有热情,你实际上很享受它,那就深入下去,对吧?顺便说一句,它并不总是那么有趣,对吧?我认为很容易感到有点,你知道,有点无聊,但如果你只是克服了这些障碍,我认为回报是值得的。是的。你也自学了机器学习,那是一段你人生的重要时期。嗯,有什么特别的亮点吗?我听说你曾经和杰夫·辛顿谈过。我确实和杰夫·辛顿谈过。是的。是的。这有帮助吗?或者最有用的是什么?你成了一名机器学习从业者?嗯,所以,所以当我开始的时候,你知道,我一直在 Stripe。我读了 Hacker News 上关于深度学习的帖子,是的,感觉就像,你知道,每天都有关于深度学习的帖子,那是 2013 年、2014 年,我当时想,“什么是深度学习?”我认识这个领域的人只有一个,所以我跟他们谈了,他们把我介绍给了一些人,然后他们又介绍给了更多人。让我惊讶的是,我不断被介绍给我大学里很多最聪明的聪明朋友,我想,“这很有趣。这些人最终都进入了这个领域,到底是怎么回事?”我开始意识到,有什么东西是真的在建立,在发展,人们真的在让这些系统做以前计算机无法做到的实质性的新事情。我想,“那就是那个东西。”嗯,所以在我离开 Stripe 后,你知道,我知道我想在人工智能领域做些什么。创办一家人工智能公司,但我不知道如何做出贡献,我的技能会有什么用。嗯,我在纽约,我想,“你知道吗,我会组装一个 GPU rig,看看我是否能参加一些 Kaggle 竞赛。”所以我去了 Newegg,就像,你知道,买了一些 Titan X 卡。嗯,组装这台机器真的很有趣,你知道。你可以在 2015 年找到一些推文,当我启动它时,你看到所有这些绿色和所有风扇都在转动,我想,“这才是电脑应该有的样子。”嗯,我认为在场的许多人也有同样的经历。嗯,太棒了。那么,是什么让你相信 AGI 是可能的?就像你曾经有过一段对它感到失望的时期。你写过,你试图写一个聊天机器人。你没有成功。但是什么让你全力以赴的?是的。嗯,所以,你知道,我旅程的一部分是阅读艾伦·图灵 1950 年的论文《计算机器与智能》。这是图灵测试论文。有多少人读过?比 W3Schools 的人数少。嗯,但同样重要,值得一读。嗯,让我着迷的是,他在开头就提出了,好吧,图灵测试,这个想法就是机器是否思考?它是否智能?你可以说它是智能的,如果你知道人类无法区分与它交谈和与人交谈。好吧。但真正没有深入流行文化,但对我来说却如此惊人的是,他说:“好吧,你将如何编写一个答案?你永远无法写下所有规则。但如果你能构建一个像人类孩子一样学习的孩子机器,然后你只需要施加奖励和惩罚,砰,它就能通过测试。”我想,“那就是我们必须构建的那种技术,因为作为一个程序员,你必须理解一切。你必须理解解决问题的规则。但如果机器能理解你本人无法理解的事情并解决问题呢?这感觉是根本性的,对吧?这感觉就像你如何真正解决对人类重要的问题。嗯,这是,你知道,大约 2008 年我读到这个,然后我去找我的教授,他是一位 NLP 教授,我问他是否可以和他一起做一些研究,他说:“是的,这里有一些解析树。”我想,“好吧,这不是图灵所说的。”是的。嗯,这是像 WordNet 之类的东西。确切地说。所以,就像你,你知道,绝对有点悲伤的低谷。嗯,但深度学习,深度学习的魔力在于,你知道,它真的在 2012 年开始显示出有希望的结果,与 AlexNet 一起,对吧?它在 ImageNet 竞赛中彻底击败了所有人。所以突然之间,你就有了这个通用的学习机器。你知道,它里面有一点卷积的先验知识,但它比 40 年的计算机视觉研究要好,对吧?人们试图尽可能地写下所有规则。然后人们说:“好吧,它在视觉方面有效,但它永远不会在我的领域有效。它永远不会在机器翻译中有效,永远不会在 NLP 中有效,永远不会在其他方面有效。”突然之间,它在所有这些领域都变得最好。突然之间,这些部门之间的墙壁正在被推倒,你想,“那就是图灵所说的。”所以,我认为对我来说,仅仅看到这项技术的类型签名,顺便说一句,这项技术并不新,对吧?神经网络真的就像,如果你回去读一下 McCulla Pitts 的神经元论文,大约在 1943 年……我告诉人们,我告诉他们给人们布置作业。好吧。是的,给你。是的。课程安排。嗯,那里的图像,它们看起来就像你现在看到的图像,就像你知道的神经元层之类的东西。所以你只是意识到我们正在做的事情有一些深刻的根本性。嗯,你可以找到这些,你可以找到 1990 年代的一篇论文,谈论导致深度学习寒冬的原因,是这些神经网络的人。他们没有新想法。他们只想建造更大的计算机。我想,“是的,这就是我们需要做的。”嗯,所以,我认为所有这些加在一起,感觉就像我们某种程度上在延续这场 70 年的历史浪潮。嗯,在很多方面,嗯,你知道,整个计算行业一直在努力建立一个点,你可以拥有能够执行我们刚刚开始触及的解决新问题,人类无法解决的问题,能够协助我们日常生活的机器,不必,你知道,用我们的肉棒打字,而是拥有一个你可以像人一样与之互动的东西,机器离你更近,而不是你离它更近,并且必须学习汇编语言或,你知道,任何东西。嗯,所以对我来说,感觉所有因素都到位了,现在我们只需要建造。是的。嗯,我喜欢你一直回到的那个持续的主题。我们只需要建造。嗯,所以在 2022 年,你写道,是时候成为一名 ML 工程师了。实际上,我有一个私人朋友,他读了那篇文章,给你发了冷邮件,然后加入了 OpenAI,等等。你说过,伟大的工程师能够为未来的进步做出与伟大研究人员同等水平的贡献。今天仍然如此吗?你知道,我认为很多工程师看着那些赚取数百万美元的研究人员,他们会想,“我如何做出同样多的贡献?”你知道,我认为这是绝对的,如果不是更真实的话。嗯,我认为,如果你看看自 2012 年以来深度学习研究的各个阶段,我认为一开始确实是,你知道,这有点像我开始 OpenAI 时所期望的,你知道,就像研究科学家获得了博士学位,然后去构思想法并进行测试。你知道,需要做一些工程工作。如果你看看 AlexNet 本身,你知道,它本质上是关于在 GPU 上实现快速卷积内核的工程。嗯,嗯,一个有趣的趣事是,当时在 Alex Krizhevsky 的实验室里的人们,实际上觉得他很糟糕,因为他们说:“他有一些快速的卷积内核,用于一些不那么重要的图像数据集。”但你知道,Ilya 说:“嗯,显然我们只需要把它应用到 ImageNet。这会很棒,对吧?”所以,这是伟大的工程与想法的结合,对吧?那就是让魔法发挥作用的东西。嗯,嗯,我认为仍然真实,甚至更真实的是,好的,那么所需的工程工作,现在不仅仅是构建一些内核,而是构建一个系统。让我们实际扩展到 100,000 个 GPU。让我们实际,你知道, sort of do this crazy RL system that orchestrates things in all sorts of ways. 嗯,所以这个想法,如果你没有这个想法,你就死定了。没什么可做的。但如果你没有工程能力,那个想法就不会实现并看到光明。所以你需要两者和谐地结合。是的。我认为 Ilya 和 Alex 的关系确实是 OpenAI 现在研究与工程合作理念的象征。没错。是的。是的。如果你看看 OpenAI 的运作方式,我认为从一开始我们就有一种理念,即工程和研究都应该受到重视,并且作为合作伙伴一起工作。嗯,我认为这是我们,你知道,我们每天都在努力的事情。是的。我明确的目标是尝试在这个领域投掷一些曲线球。嗯,就工程和研究之间的关系而言,OpenAI 在早期做错了什么,而你们现在做得很好?嗯,我认为工程和研究之间的关系,我认为你永远无法完全解决它,对吧?你只是解决了当前级别的问题,然后你继续处理下一个更复杂的级别。我注意到,我们遇到的问题实际上与每个其他实验室遇到的问题相同,而且只是,你知道,要么我们进展更快,要么就是它有一个稍微不同的变体。所以,我认为这有一些深刻的根本性。嗯,所以,所以一开始,我能清楚地看到来自工程界的人,来自研究界的人,对系统约束的看法非常不同。所以作为一个工程师,你会想,“嘿,如果我有一个接口,你不应该关心接口后面是什么。我们已经同意了接口,我可以按照我想要的方式实现它。”而如果你是一个研究人员,你会想,“如果系统中有任何错误,我只会得到性能略有下降。我不会得到异常,我不会得到指示在哪里。”所以,我负责理解一切。接口不重要,除非它们真的非常稳固,而且我永远不必考虑它们,这是一个相当高的门槛。那么,我实际上要负责这段代码,这会引起摩擦,对吧?因为那么你如何真正一起工作?我看到一个项目很早就,你知道,来自工程背景的人会写代码,然后会就每一行代码进行激烈的辩论,我当时就想,“这永远不会进展,它会非常慢。”相反,我们最终的进展方式是,嗯,我实际上直接处理了这个问题,我提出了大约五种想法。研究方面的人会说:“这四个是坏的。”我想,“太好了,我想要的正是这个。”所以,我认为我们真正认识到的价值是至关重要的,我告诉来自工程界来到 OpenAI 的人,是技术上的谦逊,对吧?就像你进来是因为你拥有重要的技能,但这是一个与,你知道,像传统网络初创公司完全不同的环境。弄清楚何时适用这些直觉,以及何时将它们留在门外,这非常困难。所以最重要的事情是,真正地倾听,并假设你遗漏了一些东西,直到你深刻理解原因。然后在那时,太好了,做出改变,就像改变架构,改变抽象。嗯,但我认为那种真正真正阅读、倾听和理解的谦逊方法,我认为这是一个真正的关键决定因素。是的。太棒了。嗯,我们将讲述一些关于 OpenAI 最近发布的故事,最精彩的部分。嗯,所以有趣的一件事就是规模化。一切都在不同数量级上崩溃。所以,当 ChatGPT 发布时,你在 5 天内获得了 100 万用户。今年,当 DALL-E 3 发布时,你在 5 天内获得了 1 亿用户。这两个时期相比如何?嗯,它们在很多方面都非常相似。你知道,ChatGPT 的事情,它本应是一个低调的研究预览,我们非常谨慎地发布了它,然后突然一切都崩溃了,我们,你知道,我们确实预料到 ChatGPT 会是一个非常受欢迎的东西,但我们认为 GPT-4 是必需的。内部也有。所以你并不印象深刻。确切地说。对。这是这个领域的另一件事,你更新得如此之快,对吧?就像你看到魔法,然后你想,“这是我见过的最神奇的东西。”然后你想,“好吧,为什么它不能,你知道,为什么它不能为我合并 10 个 PR?”确切地说。嗯,图像生成时刻也非常相似,因为它非常非常受欢迎,而且它以病毒式传播的方式传播,你知道,数字简直是超乎想象。所以,我们在内部做了一些我们真的非常努力避免的事情,那就是我们为这两个发布都从研究中抽调了一些计算资源,因为那是抵押未来,为了让系统正常工作。但如果你真的能够交付并跟上需求,那么当然人们就能体验到魔法,我认为,嗯,我认为这是非常有价值的,而且非常重要,要,你知道,最大化那些时刻。嗯,所以,我认为我们确实拥有同样的理念,即真正服务用户,真正努力推动技术,并做一些实质性的新事物,这是前所未有的。嗯,然后无论需要什么才能将它们推向世界并取得成功,那就是我们所做的。太棒了。嗯,好吧,我的意思是,令人难以置信的工作。GPT-4 发布。所以,我被告知你的妻子画了那个笑话网站。是真的。是的。有趣的复活节彩蛋。我的字迹太糟糕了,以至于连我们的 AI 都不知道该怎么处理。嗯,所以,据我所知,你即兴创作了一些?我,我听说了。是的,绝对。绝对,你知道,通常当我做这类演示时,我会提前测试它们的总体形状。但我一直都有,在这个领域很容易出现一些,如果你稍微打错一个字符什么的,演示就会失败。我不喜欢做那些。我喜欢让它有一些鲁棒性。所以,关于实际展示的内容总是有变化的。对我来说,我认为这是世界第一次看到 Vibe Coding。它现在是一件事了。你对 Vibe Coding 有什么看法?嗯,我认为 Vibe Coding 作为一种赋权机制是惊人的,对吧?我认为它是未来的一种代表。我认为 Vibe Coding 的具体内容,我认为它会随着时间而改变,对吧?我认为你看看像 CodeX 这样的东西,在某种程度上,我认为我们的愿景是,当你开始拥有真正起作用的代理时,你不仅可以拥有一个副本,不是 10 个副本,而是可以拥有 100 个、1000 个、10,000 个或 100,000 个这样的东西在运行,你会想把它们当作同事来对待,对吧?你想让它们在云端做事情,能够连接到各种东西,你睡着了,你的笔记本电脑关着,它应该还在工作。嗯,我认为,嗯,嗯,嗯,Vibe Coding 在交互循环中的当前概念。嗯,你知道,我认为那是,你知道,它是,我,好吧,所以我的预测是,我认为会发生更多这样的事情,但我认为代理的东西也会真正介入并超越。我认为所有这些都只会导致更多的系统被构建。嗯,我认为也很有趣的是,很多 Vibe Coding 的演示和那些很酷的、闪亮的东西。嗯,例如,制作笑话网站,它是从头开始制作一个应用程序。但我认为真正新的和变革性的,并且正在真正发生的是能够转换现有应用程序以深入挖掘。嗯,能够,你知道,就像我认为这么多公司都坐在遗留代码库上,进行迁移,更新库,将你的 Cobalt 语言更改为其他东西是如此困难,而且实际上对人类来说并不有趣。嗯,我认为我们开始获得能够真正解决这些问题的 AI。所以,我喜欢 Vibe Coding 的起点是,它一直都是关于“制作酷炫的应用程序”之类的。它开始变得更像是严肃的软件工程。我认为,更深入地挖掘,只是让公司能够更快地发展。嗯,我认为那就是我们前进的方向。是的。说到 CodeX,我听说你,它有点像是你的宝贝。嗯,你开始,我认为在直播中,你一直在谈论让事物模块化并有良好的文档记录等等。嗯,你认为 CodeX 如何改变我们的编码方式?嗯,我绝对认为说它是我的宝贝是一种夸大其词。就像,我认为有一个非常出色的团队,嗯,嗯,你知道,我一直在努力支持他们和他们的愿景。嗯,但我认为这个方向对我来说是如此引人注目和令人难以置信。嗯,嗯,抱歉,你能重复一下,CodeX 如何改变我们的编码方式?我明白了。是的。最有趣的是,当你意识到你如何构建代码库决定了你能从 CodeX 中获得多少,对吧?如果你的代码库的强度匹配,基本上我们所有现有的代码库都与人类的强度相匹配。但如果你匹配模型的力量,它们是相当片面的,对吧?模型能够处理更多样化的东西,但它们也无法像现在的人类那样连接深层想法。所以,你想要做的是创建更小的、经过充分测试的模块,这些模块有可以快速运行的测试。嗯,然后填补细节。模型会做到这一点,对吧?它会自己运行测试,这些不同组件之间的连接,就像架构图一样,实际上很容易做到,然后填补所有细节,这通常非常困难。如果你真的那样做了,你知道,我描述的听起来也很像良好的软件工程实践。但有时因为人类能够将更多的概念抽象保持在头脑中,所以我们就是不做,对吧?就像,你知道,写这些测试需要大量工作,而且,你知道,要充实它们,而模型会运行这些测试的次数是你的一百倍或一千倍,所以它会更加关心。所以,在某种程度上,我们想要的方向是为更初级的开发人员构建我们的代码库,以便真正充分利用这些模型。嗯,现在,随着我们提高模型的能力,这种特定的代码库结构方式是否会保持不变,这将非常有趣。而且我有点认为这是一个很好的主意,因为再次,它开始匹配你为了人类的可维护性应该做什么。嗯,但是的,我认为对我来说,对软件工程的未来真正令人兴奋的是,我们为了节省时间而削减了哪些实践,我们是否真的需要重新引入它们,以便充分利用我们的系统?是的。嗯,你能给出一些数字,大概的数字,关于你们内部看到的 CodeX 的生产力吗?嗯,我,我不知道最新的数字。我的意思是,绝对有双位数的百分比,我们的 PR 是完全由 CodeX 编写的,低双位数。嗯,这真是太酷了。嗯,但它也,你知道,它不是我们内部使用的唯一系统,我认为,嗯,对我来说,它仍然处于非常非常早期。嗯,看到一些外部指标令人兴奋。嗯,就像我认为我们有 24,000 个 PR 在过去一天内合并,在公共 GitHub 存储库中。所以,这就像,是的,这些东西都才刚刚开始。是的,它正在做很多工作。嗯,来自 Dylan Patel 的关于扩展和可靠性的嘉宾问题。嗯,所以当我们执行更多耗时且利用更多 GPU 的任务时,它们也变得不可靠。它们经常失败,对吧?而且这众所周知。嗯,所以这也会导致训练失败。所以,但是,你知道,你提到你可以重新启动一个运行,这没关系。嗯,当你必须训练长周期代理时,你如何处理这个问题?因为你不能真正重新启动一个轨迹已经过半,可能是非确定性的东西。是的。我的意思是,我认为有很多问题,你解决了一些问题,然后你让模型更强大,然后你必须重新解决它们。所以,是的,当推出时间很短时,你知道,30 秒,你不太关心这个问题。如果现在是几天,你真的很关心这个问题。是的。你必须开始考虑如何快照状态以及很多事情。嗯,简短的回答是,我认为存在一个复杂性的阶梯,你一直在这些训练系统中攀登,它从,你知道,几年前,我们所关心的就是进行良好的传统训练,对吧?而且它非常容易检查点。嗯,即使在那里,它也并非易事,对吧?就像,你知道,如果你从偶尔检查点一次到,你想每一步都检查点,现在你需要认真思考如何避免复制和阻塞以及所有这些事情。嗯,然后对于像这些更复杂的 RL 系统,仍然有检查点,你知道,也许你关心,你知道,检查点你的缓存,这样你就不用重新计算所有东西了。嗯,我们的系统的优点是,你知道,语言模型的状态非常明确,对吧?而且它是可以存储的东西,是你实际上可以处理的东西。而如果你有你连接的工具本身是有状态的,也许那些是你无法重新启动和恢复的东西。所以,我认为,如果你从头到尾考虑整个系统,思考检查点能力是什么样的。还有一个问题是,也许它根本不重要,对吧?也许你重新启动系统没关系,你的图表会有点波动,但这些模型很聪明。是的。对吧?它们可以处理。嗯,我们明天要发布的一个东西是,也许你可以接管虚拟机并检查点 VM 状态并重新启动它。是的。嗯,我有一个来自巴黎的电话提问。嗯,如果有人能播放视频,特别嘉宾,哦,我真希望我能亲自问你。我有一个问题是,在这个新世界里,数据中心的工作负载和人工智能基础设施将是极其多样化的。一方面,正在进行 T 研究的代理,它们在思考、推理、规划,并与其他代理合作,并且,你知道,处理大量内存,它们有很大的上下文,其中一些你还想尽可能快地思考。所以,你知道,你如何创建一个针对具有大量预填充、大量解码、介于两者之间的一些工作负载进行优化的 AI 基础设施?另一方面,你非常兴奋的那种工作负载,这些多模态视觉和语音 AI,基本上是你的 R2-D2,你的伴侣,它一直在线。它随时可用。所以,这两种工作负载,一种是计算密集型的,可能需要很长时间,嗯,嗯,测试时间扩展等等。另一方面,它需要非常低的延迟。所以,一个未来的人工智能基础设施是什么样的,它尽可能灵活,尽可能高性能,低延迟,高吞吐量,你知道,所有这些都极其复杂。所以,你如何思考这个问题,以及你认为理想的未来人工智能基础设施是什么样的?嗯,当然是大量的 GPU。所以,所以,如果我总结一下,詹森希望你告诉他该建什么。你梦想中的是什么?嗯,但也有两种需求。有两种基础设施。有长计算,有实时。现在,现在,现在。是的。是的。我的意思是,这很难,对吧?因为,我的意思是,这个 CodeX 问题,它是一个令人费解的问题。所以,你知道,我从背景来看是一个软件人,你知道,我们认为我们只是在这里编写 AGI 的软件,然后你意识到你必须做一些大规模的基础设施项目,对吧?我们不是这样开始的,但最终它实际上是有道理的,对吧?如果我们要做一些对世界有变革性的事情,就像,是的,可能需要一些,你知道,也许是人类有史以来创造过的最大的物理机器,就像,检查类型。嗯,所以,我认为有两个答案。嗯,天真的答案是,好的。是的,你需要两种加速器。你需要一种计算优化型的,一种延迟优化型的。嗯,把大量的 HBM 放在其中一种上,你知道,大量的计算放在另一种上,你就 all good 了。嗯,现在,一件非常困难的事情是预测比例,对吧?现在,你有一个新问题需要考虑。如果你弄错了平衡,突然之间,你的整个舰队的一部分将毫无用处。是的。这听起来非常可怕。嗯,现在,事情是,因为这些东西的工作方式是,这个领域没有要求,没有限制,只有人们正在优化的一个线性程序。所以,是的,如果你给我们的工程师一些资源失衡,我们会找到利用它的方法,也许会付出巨大的代价。但一个例子是,你知道,你已经看到了整个领域转向专家混合,在某种程度上,专家混合的意思是,好吧,我们周围有很多 DRAM 闲置,因为平衡是错误的,好吧,我们就用参数填满它,我们实际上不会花费任何计算,我们就会从中获得额外的 ML 计算效率,就像,砰,给你。所以,我认为其中有一些,如果你弄错了平衡,实际上也不是世界末日。嗯,加速器的同质性是一个很好的默认开始。嗯,但我认为最终拥有专门设计的加速器也不是太疯狂。而且我们越是走向这些世界,这些基础设施的 CAPEX 成本就变得如此令人瞠目结舌,那么开始为其中一些工作负载进行超优化就相当合理。嗯,但我认为,陪审团还在考虑,因为如果你想想,研究正在飞速发展,在某种程度上,它主导了其他一切。嗯,好的,我本来没打算问这个,但你提到了研究。你能对 GPT-6 的当前扩展瓶颈进行排名吗?计算、数据、算法、电力、金钱。是的。哪个是,哪个是第一和第二?你最受限制的是哪个?我的意思是,看看,我认为我们正处于一个基础研究回归的世界。我认为这真的很棒,对吧?曾经有一段时间。是的,基础研究。嗯,曾经有一段时间,感觉就像,好吧,我们得到了一个 Transformer,让我们把它扩展一下,你知道,嗯,我发现这些问题非常令人兴奋。我有很多乐趣,就像你有一个定义非常明确的难题。你想把数字往右边移。嗯,但从某种程度上说,它在智力上也有些令人不满意。就像,感觉生命不仅仅是“注意力就是你所需要的一切”这篇论文,你知道,以原始形式。嗯,所以,我认为我们开始看到的是,我们现在正在以如此大的规模运作,我们已经将计算和数据推向了如此远的程度,以至于你可以开始拥有算法,就像再次,作为一项重要且几乎是长期的因素,在未来的进步方面。嗯,所以,所有这些,它们都是帐篷的重要支柱。你知道,在任何一天,它可能看起来有点不平衡。嗯,但是的,从根本上说,我认为你想要保持所有这些平衡。嗯,看到像 RL 范式这样的东西真是令人兴奋。那是我们多年来非常刻意地投资的东西。就像我们训练 GPT-4 时,我记得最有趣的是,当我们第一次与 GPT-4 交谈时,我们说:“这是 AGI 吗?”它显然不是 AGI,但很难说为什么,对吧?它有一种流畅和顺滑的感觉,但不知何故它会失控。就像,“好吧,我们必须解决那个可靠性问题。”然后你说,“好吧,它从未真正体验过世界,对吧?就像一个读过所有书的人,或者,你知道,观察过世界,观察过世界。”嗯,而且从未亲自体验过,对吧?就像,你知道,就像只是,你知道,透过玻璃看一样。嗯,嗯,对我来说,这是,我,你知道,我们当时就想,“显然我们需要一个不同的范式。”我们只是坚持下去,直到我们真正做好。我认为今天仍然如此,还有其他非常明显的缺失能力,我们只需要继续努力,我们就会到达那里。太棒了。嗯,从广义上讲,只是从广义的 OpenAI 的事情。嗯,老实说,我只是让,所以我们问了 Jensen 一个问题。他是一个过度追求者,所以他发了两个。所以,让我们播放第二个视频。现场的 AI 原生工程师们可能在想,在未来几年里,你们的 OpenAI 将拥有 AGI,他们将在 OpenAI 的 AGI 之上构建领域特定的代理。所以,我脑子里的一些问题是,随着 OpenAI 的 AGI 变得越来越强大,他们的开发工作流程将如何改变,而他们仍然会有管道工作流程,他们将创建飞轮来为他们的领域特定的代理创建这些代理。这些代理当然能够推理、规划、使用工具、拥有记忆,短期、长期记忆,嗯,嗯,它们将是令人惊叹的代理,但它如何在未来几年改变开发过程?是的。我认为这是一个非常引人入胜的问题,对吧?我认为你可以找到各种各样的强烈意见,它们都是相互矛盾的。嗯,我认为我的观点是,首先,一切都摆在桌面上,对吧?也许我们会达到一个世界,在那里,你知道,我们都,你知道,只是让它们写所有代码。也许有一个世界,在那里你有一个 AI 在天上。也许是你实际上拥有了一堆领域特定的代理,需要大量的特定工作才能实现。我认为证据一直在转向这种不同模型的组合。嗯,我认为这实际上非常令人兴奋,对吧?即使从系统角度来看,也有不同的推理成本,嗯,有不同的权衡,就像蒸馏效果如此之好。嗯,所以模型能够使用其他模型,这实际上有很多力量。所以我认为,这将打开大量的机会,因为你知道,我们正朝着一个经济由 AI 根本驱动的世界迈进。我们还没有到那里,但你可以看到它就在地平线上。他们正在努力。确切地说。我的意思是,这就是这个房间里的人正在建造的,这就是你正在做的。经济是一个非常大的东西,它有很多多样性,而且它也不是静态的,对吧?我认为当人们想到 AI 能为我们做什么时,很容易只看,好吧,我们现在在做什么,AI 如何融入,你知道,人类与 AI 的百分比。但重点不是这个,对吧?重点是我们如何获得 10 倍的活动,10 倍的经济产出,10 倍的每个人受益?嗯,我认为我们前进的方向是模型将变得更强大,将有更好的基础技术,我们将有更多的事情想做。而且进入门槛将比以往任何时候都低。所以,像医疗保健这样的事情,你不能只是,你知道,它需要责任感去思考如何正确地去做。像教育这样的事情,有多个利益相关者,你知道,家长、老师、学生,每一个都需要领域专业知识,需要仔细思考,需要大量工作。嗯,所以我认为将会有如此多的机会供人们去构建。嗯,所以我对看到这里的每个人都感到非常兴奋,因为那是正确的能量。感谢您的鼓励和启发。非常感谢。非常欢迎大家。谢谢。好吧,在你离开房间之前,还有最后一件事。嗯,让我们再次为 Greg Brockman 鼓掌。所以,演讲结束了,但乐趣还在继续。嗯,我们很乐意邀请你参加派对。托比特的 Toet Panigrai 将在此为你提供派对的详细信息。 [音乐] 大家好,怎么样?我是 Toast Pony,嗯,Tolbit 的联合创始人之一。在过去的两年里,我们连接了世界上最大的出版商和世界上最大的 AI 公司。现在,我们正在利用相同的技术,允许代理访问经过批准的第一方数据源,并实现无缝的支付,无论是 MCP、ATA,甚至是浏览器自动化。所以,如果你关心代理经济、代理支付,请访问 toolbit.dev 或在 Tolbit 派对上与我们交谈。谢谢。 [掌声] [音乐] [音乐] [音乐] 热。嘿。嘿。嘿。 [音乐] [音乐] 我爱我。 [音乐] [音乐] 其他蜂蜜。 [音乐]