AI智能体:完整课程(高级)

高级

好了,欢迎来到高级部分。如果你已经走到这一步,说明你是认真想要构建能在现实世界中运行的真正的智能体系统。

那些让你从无到有做出原型的技术,却无法让你从原型走向量产。你需要不同的工具、不同的思维方式,以及更多的自律。

现在让我们来探讨一下这些内容。

多智能体系统的高级任务分解

我们已经讨论过任务分解。但当你使用多智能体系统时,这会变得越来越复杂。

你可以使用四种主要模式来指导你做好这件事。BTW,我是从这篇很棒的博客改编的 ------ 查看更多细节!

模式1:功能分解

在这种模式下,我们按技术领域或专业知识来划分任务。这就是我们到目前为止在示例中一直在使用的方法------根据需要完成的工作类型来拆分任务。

按回车键或点击以查看全尺寸图像

例如,你可以考虑全栈功能开发。这里有前端工作、后端逻辑、数据库变更,也许还有 API 更新。每一项都需要不同的知识和不同的工具。所以你要创建专门针对每个领域的智能体。

模式2:空间分解

你还可以按文件或目录结构进行拆分。当你处理包含许多可独立处理的文件的大型代码库时,这种方法尤其强大。

假设你正在进行大规模重构------也许是将所有 API 端点更新到新的身份验证系统,而且你在不同服务中有数十个文件。

