首页 文章 精选 留言 我的

精选列表

搜索[AI智能体],共10000篇文章
优秀的个人博客,低调大师

《Spring AI 2.0实战》第16招 五种Agent模式

最近团队在做技术选型,需要一份关于开源 API 网关的调研报告。我是老李,起初把任务丢给一个模型,让它一次生成。报告很快出来了,但问题也多:官网链接已经 404,GitHub 的 star 数与实际页面不一致,论文部分只摘了摘要没有结论。最要命的是,模型自己并不觉得有问题,也不会主动回去修改。我们需要的不是更长的输出,而是把任务拆成可检查、可回退、可组合的步骤。今天就用“生成技术调研报告”这个真实场景,聊聊五种协作模式到底怎么落地。 ## 01、痛点 单次生成技术调研报告,通常会遇到四类问题。 第一,信息源单一。模型倾向于从训练数据中拼凑答案,而不是实时访问官网、代码仓库和论文数据库,导致版本、许可证、维护状态等关键信息失真。比如有一份报告里写着“最近版本为 3.3”,实际上项目仓库已经发布了 4.0。 第二,任务边界不清。一份调研报告同时包含背景梳理、社区活跃度评估、性能对比、风险判断,混在一个生成过程里,哪个环节出错很难定位。我们曾遇到报告结构完整,但性能对比部分完全缺失,因为模型把注意力放在了功能列表上。 第三,没有校验闭环。输出完就结束,缺乏“检查—发现问题—重新生成”的机制。模型不会自己质疑自己,尤其当错误藏在细节里时,读的人往往最后才发现。 第四,节点越多越容易失控。很多团队一开始就画一个复杂流程图,结果状态传递混乱,调用成本高,效果反而不如直接生成。这不是说不要拆分,而是说拆分必须有明确边界。 ## 02、是什么 这五种协作模式分别解决不同问题。 链式(Chain)把任务切成前后依赖的步骤,前一步输出作为下一步输入,例如先搜索再摘要最后格式化引用。适合流程天然线性、后一步强依赖前一步的场景。 并行(Parallelization)用于相互独立的子任务,例如同时查官网、GitHub 和论文,最后由合并步骤汇总。适合数据源不同、彼此没有依赖的场景。 路由(Routing)根据输入特征把任务交给专用处理器,例如先判断主题是软件选型还是学术综述,再走不同分支。适合入口多样、不同输入需要不同模板的场景。 编排—执行(Orchestrator-Workers)由一个编排者动态拆解任务,分派给多个执行者,再回收结果并整合。适合任务边界不预先固定、需要按情况拆解的场景。 评估—优化(Evaluator-Optimizer)先由生成者产出初稿,再由评估者指出缺陷,生成者根据反馈修改,形成循环。适合质量要求高、需要多轮校正的场景。 它们不是五个孤立工具,而是一组可以组合的过程控制手段。 ## 03、为什么 现在模型能力虽然强,但复杂任务仍然不能靠一次调用解决。技术调研报告对事实准确性要求高,涉及多个异构数据源,单一模型容易产生幻觉和信息滞后。五种模式的可贵之处在于,它们不改变模型本身,而是改变任务的组织方式。把过程拆开后,我们可以在任意节点插入人工确认、日志、缓存和重试,成本可控。对于技术团队,这意味着从“祈祷模型一次答对”转向“用流程保证结果可验证”。特别是在数据会变化的场景里,单次生成得到的是一份静态快照,而协作流水线得到的是可以持续更新的报告。 ## 04、架构 整体流程可以抽象为六个阶段:入口先经过路由识别主题,然后交给编排者拆解,编排者把子任务分派给官网、代码仓库、论文三个执行者,三者并行工作;结果合并后交给评估者检查,通过则输出报告,不通过则发回对应执行者或重新拆解。 路由节点接收“开源网关选型调研”,判断主题为“开源软件评估”,选择评估模板。编排者拆解三个子任务:官网调研、代码仓库调研、论文调研。三个执行者并行执行,各自返回结构化片段。编排者合并片段,处理冲突。评估者检查数据一致性、信息时效、维度完整性,给每个子任务打分。低于阈值就送回对应节点重做,直到通过。 状态上需要维护任务清单、上下文快照、版本号和重试计数。每个节点只负责自己那一段,输入输出保持结构化,避免把上一节点的自然语言直接透传给下一节点。比如官网执行者只接收项目名称和官网地址,返回许可证、最新版本、维护者三个字段;代码仓库执行者只接收仓库地址,返回 star 数、open issues 数、最近提交时间。 ## 05、实战 以“生成技术调研报告”为例,任务输入是:“调研开源 API 网关项目,产出选型建议”。 第一步,路由判断主题。路由节点根据关键词和项目上下文,输出 task_type = software_evaluation,并选择对应模板。如果没有路由,这份任务可能会被套用学术论文模板,漏掉社区活跃度。 第二步,编排者拆解。拆成三个子任务: - 官网调研:许可证、维护者、架构特性、最近发布版本。 - 代码仓库调研:star 趋势、PR 合并周期、issue 活跃度、最近提交。 - 论文调研:性能对比、安全分析、相关学术结论。 每个子任务都有明确的数据来源和返回字段,避免重复和遗漏。 第三步,并行执行。三个执行者各自调用外部检索工具,返回结构化 JSON 片段。例如官网执行者返回 license、latest_version、maintainer;代码仓库执行者返回 stars、open_issues、last_commit;论文执行者返回 performance_comparison、security_notes。 第四步,编排者汇总。把三份片段合并成初稿,若发现矛盾(例如官网称最近版本为 3.2,代码仓库 tag 最新为 3.1),先保留双方来源并标记冲突,而不是擅自丢弃一方。 第五步,评估者检查。检查维度包括:数据源是否更新到最近 30 天?GitHub 数据是否与页面一致?是否遗漏许可证、安全漏洞、替代方案?是否给出了可复现的性能对比?若未通过,生成一条反馈,比如“补充 Apache 2.0 许可证说明,重新抓取 GitHub 最新 release”,然后发回给编排者或对应执行者。 在一次实际运行中,官网调研节点返回了过期链接,评估者发现后没有直接通过,而是发回“官网链接 404,请从项目 README 或文档站重新获取许可证信息”。执行者重做后,报告才被放行。这个回退过程只重做官网一个节点,不会牵连代码仓库和论文部分。 ## 06、洞见 回到那个问题:是不是节点越多效果越好? 答案是否定的。五种模式的真正成本来自模型调用次数、状态复杂度和不可预测性。每增加一个执行节点,就多一次输入输出、多一份状态要维护、多一个可能出错的位置。以调研报告为例,官网、代码仓库、论文三个节点是合理的,因为数据源不同、无法互相替代;但如果再把代码仓库拆成 star 调研和 issue 调研两个节点,往往收益很低,因为两者可以从同一个页面一起获取。 可以用一句话衡量:节点价值 = 减少的返工成本 - 新增的调用与状态成本。如果一个节点不能替下游省下返工,或者不能补上不可替代的事实来源,就应该合并。好的编排不是图越复杂越牛,而是每个节点都像流水线上的质检工位,有明确的拦截清单。 ## 07、行动 建议先小后大,不要一上来就画大一统流程图。 第一步,把链式、并行、路由、编排—执行、评估—优化各写一个最小 Demo。链式最小 Demo 可以串三个步骤:搜索、摘要、引用格式化。并行最小 Demo 可以同时调用三个独立接口,最后合并。路由最小 Demo 用规则或分类模型把输入分到两个模板。编排最小 Demo 用一个编排者拆出两个执行者。评估最小 Demo 对初稿打分并修改一轮。 第二步,分别跑通五个最小闭环,确认各自能独立运行。 第三步,再组合到技术调研报告场景。组合时先固定数据格式和状态结构,避免节点间字段混乱。 第四步,给每个节点记录调用次数、耗时、失败率,数据不达标就合并或删除节点。验收标准可以简单:报告中的每个关键事实都能追溯到具体来源;任何节点失败都能单独重试;每次重做不需要重跑整个流程。 ## 08、小结 技术调研报告不是一个简单问答,而是一条需要多源采集、交叉校验、回退修正的流水线。链式解决顺序依赖,并行解决独立子任务,路由解决入口分流,编排—执行解决动态拆解,评估—优化解决质量闭环。五种模式组合起来,不是为了把图画得复杂,而是为了让每一步都可控、可回放、可修正。节点不是越多越好,每个节点都必须有明确价值。 ## 09、链接与概念说明 本文涉及的五个概念: - 链式:串行处理,前一步输出作为后一步输入。 - 并行:独立任务同时执行,最后合并。 - 路由:根据输入特征选择专用处理分支。 - 编排—执行:编排者动态拆解任务并分派执行者,回收结果。 - 评估—优化:生成与评估循环,直到满足质量条件。 进一步阅读可参考 Anthropic 官网关于多步骤协作模式的公开技术文档,以及模型 API 文档中的函数调用和结构化输出部分。也可以搜索“多阶段推理”和“结构化生成”等资料,但本文的核心价值在于:先拆成最小闭环,再按价值决定是否增加节点。

