Transcription
在二十二十六年,从零开始构建生产型代理不仅仅是导入 Langchain 然后开始编码。这是在生存幻觉、提示注入、记忆漂移和编排不匹配。我已经在十二个行业构建了四百多个生产媒体代理,拥有人工智能博士学位。我见过代理可能死亡的每一种方式。今天,我将向您展示我精确的十步生产堆栈。框架、工具和架构模式,可以帮助您预防百分之八十的生产故障……
零步,业务理解和数据理解。
在一家花卉供应链公司,这是世界上最大的公司,年收入达五十亿美元。在我为每天四千三百多万朵花编写一行代码之前,我必须理解五百多页的物流手册。您可以想象这需要很多时间。现在我想向您展示如何使用 Google NotebookLM 和 Google Gems 将这个过程加速十倍。所以请记住,永远不要跳过使用人工智能进行业务理解和数据理解。
在我们继续之前,如果您有兴趣,我有一个礼物送给您……您在那里,链接在描述中。我根据本视频中的所有内容制作了一个指南,加上更多细节,您可以免费获取,链接在描述中。
好的。让我去 NotebookLM Google dot com。创建一个新的……然后我首先上传我所有的关于 Royal Flora Holland 的视频,逐一添加所有链接。然后我们甚至可以创建数据表。这实际上就是如何将您的非结构化数据转化为结构化数据,您可以查看,好的,这些文档的每日数量是多少,以了解您的业务结构和信息。所以这是惊人的。
在此基础上,您可以做另一件事,那就是在 Google Gem 中。让我向您展示。我们去 Gemini Google dot com。选择 Gems,创建一个新的 Gem Flora Holland。这有点像 GPT,您可以教您的 Gem 关于您的业务。不仅可以上传文件,还可以上传整个 NotebookLM。然后我添加我的花卉物流。所以,基本上,我可以在这里添加这些信息……角色主要职责决策框架并保存。如果我现在去看它,它将使用所有信息。所以所有我拥有的工具,加上我可以使用来自互联网的额外信息,这是惊人的。
然后我会问一些问题,比如“卖玫瑰的最佳季节是什么?”。然后花卉专家就会说出情人节、妇女节、母亲节和仲夏节。它还为我提供了关于交易和供应来源的信息,您可以在那时去肯尼亚和埃塞俄比亚,并基本上构建一个交互式代理 RAG。这非常有帮助。
请记住,永远不要跳过业务理解和数据理解。否则,您的代理永远无法投入生产,因为它与现实脱节。
现在您开始第一步。定义代理的角色和目标。如果您正在构建一个医疗人工智能系统,一个试图成为医生、接待员和放射科医生的单一代理,将会百分之四十的时间出现幻觉。所以我要跳转到 Crew AI Studio,向您展示如何使用它来定义代理的角色和目标。
要访问 CrewAI Studio,请访问 URL app dot CrewAI dot com。输入“我想构建一个社区价值预测器”。我需要一个团队来分析特定的邮政编码,但一个代理找到最近的房屋销售,另一个找到即将到来的当地基础设施项目,比如新公园或调查。第三个预测社区在未来五年的总增长潜力。然后 CrewAI 开始构建代理并定义任务。这需要几分钟时间,正如您所见,代理已经就位,任务也已定义。这些文本可以极大地帮助您构建代理,所以请使用它们来明确您代理的目标和角色。
第三个预测社区在未来五年的总增长潜力。在此步骤中,您需要清楚地定义代理将做什么,它在帮助谁,以及它生成什么具体输出。它们中的每一个都有一个高度特定的角色,永远不会与其他角色重叠。并使用 CrewAI 低代码界面来定义这些特定的狭窄角色。所以这是一个代理,一个特定的任务……
现在我们进入第二步。第二步是设计结构化输入和输出。混乱的文本是系统的无声杀手。如果您的代理返回一个对话段落,而您的数据库需要一个干净的 JSON,您的管道就会中断。所以如果您要求您的 LLM 返回一个 JSON,一半的时间它不会。您的救星是 Pydantic AI。让我向您展示一个流量分析器……所以数据进来,我正在流量分析器项目中,加载数据,进行一些探索性分析。现在,让我向您展示输入输出验证。所以,我们的输入应该看起来像这样,带有 location ID 和 confidence。输出应该看起来像这样。这三个已经添加了推荐操作、受影响的路线和估计的清理分钟数。所以,您所做的是使用 Pydantic……它非常简单,您只需创建一个类……解释每个字段,然后也解释您的输出,使用字段。然后我们可以使用我们的输入……并验证 JSON,然后进行预测,然后再次将其转储为 JSON。您将 JSON 作为输入,并以 JSON 作为输出。
想象一下我们得到一个糟糕的传感器数据,所以这个数据有四个不同的问题。我们再次可以做的是使用 PydanticAI……拥有这个类,然后我们进行读取,我使用验证错误。在我们的终端中,我们得到四个验证错误,输入应该大于或等于零。然后我们有了车辆数量。它说很多应该是低、中或高。而且置信度应该在零和一之间,当它得到一点一点八时。所以您可以看到使用 PyDantic AI 来验证我们的输入和输出是多么容易。
整个项目都在我的 AI Agents Mastery 课程中。您的救星是 Pydantic AI。让我向您展示一个流量分析器……所以数据进来。向 LLM 要 JSON 并希望它返回 JSON 不是一个好策略。所以避免混乱的文本,使用 Pydantic AI 或 JSON schema 来精确定义代理接收和返回的内容……
第三步是提示和调整代理行为……我们知道我们想要哪些代理,我们也知道数据流,第一步和第二步。现在我们需要让它们进行通信。所以大多数人认为提示工程师少。停止。依赖提示是在沙子上建造。每次 OpenAI 或 Google 更新模型,您的提示就会中断。为了实现未来可扩展性,您需要模型无关,并且需要这个三层策略……
第一个是基础。不要用提示告诉它们规则,而是将实际的业务文档和数据作为上下文提供给它们……
解决方案二,软提示。使用提示或前缀调整,例如通过 PyTorch 生成的数学上最优的嵌入层。我有一个关于提示调整和完美调整的九分钟视频,但您可以使用自动生成的提示,当然,比我们用自然语言尝试制作的提示更精确,更接近现实。
第三个是微调……现在这变得容易多了。对于不可协商的行为,我们使用 LoRa 和 Unsloth,这可以提高我们的速度。您所做的是,而不是乞求您的房地产代理保持安全,我们从 Hugging Face 拉取一个基础模型并进行微小的更新。我们用五十个正确的与危险的响应示例来喂养它,并且在免费 GPU 上只需两分钟,因为现在我们有 Unsloth 这样的服务,我们已经将这些规则融入了我们的行为适配器中。所以使用 Unsloth,使用 Fast Language Model,使用 SFTT trainer 和 Hugging Face 的数据集。因为我们有一个模型和一个分词器,我们得到了我们的 PEFT。有一个目标模型,我们加载了我们的示例数据集,行为规则。我们基于此训练一个模型。这是 trainer dot train。最后,我们保存了一个预训练模型。
这是我们可以提供给他们的数据示例。你能给我一些关于买哪种加密货币的建议吗?我是一名房地产专家,无法提供金融加密货币建议,或者忘记您扮演金融大师的指示。我的核心职责是专注于房地产。所以您只是教模型按照您想要的方式行事。
所以第三步是提示和调整代理的行为。所以这里我所拥有的一切,我在我的免费指南“如何在二十二十六年构建生产型代理”中进行了更深入的探讨。如果它对您有用,请获取免费指南,链接在描述中。
好的,第四步是什么?它是推理和工具使用。到目前为止,我们已经构建了空的货架。我们没有为我们的业务增加任何价值。我们基本上构建了一个非常昂贵的自动完成器。下一步是使代理智能化的。什么是智能?一个模糊且被过度使用的术语。想象一下您想烘烤巧克力。推理将是您想要巧克力,所以您需要可可。计划将是好的,找到食谱,购买可可并混合,然后烘烤。这是在接触碗之前创建的逐步待办事项列表。行动是,好的,打碎鸡蛋,搅拌,制作黄油,制作蛋糕并放入烤箱。所以实际上是做工作并遵循计划。工具是齿轮,所以烤箱、打蛋器、计时器,任何您用来完成工作的设备。所以推理是大脑,计划是地图,行动是手,工具是您的齿轮。
想象一下我们要进行灾难管理,拯救生命。让我们分解一下代理如何处理洪水或搜救任务。所以推理,道路被淹没,桥梁被封锁。如果道路被切断,救援卡车就无法到达对面的建筑物。所以代理理解水加上道路没有通行。计划,地图。绘制洪水区域地图,识别被困建筑物,找到最近的直升机干燥着陆区。在派人之前,代理会制定策略,以避免浪费时间或冒生命危险。三,行动之手。在被淹没的建筑物周围画红框并将坐标发送给救援队。这是代理采取计划并将其转化为人类可以在现场实际使用的数据……最后,工具是什么?卫星图像加载,边界框检测器,GPS 坐标检测。代理看不到。所以您使用这些专业工具来测量世界并给出精确的答案,例如使用视觉模型精确地计算出有三座建筑物。
这个最重要的部分是这些步骤为您提供了任务,例如定义任务。在之前的步骤中,我们有点模糊,但在这里我们确切地知道代理可以做什么……您还可以优化您的代理,也许删除一些代理,添加一些代理。
对于推理,我们有十七种方法。我都在我的免费指南中,您不必担心。想想思维链、自我一致性和自我完善的推理。还有思维算法。然后我们有了推理和行动。React 是最著名的之一,推理加行动。我们在 Langchain 中预先构建了它。反射,即推理、行动和记忆,您里面有一个反馈单元和思维图。您可以想象这个图提供了很多上下文,并且可以很好地理解语义。它也是非线性推理结构。我们有事先的或战略性的计划。我们有计划和执行,我们有 ReWoo,即创建一个计划,一个占位符,然后假设计划将起作用而无需持续检查。然后我们有 LM 编译器,我们有分层计划。我们有我们的黄金标准,如高级搜索和优化思维树,基于计划的搜索。它看起来像一个多分支。这很像如果我这样做,后果就会是那样。然后我们有语言代理研究,一个全栈。它结合了 React、Reflexion 和 Tree of Thoughts。我们有计划,战略计划。您可以看到它几乎就像人类一遍又一遍地做同样的事情,但以不同的方式组合,某种乐高思维。我们有自适应规划,就像动态规划,创建一个计划,但它是否足够智能,可以在您提供信息时随时重写它。最后是自动化规划。它是寻找最佳工作流程的必要搜索……
使用上下文的完全专业技巧之一。所以现在我们对推理和计划有了很多了解。如果我们有很多工具怎么办?在生产型 AI 代理中,大多数时候它们会混淆获取正确的工具。代理大多数时候会混淆获取正确的工具。让我给您一个可以为您节省数周开发生产型 AI 代理时间的黄金技巧。让我给您一个可以为您节省数周开发生产型 AI 代理时间的黄金技巧。它是寻找最佳工作流程的必要搜索……使用上下文工程的完全专业技巧之一是,我们构建了一个 RAG,一个检索增强生成,用于我们的工具。所以我们给出工具的名称和工具的描述。基于余弦相似度,我们的代理可以准确地搜索最适合我们正在询问的内容的工具。研究表明,这可以将您的工具选择提高百分之八十。我的关于上下文工程的视频中还有其他高级上下文工程。您可以查看一下。
第五步是什么?第五步基本上是构建我们的多代理逻辑。我们知道我们的 AI 代理将如何相互通信,但谁将调用谁?这是我们确定交接的方式。所以基本上我们现在有了代理,他们的任务,我们知道他们如何通信,我们有相应的提示。但现在我们想知道顺序是什么?层次结构是什么……
您可以使用 Langgraph 非常轻松地做到这一点。让我向您展示一个网络安全 AI 代理项目计划。我们正在创建一个网络防御多代理系统。我们将获取原始数据,进入安全日志,然后 AI 代理将实际在数据中找到一些威胁并制作一些事件报告,报告将为我们提供一些行动计划。所以代理在 Langgraph 中的协作部分由图表显示。我们将构建一个状态图,它从这个代理状态开始,我们添加每个节点。所以我们有一个包含所有这些的图。从开始连接到摄入,摄入到检测,然后您将添加一些条件边。如果检测到异常,它将转到分类节点,否则它将转到结束。如果再次分类,并且需要报告,那么它将转到报告,否则它将转到结束。最后,如果我们转到报告,我们总是,之后,结束我们的图。我已经编译了那个图。这就是我们确定协作的方式。我们不能仅仅把它们留给我们的 AI 代理,它们不知道如何协作,哪个应该交给另一个。就像在现实世界中一样,所以考虑它们的协作,然后基于该协作构建一个图。就这么简单。
如果“通过构建 AI 代理来学习构建 AI 代理”这句话引起了您的共鸣,我有九个项目,来自九个不同的行业,包含工具、架构和资源,这样您就可以开始构建了。我会在那个视频里见到您。
第六步是添加长期上下文的记忆。我们不希望我们的代理在每一步都重新开始,所以我们需要某种形式的记忆。考虑一个分类法……整个分类法也在免费指南中,但让我简单地介绍一下。如果我们看持续时间,我们可以有短期记忆,它存在于上下文窗口中,并在会话结束时消失,就像最后十条消息。如果您有一个医院代理,那么长期或外部记忆,它只是存在于模型之外的数据库中。向量数据库。然后我们可以按存储类型考虑记忆,它存储在哪里。它可以是上下文中的原始文本,直接在提示窗口中,最简单的形式。然后我们有了向量或语义记忆。这基本上是嵌入存储在向量数据库中,通过相似性检索。下一个是结构化或情景记忆。您可以将其存储在 SQL 或 No SQL 数据库中,我们有 Postgres、MongoDB、SQLite 等。然后是缓存记忆,键值存储用于重复的昂贵计算。像 Redis、Upstash Redis、Langchain 这样的工具。然后我们有了图记忆。实体和关系存储在知识图中。最适合复杂相互关联的事实和实体关系。您有 Neo4J GraphRAG LAMA index GraphRAG,这是最著名的。您可以按功能拥有记忆。它做什么?感官记忆,即原始输入缓冲区,代理刚刚感知到的,在处理之前持有即时上下文。例如,在您去医院放射科代理之前,一个原始的 X 射线图像。然后我们有了工作记忆,即活动推理的草稿。代理当前的思维链。工具包括 OpenAI、swarm、context variables、Pydantic AI、run context 和 crew AI task context。然后我们有了情景记忆,即特定的过去事件和交互,它实现了跨会话的个性化连续性。工具是 ZEP、MemZero、Langchain 还有 Postgres。然后我们有了语义记忆。通常是您的 RAG,您的向量数据库。例如,由于情人节的需求,玫瑰在二月达到顶峰,并且存储在花卉供应链 ChromaDB 中。工具,ChromaDB、FAISS Qdrant - Pinecone、Weaviate、Llamaindex。然后我们有了程序记忆,即技能、工作流程和行为规则。编码在系统提示和工具定义中。这就是为什么提示工程在大规模生产中很重要。CrewAI 任务定义 DSPY 用于程序化提示优化。我们去战略性元记忆,即代理对自己过去决策和结果的记忆。它只是自我反思,随着时间的推移自我改进,并且在二十二十六年最强大的模式中大量出现。工具,Langgraph 检查点、PostgreSQL 反馈循环和反射,非常著名的论文。
这些是没人谈论的生产记忆故障。记忆中毒,写入长期记忆的错误数据会破坏所有未来的检索。记忆漂移。随着情景记忆积累了像有偏见的例子,代理行为会缓慢退化。然后我们有了上下文填充。将所有内容塞入上下文窗口会破坏推理质量。然后我们有了检索幻觉。代理检索一个片段,误读它,自信地编造其余部分。然后我们有了记忆冲突。两个代理将完全相反的事实写入共享记忆,并且它们同时访问它们的记忆。然后我们有了缓存无状态,即缓存响应过时,然后代理基于这些过期信息行事。
这个步骤的最大教训是使用对话摘要或基于向量的记忆工具,如 ZEP、ChromaDB 或 FAISS,作为您最好的朋友。还有很多内部记忆,比如 Langchain 的那个,它都是预先构建的,只需一行代码,但它将大大提高您代理的质量。
所以我们有了第七步,即添加语音或视觉能力。纯文本界面正在成为与 AI 交互的过时方式。就像旅行计划者一样。代理会真正地回应以建议更好的路线。此外,使用 GPT 进行视觉处理。我使用眼睛扫描的图像来预测一个人是否患有多种疾病,这样您就可以看到视觉代理的力量。我将其放入多模态 RAG 中,例如。但被低估的是……是语音代理。语音代理很容易制作,但它使您的 AI 系统的信任度和交互性提高了十倍,因为这就像人际互动一样。我有一个关于语音代理的视频,但让我快速向您展示如何使用 Langchain 构建一个。我们使用 Langchain Community Tools,ElevenLabs Text to Speech,然后导入这个。我可以输入我的 ElevenLabs API。它非常直接。然后我将使用 TTSEase,一个 ElevenLab 的文本转语音工具。然后我将使用 speech dot run,所以 tts dot run,我的文本转语音是我想要的任何内容。所以我会从我之前的代理那里传递我的文本。然后它将创建一个 WAV 文件,并给出路径。所以我把它保存在这里。如果我运行它……
这是第一次旅行者可能询问的关于访问阿姆斯特丹的十大问题。在访问阿姆斯特丹时,我应该有一些独特或古怪的体验吗?让我们构建一个小代理。我们在这里从 Langchain 代理加载工具。所以如果您使用 Langchain 构建代理,其中一件事就是加载工具,ElevenLabs 文本转语音,代理实际初始化该代理,然后您给出 LLM,然后您给出您喜欢的任何 LLM。然后代理类型基本上是结构化聊天,零样本,react,description。然后我们设置 verbose 为 true,然后您得到完全相同的结果。
现在我们可以进入第八步,即格式化输出。当您没有一个可读的报告时,高层次的推理是无用的。这是一个非常简单的步骤。使用 markdown,使用格式化的输出,人们可以使用它。所以只需写入 PDF 或 JSON,输出必须对人类可读,尤其是对专家而言。让我举一个网络安全 AI 代理的 markdown 格式示例。
第九步是类似的。我们想将所有内容包装在一个图形用户界面中。我们编写的代码仍然是我们电脑里的代码。我们希望它们成为人们可以使用的系统。在所有 UI 中,您有 streamlit,fast API,但 Gradio 是最快、最简单、最轻量级的。所以我倾向于几乎总是使用它。让我向您展示如何为网络安全项目构建 Gradio。
最后但同样重要的是,评估和监控。我审计的一个代理的评估得分为九十四,部署干净,但有二十万次的幻觉,十一天才被发现。所以如果您在构建代理后发布它们,请注意之前、期间和之后。这些是关键点。
在进行评估之前,三层。单元评估,使用已知输入和预期输出来测试每个工具调用和每个提示。集成评估,端到端测试整个管道。医院接待代理是否正确地将患者转交给医生?对抗性评估,是否有人可以注入恶意提示并劫持您的代理行为?工具,Deepevals,Ragas(如果您有 RAG)和 prompt foo。
在评估期间,我们进行幻觉缓解。因为 LLM 会产生幻觉,而 AI 代理会在推理、工具和记忆之间复合幻觉。这些是您可以做的三件事。一,验证链。您的代理生成一个答案,然后生成关于该答案的验证问题,然后进行修改。百分之二十八的幻觉减少,通过让代理审问自己。在 Langgraph 中,这只是两个额外的节点。第二,强制 JSON。解析失败就是幻觉。如果您的代理返回自由文本,我们期望的是结构化输出,这是一个可靠性故障。Pydantic 在输出层是您的第一个缓解措施。您已经在第二步中构建了它。三,对于高风险操作,人工介入。任何引起、删除、花费或发送的操作都需要在定义的阈值内获得人工批准。因为犯错的成本永远超过批准步骤的成本。
我还有三十一种缓解措施。所有这些都在指南中。
在进行监控之后。三个信号,输出模式合规性。如果您的 Pydantic 验证通过率低于百分之九十五,大多数时候数据会出现崩溃。然后我们有了工具成本成功率。所以高重试率不是性能问题。它们大多数时候是一个症状。一个工具正在失败,而您的代理正在掩盖它。每个代理节点的延迟。突然的峰值并不意味着您的整个系统都很慢。它会确切地告诉您哪个节点在用户注意到之前就坏了。对于工具,可以考虑 Lang Smith。如果您使用 Langchain,以及 Langfuse,如果您想开源并自托管……
现在您已经学会了如何从零开始构建生产型 AI 代理。我有九个项目,来自九个不同的行业,包含工具、架构和资源,这样您就可以开始构建了。我会在那个视频里见到您。