嘿,大家好。欢迎回到深度潜水。你们知道人工智能正在变得越来越聪明,解决以前看起来不可能解决的问题吗?是的,它发展得非常快。而且,这其中很大一部分似乎是超越了简单的答案。人工智能开始更像我们一样思考,分解问题,改进工作,甚至纠正它自己的错误。没错。这是向人工智能的转变。
能够深思熟虑、迭代、改进其输出的人工智能代理,一次就能做到。这确实改变了游戏规则。而这正是我们今天使用这个很棒的新资源要深入探讨的内容。这是来自AI Unraveled Builder's Toolkit的一个全新的教程。哦,是的,我看到了那个。是的。这个工具包是由Etienne Newman创建的。他是加拿大的一名高级工程师。我喜欢这个。你感觉像一个充满激情的足球爸爸吗?嗯?这
这很棒。为所有这些高级技术带来了良好的基础视角,不是吗?确实如此。所以,好的,我们这次深度潜水的任务是为您解读这个具体的教程。我们将引导您了解关键思想、概念和构建这些迭代式人工智能代理的实际步骤。
使用一些非常强大的工具。对,没错。我们将研究像Landgraf这样的库以及像谷歌Gemini这样的模型背后的智能。目标非常简单。帮助您了解这些代理的工作原理、为什么需要它们,并让您准备好自己构建一个。从理论到……
好的,我实际上可以做到这一点。完全正确。因此,如果您对能够真正思考和改进其工作的人工智能感兴趣,那么您绝对来对了地方。帮我们一个小忙。喜欢这个深度潜水,订阅这个节目。这确实是捕捉我们未来所有探索和这些实践指南的最佳方式。为了快速入门,我们今天在概念上讨论的所有内容,都已逐步列出,您可以随时在AI Unraveled Builder's Toolkit中构建。好的。
哦,好点子。是的,它包含实用的教程、PDF、音频和视频格式,所以无论哪种方式最适合您。您可以在我们的节目说明中找到获取AI Unraveled Builders Toolkit的链接,网址是djamgate.com。
它确实有助于弥合差距。在理解和实际操作之间。是的。在接下来的段时间里,我们将介绍为什么我们需要这种迭代方法,分解Landgraf提供的核心构建块,向您展示TN教程中代理的具体设计,并且至关重要的是解释如何实际观察它。
一步一步地思考。好的,让我们从那个大问题开始。为什么?我们为什么甚至需要迭代的人工智能代理?旧方法有什么问题?是的,好问题。我的意思是,为什么不只问一次LLM然后就完事呢?是的。源材料确实强调了现代人工智能,特别是这些超强大的LLM,它通常需要做的不仅仅是一次性通过。对。想想复杂的任务。
真正的解决问题或生成一些有创意的东西,比如撰写详细报告或调试棘手的代码,也许是规划一次复杂的旅行,你不会只做一次,对吧?你会收集信息,也许起草一些东西,你审查它,你发现缺陷,也许你需要回去做更多的研究,然后你改进它,这个循环,这就是人类获得良好结果的方式,对吧?我们迭代,我们循环回来并改进
对LLM的单次调用通常无法捕捉到这种深度或这种改进过程。没错。这就是迭代式人工智能代理的概念的来源。这些系统专门设计用于通过多个步骤来处理任务,循环返回,重新评估,根据内部检查或反馈改进它们自己的工作。好的,所以目标是构建能够循环思考的代理。而真正适合构建此类代理的库(基于Langchain)是Langraph。
你提到了它的超能力,创建具有循环的图。
这是绝对关键的区别。传统的Langchain链通常是线性的,例如A,然后是B,然后是C。Langgraph允许您构建可以实际循环返回的工作流程,例如从C返回到B。而这种循环结构,正是使这些代理能够重新评估、自我纠正、进行我们所说的那种多步骤推理或深思熟虑的原因。这就像赋予AI工作流程记忆和根据其学到的知识改变主意能力。
这是一个很好的说法。对于结构内部的实际脑力,即理解查询、分析内容、生成文本的部分,本教程使用谷歌的Gemini模型,在本例中具体是Gemini 1.5 Flash。
您可以通过API调用访问该功能。明白了。所以你有了Landgraf提供的坚固的框架、循环和控制流,然后你插入Gemini的高级智能来实际进行该流程中的思考和写作。这是这里的核心组合。这是一个非常强大的组合,结构与智能的结合。好的。我想我现在明白了为什么以及主要的工具。让我们深入研究Landgraf中使这成为可能的实际构建块。
本教程非常清楚地列出了这些内容。- 是的,LyGraph将事物构建为图形,对吧?并且有一些关键组件您确实需要了解。- 首先是状态。本教程称之为代理的工作内存。
在实践中这意味着什么?好的,状态可能就是它,可能是这些有状态代理中最关键的部分。把它想象成一个共享的数据容器,可以是一个简单的Python字典,也许是一个数据类,诸如此类。而这个容器,它会保留下来,它会持续存在,并且会在代理运行时累积信息。因此,每个步骤、每个节点都可以看到它并向其添加内容。没错。每个节点都将当前状态作为输入,执行其工作,
并且可以返回对该状态的更新。这就是它如何在步骤之间,甚至在循环之间记住事物的方式。准确地说。而这正是迭代的魔力真正发生的地方。状态保存原始请求,当然,还保存任何中间结果、它收集的上下文,以及关键的是,来自先前步骤的反馈。啊,好的。
因此,当代理循环返回时,可能是因为验证步骤失败了,它现在使用比第一次更丰富状态进行工作。本教程完美地展示了这一点。验证反馈被添加到状态中。对。代理在下一个循环中使用该反馈来尝试生成更好的响应。哇。好的。所以状态就像驱动单次运行中自我改进的引擎。它允许代理立即从其自身过程中学习。我再也说不出更好的话了。它就是那个引擎。好的。接下来。
这些是动作,对吧?代理实际执行的操作。是的。节点是单个工作单元。在本教程中,它们大多是Python函数,或者您可能会将它们视为LCL可运行程序,基本上只是模块化的逻辑块。对。每个节点都获取当前状态,执行特定任务,也许调用LLM来分析某些内容,也许模拟搜索,也许生成实际响应,然后它会输出状态的更新。
因此,您可以通过定义这些单独的模块化操作来构建代理的功能。看起来更清晰。清晰得多。每个节点都做好一件事,使其更容易构建和调试。对。状态保存内存。节点执行工作。什么将它们连接起来?边缘,对吧?它们如何处理迭代部分?边缘决定流程。是的。您有基本的普通边缘。只需从节点A直接到节点B。简单。但是,创建这些动态循环代理的真正强大功能来自条件边缘。好的。告诉我更多。
它们如何启用循环?条件边缘不仅仅是一条固定的路径。它就像路上的一个岔路口。它与之关联一个小函数,该函数查看当前状态,即代理现在知道的内容,并决定接下来要转到哪个节点。啊,好的。所以边缘本身包含逻辑。没错。它检查状态并返回,例如,命名下一个节点的字符串。
这就是代理如何决定,好的,根据状态中的验证反馈,我是否需要循环返回到分析器节点,或者工作是否足够好以转到ND节点?因此,条件边缘是代理基于所有已学习和存储在其状态中的内容的逻辑分支所在的位置。你明白了。这就是您实现这种关键决策的方式,即能够说,这好吗?不。好的。回去再试一次。
本教程还提到了设置一个入口点,所有内容都从这里开始,以及那个特殊的nd节点,它只表示“我们完成了”。所以把所有这些放在一起。
状态提供内存和上下文,节点执行操作,而这些智能条件边缘使用状态来路由流程,可能会创建这些循环。这就是Landgraf允许您构建这些复杂迭代工作流程的方式。那是核心循环,是的。代理可以继续工作,改进其输出,直到状态中的某些条件告诉条件边缘,好的,完美。
继续结束。而协调所有这一切,您实际用来构建图形的东西,那就是状态图类。是的。状态图是您组装它的方式。您添加节点,定义边缘(普通和条件边缘),设置入口点,然后将其编译成实际的可运行应用程序。
掌握这些部分,状态、节点,特别是那些条件边缘和状态图,如果您想构建不仅仅执行简单的直线任务的人工智能,这绝对是基础的。确实如此。掌握这些不仅仅是关于构建很酷的代理。对于任何认真对待理解现代AI工作流程的人来说,这都是关键,坦率地说,这对于提升他们在这一领域的职业生涯也是关键。说到职业和掌握基础知识。
如果您正在寻找真正掌握这些概念的结构化方法,甚至可能获得认证。
Etienne Newman,我们正在使用的工具包的创建者。是的。他还有一系列很棒的人工智能认证预备书籍。哦,对。我见过那些。它们涵盖了诸如Azure AI工程师助理、谷歌云生成式AI领导者证书等内容。是的。AWS认证AI从业者、Azure AI基础知识、谷歌机器学习认证。
一个非常可靠的阵容。因此,它们可以真正帮助您建立考试和实际项目所需的基础知识。没错。
您可以在djamgat.com上找到Etienne所有AI认证书籍的链接,以及AI Unraveled Builders Toolkit。我们将所有链接都放在节目说明中,方便您访问。如果您想规范您的技能,绝对值得一看。好的,我们已经了解了为什么以及Langraph的构建块。现在让我们换个话题,看看本教程中具体的代理设计。它实际上如何使用状态、节点和边缘?对,所以本教程指导您构建它所谓的智能查询处理程序。
基本思想是创建一个代理,该代理从用户那里获取问题或请求并对其进行智能处理,而不仅仅是吐出一个答案,而是可能经历我们一直在讨论的这个多步骤细化过程。好的,那么这个查询处理程序实际上能做什么?它的设计中内置了什么?好吧,根据源材料,它首先要真正理解查询,然后分析实际需要什么。基于此,它可能会决定进行一些研究,然后它会生成一个响应。
但关键部分在这里。然后它会在内部验证该响应。啊,自我纠正循环。没错。如果该验证步骤说,不太正确,则代理被设计为迭代循环返回,使用该反馈,并
并尝试改进其输出,就像人类专家可能会审查他们自己的草稿并改进它一样。然后,内置的验证和改进就是智能的核心。好的,带我们了解一下流程。节点和决策是什么?当然可以。它自然地从用户的输入查询开始。一,首先它会到达路由器节点。
它的工作基本上是初步分析,也许在状态中设置一些初始上下文。好的,首先。二,然后它转到分析器节点。这至关重要。它查看查询,查看状态,并做出关键决策。我需要更多信息吗?我需要研究吗?或者我可以直接回答吗?说得通。回应。是的。三,该决策导致第一个由条件边缘控制的条件分支。
如果分析器说要研究,它就会转到研究人员节点。如果它说要回应,它就会绕过研究。明白了。基于需求的分支。四。如果调用研究人员节点,它会模拟获取练习。
额外信息。想想快速网络搜索。而且关键的是,它会将它找到的任何内容添加到状态中的上下文字段中。建立那段记忆。对。现在,无论它是否进行了研究,流程都会汇聚到响应者节点。该节点获取状态中的所有内容,原始查询、分析、任何研究,并生成实际答案。好的,主要的输出生成器。六,但它还没完成。该响应直接转到验证器节点。这是自我纠正步骤。该
验证器查看响应,将其与上下文中的查询进行比较,并决定,这好吗?完整。还是需要改进?需要改进。内部评论家。差不多。七。这导致第二个,也许是最重要的条件分支。另一个条件边缘检查验证器的输出。如果它已完成,很好。我们完成了。
或者如果代理循环的次数过多,则会达到状态中的最大迭代安全限制。对,必须防止无限循环。然后它也会转到结束节点,返回它拥有的最佳响应,8。
但是这里就是循环。如果验证器说需要改进并且我们还没有达到迭代限制,则条件边缘会将流程发送回分析器节点。无论我们再去多少次。没错。这一次,分析器获得的状态包括之前的错误响应和上下文中的验证器反馈。因此,它有更多信息来指导下一次尝试。哇。这个流程,特别是从验证器循环返回,
它确实反映了人们如何处理棘手的问题。思考、收集信息、回答、检查工作、修改。这是一个非常人性化的问题解决过程,只是映射到这个图形结构上。它实际上相当优雅。而代理状态,这个处理程序的特定内存结构
它需要跟踪哪些绝对关键的事情才能使循环发挥作用?是的,状态是将所有内容结合在一起的粘合剂。对于这个特定的查询处理程序,它需要跟踪诸如查询本身、原始输入等内容,
保持不变。好的。上下文,这至关重要。它就像一个运行日志。路由器添加注释,研究人员添加发现,重要的是,验证器在此添加其反馈。不断增长的上下文是代理从一个飞跃到下一个飞跃学习的方式。迭代记忆。然后是诸如分析(分析器决定了什么)、响应(当前答案是什么)、也许是帮助指导分支的下一个操作,以及绝对迭代(以计数1、2、3)来跟踪循环。以及最大迭代次数,我们提到的安全阀,以防止它在卡住时永远运行。
状态确实是那种结缔组织,不是吗?保存所有不断变化的部分,使整个智能迭代成为可能。绝对正确。它是代理的内部工作区,在一个执行中启用这种状态性和学习。好的。理解设计是一回事,但是您如何将其转换为实际运行的代码?
也许更重要的是,您如何窥视内部并看到迭代正在发生?对,实现。本教程显然深入探讨了Python代码。
您需要您的Python设置,然后安装主要库。Langraph本身、Langchain、Google Genie(用于与Gemini对话)以及通常推荐用于安全处理API密钥的Python Dotenv。啊,是的,API密钥。源材料绝对强调要小心处理这些密钥。哦,绝对的。这是教程中突出显示的不可协商的最佳实践。永远不要在脚本中硬编码API密钥。
或将它们检入Git。使用环境变量,从.env文件加载它们,并确保.env文件列在您的.gitignore中。很好的提醒,泄露的密钥可能会非常快地变得非常昂贵。你说的对。所以,好的,您安全地加载密钥,然后初始化与LLM的连接。使用铺设链类,对吧?是的,就像chat Google generative AI,告诉它您想要哪个模型,例如Gemini 1.5 Flash Latest。本教程在这里也指出了一些有趣的事情。
您可以潜在地对不同的节点使用具有不同设置的不同LLM实例。哦,就像不同的温度设置。为什么要这样做?没错。温度控制输出的随机性或创造性。因此,对于您可能想要创造性答案的响应者节点,您可能会使用更高的温度,例如0.7。使其不那么可预测。对。但是对于需要做出明确决策的分析器节点……
研究或回应,或者特别是对于需要给出可靠的、完整的或需要改进的判断的验证器节点。您需要在那里保持一致性。准确地说。因此,对于这些节点,您可能会使用低得多的温度,例如0.1,以使输出更集中和确定性。这是一种巧妙的方法,可以为工作流程中的每个特定作业微调LLM的行为。这是一种非常巧妙的技术,用于控制代理。
好的,所以您设置了像数据类一样的状态结构。您为每个节点编写Python函数。您为条件边缘编写函数。正确。条件边缘函数只需要查看状态并返回下一个节点的名称。然后您使用该状态图类将所有内容连接起来。添加节点,添加边缘,设置入口点,定义条件逻辑,然后.compile。是的,.compile将您的图形定义转换为可运行的应用程序对象。
现在,对于那些跟随或真正想要实际代码来自己构建这个的人。
他们在哪里可以找到它?啊,这正是AI Unraveled Builder's Toolkit的用武之地。我们在这里概述架构和逻辑,对吧?但是工具包为您提供了完整的、详细的、逐步的编码指南。实际的实现。没错。它包含说明、实际的Python代码片段,所有这些都以PDF音频和视频教程的形式列出。您可以逐字逐句地跟随并构建我们一直在讨论的内容。
因此,这个深度潜水为您提供了蓝图。工具包为您提供了实际建造房屋的工具和说明。这是一个很好的比喻。它使构建这些更复杂代理的方法更容易上手。请记住,您可以在djamgettech.com上获取工具包。链接在节目说明中。好的,很好。所以假设您已经构建了它,您已经编译了它,它正在运行。
您如何实际看到迭代?仅仅获得最终答案并不能告诉您它是如何到达那里的。不,它不能。而这正是Landgraf最有价值的功能之一——其流功能——大放异彩的地方。老实说,对于这些复杂的循环代理来说,能够流式传输内部步骤至关重要。
对于理解、调试和信任代理至关重要。对。没有它,它就是一个黑盒子。差不多。但是当您运行已编译的图形时,您可以要求它流式传输输出。本教程提到了两个有用的流模式选项,值和更新。
它们有什么区别?值非常冗长。它会在每个步骤之后、每个节点运行之后为您提供整个状态字典。非常适合查看全貌。更新更简洁。它只显示节点运行后状态中发生了哪些变化。它返回了哪些更新?两者对于观察代理的展开过程都非常有用。
这就像实时观看它的思维过程。没错。当您观看该流时,您应该寻找什么?什么证实它实际上正在迭代和改进?是的。关键信号是什么?您需要密切关注几件事。
查看状态中的迭代计数。看到它从1增加到2,尤其是在它似乎从验证器循环返回之后。这是您迭代的证明。观察上下文字段。看看它是如何增长的。初始注释,然后可能添加研究结果。而且关键的是,观察验证器反馈是否出现在那里。这表明它正在学习并将信息传递下去。对。积累的知识。关注分析和响应字段。
您可能会看到迭代1和迭代2之间的响应发生了重大变化,这表明基于现在上下文中的反馈进行了改进。
还要跟踪诸如下一个操作之类的内容,以查看正在做出的决策。老实说,教程代码中每个节点函数中的简单打印语句对于查看以下内容也非常有用:好的,现在路由器正在运行,现在验证器正在运行。啊,是的,老式的打印调试。本教程甚至包含状态的概念快照。是的,这确实有助于可视化状态如何在循环中演变。
看到该流使整个抽象图形和状态理念真正具体化。它使代理的过程栩栩如生。这对于透明度来说似乎至关重要,对于实际理解您的代理正在做什么以及为什么至关重要。我认为对于构建任何健壮的东西来说都是绝对必要的。好吧,这对于深入了解构建这些更智能、更迭代的人工智能代理来说确实是一次非常引人入胜的观察。是的,它确实突出了如何将像LandGraph这样的可靠结构框架
与像Gemini这样的强大模型相结合,使我们能够超越简单的请求响应。我们可以构建能够处理复杂性、深思熟虑、自我纠正的系统,更像人类一样。Landgraf为您提供了这种必要的结构。
有状态的内存、模块化的操作和节点,以及使用条件边缘进行的关键循环控制。而Gemini则提供了该结构内进行分析、研究和响应所需的高级智能。您在此处学习的模式,构建此查询处理程序,它们实际上用途广泛。这个迭代模板状态、节点、验证、循环。您可以将其应用于许多其他需要改进的任务。
想想自我纠正代码生成。哦,是的。或者根据反馈迭代改进摘要,或者动态适应的多步骤规划。这是一个基础模式。它确实感觉像是朝着人工智能迈出的巨大一步,人工智能不仅仅是更强大,而且更易于理解、更易于控制,因为有了像LineGraph这样的框架,您拥有这种明确的结构和可见性。随着人工智能处理更多关键工作,这种控制和透明度越来越重要。
绝对的。好的。在我们结束之前,最后提醒一下所有收听的听众。这个整个深度潜水、具体的代理设计、我们讨论的实现细节,都直接来自Etienne Newman的AI Unraveled Builders Toolkit。今天的源材料。没错。因此,如果这激发了您的兴趣,如果您想实际动手操作、编写代码、自己构建这个代理。嗯哼。
工具包是您需要前往的地方。它有不同的格式,对吧?PDF、音频、视频,以适应您的学习方式。
没错。只需前往DJMgateTech.com。链接就在节目说明中。获取工具包,您今天就可以开始构建您自己的人工智能代理了。当您在DJMgate.com上的时候。哦,是的。也不要忘记Etienne的AI认证书籍。如果您认真对待掌握这些概念以提升您的职业生涯、提升您的技能、获得认证,它们是涵盖这些基础主题的绝佳资源。也链接在节目说明中。用于结构化学习和人工智能的优秀资源。绝对值得一看。好的。
好的,最后,让我们留给您一个需要思考的问题。一些基于教程本身中提到的潜在扩展的内容。我们讨论的这个迭代代理,它只是一个起点。嗯哼,只是触及了表面。想象一下,将真正的工具插入该研究节点,例如实际的实时网络搜索,或者赋予代理更长期的记忆,以便它能够处理多次轮次的真实对话。
或者甚至添加一个步骤以进行人机交互反馈,您可以在其中指导其下一次迭代。是的,这些可能性确实显示了这种迭代方法解锁的强大功能。您可以创建越来越复杂、更可靠、甚至更具协作性的系统。所以这里有一个问题要问您。想想您面临的一个复杂、具有挑战性的问题。
您可以设计一个迭代代理来使用状态、节点和这种关键的自我纠正循环来解决什么任务?这种结构化迭代可以在哪里为您带来真正的改变?一些需要思考的事情。绝对的。好吧,感谢您加入我们这次深度潜水。是的,精彩的讨论。我们下次深度潜水再见。