优秀的个人博客,低调大师

《Spring AI 2.0实战》第17招 Reflection怎么做

## 01、痛点 我是老李。最近在给一个核心业务做架构方案评审时,遇到一件让人哭笑不得的事。团队一位同事用大模型直接生成了一份架构设计文档,拿过来一看,章节齐全、术语专业、图表也画得像模像样。但细读下去,问题就来了:没有限流策略,没有备份方案,多可用区只写了一句“建议部署在多个区域”,成本预估则拍脑袋写了一个数字。最要命的是,模型自己在文档末尾还加了一句“本方案已经过全面评估,具备生产级可靠性”。 这件事让我开始认真思考一个被越来越多团队讨论的做法:让模型对已有的结果进行批评和修正。官方示例里也专门提供了类似的反射实现,用模型对输出做二次评审。但问题来了:模型自己评价自己,到底靠不靠谱?为什么现在要讲这个?因为很多团队已经把它当成了默认动作,每个回答都多跑一次模型,成本翻倍,效果却未必更好。今天就把原理、实战和边界一次说清楚。 ## 02、是什么 先给这个做法下一个定义。所谓反射机制,英文叫 Reflection,本质上是一个“生成 → 评价 → 修改”的反馈回路。具体来说,模型先根据需求产出一份结果,然后由另一个评估角色对这份结果从指定维度进行批评和打分,如果分数不达标,就把批评意见反馈给生成环节,重新生成,直到满足条件或者达到最大轮次。 这个思路和经典的“评估-优化”模式非常接近。在软件工程里,我们早就熟悉这种结构:开发人员写代码,测试人员挑毛病,开发人员再修改。只不过在反射机制里,生成者和评估者往往由同一个底层大模型担任,只是通过不同的角色设定和输入要求来区分职责。生成者负责创造,评估者负责找茬,生成者再根据反馈修改。 需要注意的是,反射不是简单地让模型“多看一遍自己的答案”。它必须引入明确的外部评价维度,例如安全、成本、可靠性、可维护性,并且要求评估器给出具体批评和量化评分。如果只让模型“你再检查一下”,通常效果很有限,因为缺乏明确的评价标准,模型很容易说“看起来没问题”。 ## 03、为什么 为什么需要反射?核心原因是大模型单次生成存在明显的局限性。对于简单问答,一次生成通常足够;但对于架构方案、复杂代码、合同条款、安全策略这类高价值复杂输出,单次生成就像第一版草稿,表面合理但细节往往经不起推敲。模型容易遗漏边界条件、忽略真实的成本约束、或者把常见模板套用在不合适的场景上。 反射的价值在于把隐性的质量要求显性化。我们心里可能知道一份架构方案“应该具备高可用”,但模型不知道。通过评估器把这个要求拆成具体维度,例如“是否包含限流和熔断”“是否有多可用区部署”“是否有数据备份策略”,再逐项打分,模型就有机会发现自己遗漏了什么,并在下一轮补齐。 另外,反射的成本相对人工评审要低得多。一个资深架构师审一份方案可能需要半天,而模型评估只需要几秒钟。对于高价值输出,这种成本是值得的。但不能因此把反射当成万能药,这正是后面要展开讨论的关键。 ## 04、架构 一个典型的反射机制可以抽象成四个部分。 第一是生成器。它接收原始需求和上一轮的反馈意见,生成一份新的结果。生成器可以是同一个模型,只是输入中包含了反馈。 第二是评估器。它接收生成器产出的结果,配合预先定义好的评价维度和打分标准,输出一个评分和具体的批评意见。评估器的输入设计非常关键,如果评价标准模糊,例如只写“评估方案质量”,评估器就很难给出有用的反馈。实际使用中,通常会把每个维度拆成若干子项,并要求逐项打分。 第三是循环控制。它负责判断评分是否达到阈值、是否超过最大轮次。如果达标,就结束并输出结果;如果未达标,就把批评意见作为反馈传给生成器,进入下一轮;如果轮次耗尽仍未达标,则转入人工评审或直接丢弃。 第四是最终输出。可以是达标结果,也可以是附带评估记录和未解决问题的半成品,供人工介入。 用一段伪代码表示这个流程: ```python for i in range(max_rounds): draft = generate(requirement, feedback) score, comments = evaluate( draft, dimensions=['security', 'cost', 'reliability'] ) if score >= threshold: return draft feedback = comments raise NeedHumanReview(draft, score, comments) ``` 这段逻辑并不复杂,但实际效果取决于评估器的维度和标准是否合理。很多团队在这一步偷懒,只写一句“请评估这份方案”,结果反射流于形式。 ## 05、实战 拿一个真实场景来演示。假设我们要设计一个电商订单系统的架构方案,要求是高可用、安全、成本可控。先让模型生成第一版方案。 第一版方案大概是这样的:前端通过负载均衡访问后端服务,后端使用无状态服务集群,数据库采用 MySQL 主从复制,缓存使用 Redis,文件存储使用对象存储。听起来很标准,但很多关键细节缺失。 我们把这份方案交给评估器,从三个维度打分:安全、成本、可靠性。每个维度 0 到 5 分,总分低于 12 分就判定不通过。评估器给出的批评可能包括: - 安全:未提及 API 鉴权、传输加密、敏感数据落盘加密、SQL 注入防护,得 2 分。 - 成本:未考虑数据库连接数、缓存规格、跨可用区流量费用,也没有冷热数据分层,得 2 分。 - 可靠性:缺少限流、熔断、降级、备份策略、多可用区部署说明,得 2 分。 总分 6 分,不通过。反馈写回生成器。第二轮,生成器根据批评补上:增加 API 网关层的鉴权和限流,启用 TLS 传输加密,对用户敏感字段做应用层加密,增加 WAF,数据库改为多可用区部署,Redis 使用哨兵模式,增加每日全量备份和实时 binlog 备份。再次评估,安全 4 分,成本 3 分,可靠性 4 分,总分 11 分,仍差一点。反馈指出成本估算仍然没有具体依据。第三轮,生成器补充了按量付费、预留实例、冷热数据分层和缓存容量评估。最终安全 4 分,成本 4 分,可靠性 4 分,总分 12 分,通过。 这个例子说明反射确实能补上常见遗漏。但注意,评估器对“成本 4 分”的判断本身可能并不可靠——它并不真正知道云资源单价,也不清楚业务实际流量。这正是反射的边界。 ## 06、洞见 这里必须回答一个尖锐的问题:模型自己评价自己,真的可靠吗? 答案是:部分可靠,但远非完全可靠。反射能提升的是“维度覆盖”和“结构完整性”,它更擅长发现“该写没写”的问题,而不是“写了但写错”的问题。例如,补充了备份策略,但备份策略是否真的能恢复数据?评估器很可能判断不了。补充了多可用区,但跨可用区网络延迟对业务的影响有多大?评估器也无法精确评估。 根本原因在于,评估器和生成器共享同一个能力边界。如果底层模型对某个领域的知识存在盲区,那么生成器会犯错,评估器同样会忽略。就像一个实习生写的方案,另一个实习生来审,可能两人都不清楚某个行业合规要求。模型还可能对不确定的事情表现出过度自信,给出看似有理但事实错误的评分。比如成本估算,模型可能编出一个听上去合理的数字,但和云平台实际价格相差很大。 此外,反射还有一个隐性风险:如果评估标准设计不当,模型可能学会迎合标准,而不是真正提升质量。例如只考核“是否提到限流”,模型就会在所有方案里机械地加上“限流”二字,却没有具体阈值或实现方式。这会导致一种表面合规、实际空洞的输出。 因此,反射可以提升部分复杂任务质量,但不能替代确定性的验证、测试和人工审核。确定性的验证包括单元测试、静态扫描、成本计算器、故障注入、安全基线检查等,这些工具不依赖模型的主观判断。人工审核则负责把握那些需要经验和责任兜底的环节。 一句话总结:反射是内审,不是外审。内审有用,但不能取代外部审计。 ## 07、行动 既然反射有边界,我们应该怎么用? 第一,只把反射放到高价值复杂输出上。架构方案、安全策略、合同条款、复杂算法实现,这些值得多跑几轮。普通问答、摘要、文案润色,没必要增加第二次模型调用,因为成本和延迟增加,质量提升却很有限。 第二,评估维度要具体、可打分。不要写“评估方案质量”,而是写“从安全、成本、可靠性三个维度打分,每项 0 到 5 分,列出扣分原因”。维度越具体,反馈越可执行。 第三,设置最大轮次和达标阈值。一般 2 到 3 轮即可,超过这个次数往往收益递减。如果仍未达标,应该转入人工评审,而不是无限循环。 第四,在反射之后加一道确定性校验。例如用云成本计算器核算方案成本,用静态扫描工具检查安全配置,用故障注入测试验证高可用。反射负责查漏,确定性校验负责纠错。 第五,记录评估历史。每次评估的意见和修改过程最好留存,这样能分析模型反复犯的错,也能优化评估标准。 ## 08、小结 反射机制本质上是“生成 → 评价 → 修改”的反馈回路,与评估-优化模式一脉相承。它能帮我们把隐性的质量要求显性化,在架构方案、复杂代码等高价值场景中提升完整性和常见维度覆盖。但模型自己评价自己并不完全可靠,它受限于自身能力边界,不能替代确定性验证、测试和人工审核。 真正成熟的做法,是把它当成一道内置评审工序,而不是质量背书。懂得什么时候用、怎么用、什么时候停下,比盲目叠加模型调用重要得多。 ## 09、链接与概念说明 - Reflection:反射/反思,指让模型对已有输出进行批评和修正的机制,属于“生成→评价→修改”的反馈回路。 - Evaluator-Optimizer:评估-优化模式,将生成和评价分离,由评估器驱动生成器反复优化,与反射机制思路相近。 - 确定性验证:不依赖模型主观判断的检查手段,例如单元测试、静态扫描、成本计算器、故障注入、合规基线检查等。 - 官方示例:主流大模型平台的示例中提供了反射机制的参考实现,可查阅相关文档了解具体用法。 - 推荐实践:将反射作为复杂输出流程中的中间环节,而不是最终质量关卡,最终输出前应尽量经过确定性校验或人工审核。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册