你进行空间分解:

  • 代理1处理/services/users/*

  • 代理2处理/services/orders/*

  • 代理3处理 /services/payments/*

  • 代理4处理/services/notifications/*

在这种情况下,你可以通过确保代理在代码库的不同部分工作来减少冲突。他们可以并行工作。但如果你的文件相互之间存在复杂的依赖关系,空间分解就会失效。

模式3:时间分解

模式3是关于将任务分解为顺序阶段,其中后续阶段依赖于前期阶段的完成。

让我们以产品发布为例。你不能某天一觉醒来就开始发送促销邮件。这里有一个逻辑顺序:

阶段1:市场调研 --- 分析竞争对手,调查目标客户,确定定位机会阶段2:发布规划 --- 确定信息传递内容,设定价格,制定时间表,确定渠道阶段3:资产创建 --- 撰写文案,设计图形,构建着陆页,准备邮件序列阶段4:发布与监控 --- 执行活动,跟踪指标,回应反馈,实时调整

每个阶段都有自己的代理或代理团队。阶段2直到阶段1完成并审核后才开始。

模式4:数据驱动的分解

最后,我们可以按数据分区进行拆分。这种方法不太常见,但对于某些用例非常强大,特别是涉及大型数据集的任务,在这些任务中,你可以对数据进行分区并独立处理各个数据块。

假设你正在分析应用程序日志以识别性能问题。你有上个月的数千兆字节的日志。

您可以按时间或按服务进行分区:

  • 代理1处理第1周的日志

  • 代理2处理第2周的日志

  • 代理3处理第3周的日志

  • 代理4处理第4周的日志

每个代理独立运行分析,然后在最后汇总结果。

你也可以混合使用这些模式。例如,一个全栈功能可能会对主要结构(前端、后端、数据库)使用功能分解,但后端代理在内部使用时间分解(设计 API → 实现逻辑 → 添加测试)。

提高质量

好吧,假设到这一步我们已经有了一个运行中的系统,我们进行了全面评估以找出错误,但仍然对性能不满意。以下是应对措施。

首先要明白的是,你所处理的是两种根本不同类型的组件,它们需要不同的改进策略。

首先,我们有非大语言模型(LLM)组件。这些包括网络搜索、检索增强生成(RAG)检索、代码执行、语音识别、视觉模型、PDF解析器等。

这些可以通过两种主要方式加以改进:

  • **调整参数。**调整诸如网络搜索日期范围、前k个结果、RAG块大小、相似度阈值等设置。

  • **或者,更换供应商。**尝试使用其他网络搜索 API、不同的 OCR 或视觉模型,等等。

然后是大语言模型(LLM)组件。这些组件用于生成、提取、推理------在任何使用语言模型本身的地方。

我们可以做很多事情来改进这一部分:

  • **优化提示。**添加明确的指令、约束和模式。使用少量输入输出对向模型展示你的需求。

  • **尝试其他模型。**有些模型更擅长遵循指令,有些则在代码或事实回忆方面表现出色。不要认为一种模型适用于所有情况。

  • 将艰巨的任务分解成更小的部分。

  • **作为最后手段进行微调。**微调功能强大,但成本高昂。将其留到成熟系统中使用,在这些系统中,你需要提升最后几个百分点的质量,且已尝试过其他所有方法。

降低延迟

确保输出质量应该是你的第一步。之后,我们再来谈谈降低延迟。

  1. 获取基线

第一步是为工作流程中的每个步骤计时。你可能会发现,比如大语言模型(LLM)生成搜索词需要7秒,网络搜索需要5秒,撰写文章需要11秒,依此类推。

这为你提供了一个基线,让你知道应该优化什么。

  1. 并行化

接下来,尽可能并行运行各项任务。例如网页抓取、多项搜索或解析多个文档。这往往是最容易实现的优化。

  1. 合理调整模型规模

在任务简单(如关键词生成)的情况下,使用更小、更快的大语言模型(LLM),并将重量级模型留作综合和推理使用。

  1. 尝试更快的供应商。

吞吐量和令牌流速度差异很大。优化服务的提供商可以在不改变任何提示的情况下节省数秒时间。

  1. 最后,修剪上下文。

较短的提示和上下文意味着更快的解码速度,因此请尽量只保留该步骤真正需要的内容。

降低成本

在质量高且延迟可控的情况下,你就可以开始考虑成本了。首先,你需要像测量延迟一样,测量每一步的成本。

代理系统有几个成本来源:

**大语言模型调用:**这由输入令牌和输出令牌决定。这些通常分开定价(输入令牌较便宜,输出令牌成本较高)。

**API****调用:**如网络搜索、PDF转换、图像生成、语音转文本等。这些通常按次或按单位计费。

**基础设施:**如果你正在运行自己的检索系统、向量数据库或用于代码执行的计算资源。

假设你正在构建一个撰写论文的研究代理。以下是一次运行可能的成本:

按回车键或点击以查看全尺寸图像

如果你每天运行1000次,那就是每天80美元,或每月2400美元。

按回车键或点击以查看全尺寸图像

一旦你知道每一步的成本,以下是你可以采取的优化措施:

  • **先解决大开销的部分。**如果网络搜索每次调用花费2美分,而你每次运行调用10次,那就是20美分。尽最大努力减少调用次数、缓存结果或批量查询。

  • **对模型进行分层。**简单任务使用低成本模型,前沿模型仅在真正关键的地方使用。

  • **积极缓存。**像搜索响应、嵌入、块检索或中间摘要这样的确定性结果不应每次都重新计算。

  • **限制输出。**使用诸如 "返回包含这些必填字段的 JSON"、"最多提供 5 个要点" 之类的指令,要求输出结构化、简洁的结果。使用更少的令牌,降低费用。

  • **批量处理。**如果您要处理许多相似的项目,尽可能将操作捆绑在一起。例如,在AWS上,批量处理的成本仅为按需处理的50%。

可观测性和监控

你已经有了一个在质量、延迟和成本方面都让你满意的系统。现在我们需要确保它在扩展后仍能按预期运行。

这就是监控和可观测性发挥作用的地方。可观测性涵盖可调试性、质量监控和幻觉跟踪。基本上,任何有助于你观察智能体行为和性能的内容都属于可观测性范畴。

棘手的是,AI系统的可观测性与传统软件有着根本的不同。

使用传统软件时,你可以追踪到清晰的执行路径。函数A调用函数B,函数B查询数据库、返回数据、渲染页面,诸如此类。

由于多种不同原因,AI系统并非如此运作:

  • 它们是非确定性的。相同的输入可能会根据模型的响应产生不同的输出。你不能简单地重复请求并期望得到相同的结果。

  • 他们通过并行运行的工具、代理生成子代理等方式实现分布式执行。

  • 大量外部依赖项存在潜在的故障点,且这些故障点不受你控制。

  • 还有更多!

为了管理这一切,我们需要两种可见性:

  • "Zoom-in"指标可帮助您调试单次运行。这是您的完整跟踪信息:提示、工具调用、令牌使用情况、重试尝试以及每个决策点。基本上包含重现错误并确切找出错误发生位置所需的一切信息。

  • "缩小"指标告诉你整个系统在多次运行中的表现。这包括自动质量检查(通常以大语言模型作为评判)、幻觉率、成功率/投资回报率(ROI)衡量指标,以及显示变化是有益还是有害的趋势线。

你不仅要记录智能体做了什么,还要记录它这么做的原因。例如,你可能会记录这样的内容:"智能体选择使用网络搜索而非检索增强生成(RAG),因为查询中包含'近期'"或"反思过程识别出3个问题:缺少引用、日期模糊、语气不当"

当你同时运行数千个智能体时,你无法手动查看每一条追踪信息。这就是质量抽样发挥作用的地方。与其深入检查每一次执行,你可以定义一个抽样率------比如,总运行次数的一定百分比------来评估质量和幻觉情况。然后,系统会使用这部分执行来计算智能体的整体质量得分和幻觉得分。

这使您能够对修复和改进领域进行优先级排序。

除了技术指标,你还需要了解用户行为。

  • **人们实际在寻求什么?**他们是否按预期使用你的代理,还是找到了创造性的变通方法?

  • **他们在哪里卡住了?**他们会重新表述并再次尝试吗?这表明第一次尝试没有成功。

  • **他们如何处理输出结果?**如果他们立即要求修改,那么初始质量就不够好。

  • **会话时长是多少?**非常短的会话可能意味着快速成功或立即失败。非常长的会话可能意味着代理有能力但效率低下。

这些定性数据与你的技术指标一样,都能为你的产品路线图提供指导。

安全

最后,我们需要谈谈构建强大系统中最不令人兴奋但最重要的部分之一:安全。

就像可观测性一样,AI智能体的安全性与传统应用程序的安全性不同。你不仅要防范外部攻击者,实际上还必须防范自己的系统做出危险决策或被操纵而采取有害行动。

这些就是需要留意的事项:

  • **提示注入:**用户输入或外部数据中的恶意内容,会劫持你的代理指令

  • **不安全的代码生成:**代理编写访问敏感数据或执行危险操作的代码

  • **数据泄露:**通过代理输出或工具调用暴露的PII或专有信息

  • **资源耗尽:**代理启动高成本操作或无限循环

让我们特别深入探讨一下代码执行。代码执行是智能体的终极工具。它极其强大,因为智能体可以编写代码来生成图表、创建 Markdown 文件、处理数据,并且通常可以在你设定的边界内"为所欲为"。

这是一把双刃剑。

许多任务可以通过定义明确的自定义工具来完成,因此您的系统并不总是需要退回到自由形式的编码。但当您启用它时,您需要设置防护措施。

以下是安全执行代码的方法:

  • **沙盒执行。**使用 Docker 或受限的运行器环境。将代码执行与主应用程序完全隔离。代码应在每次执行后销毁的容器中运行。

  • **资源限制。**设置超时时间、内存上限、CPU限制。阻止危险的导入操作、网络访问(除非明确需要),以及在指定临时目录之外的文件系统写入操作。

  • **仅使用白名单库。**允许使用特定的、安全的库,如pandas、numpy或datetime。不允许随意安装。如果代理需要某个库,你需要明确地将其添加到白名单中。

  • **验证加反思循环。**如果代码执行出错,捕获回溯信息并让模型修复代码。给它一到两次尝试机会,并确保设置了断路器。

  • **确定性输入/输出。**让代码返回一个小的、结构化的结果------一个数字、一个列表、一个JSON对象。然后你再为用户格式化这个结果。不要让代码直接向用户输出或写入他们可以访问的文件。

  • 以及输入和输出的安全处理,确保所有输入在到达代理之前都经过验证,所有输出都经过扫描,以检查是否包含API密钥或PII等敏感数据。

高级部分就到此结束啦!掌握了这些内容,你就准备好构建可扩展并在生产环境中为用户提供服务的真实系统了。

奖金

但正如承诺的那样,我们还有一个额外福利要送给超级高手们。

我们今天讨论的大部分内容都假定你正在使用像LangGraph或CrewAI这样的框架。但如果你是一名对了解Claude Code等智能体工具内部工作原理感兴趣的开发者,我强烈推荐这篇关于智能体系统设计的博客:gerred.github.io/building-an...

它探讨了诸如三个核心层(终端 UI、大语言模型 "智能" 层和工具层)、如何使用异步生成器构建响应式命令循环、流式传输 + 工具调用模式,甚至还涉及一个并行执行引擎和智能工具调度(读与写),这些在底层与支撑 Claude Code 和 Cursor 的技术极为相似。

相关推荐
540_5402 小时前
ADVANCE Day27
人工智能·python·机器学习
北邮刘老师2 小时前
马斯克的梦想与棋盘:空天地一体的智能体互联网
数据库·人工智能·架构·大模型·智能体·智能体互联网
AI码上来2 小时前
小智AI 如何自定义唤醒词+背景图:原理+流程拆解
人工智能
多则惑少则明2 小时前
AI大模型实用(八)Java快速实现智能体整理(使用LangChain4j-agentic来进行情感分析/分类)
java·人工智能·spring ai·langchain4j
m0_692457102 小时前
ROI切割-感兴趣区域
人工智能·深度学习·计算机视觉
love530love2 小时前
Win11+RTX3090 亲测 · ComfyUI Hunyuan3D 全程实录 ③:diso 源码编译实战(CUDA 13.1 零降级)
开发语言·人工智能·windows·python·comfyui·hunyuan3d·diso
落羽的落羽2 小时前
【C++】深入浅出“图”——图的遍历与最小生成树算法
linux·服务器·c++·人工智能·算法·机器学习·深度优先
独自归家的兔2 小时前
Qwen3-Omni-Captioner:通义千问 3-Omni 基座的智能音频描述开源模型
人工智能·语音识别
yesyesyoucan2 小时前
AI证件照生成技术全解析:人脸识别、背景分割与格式合规性实现方案
人工智能·考研·高考