习题
提示:部分习题没有标准答案,重点在于培养学习者对智能体范式设计的综合理解和实践能力。
-
本章介绍了三种经典的智能体范式:
ReAct、Plan-and-Solve和Reflection。请分析:- 这三种范式在"思考"与"行动"的组织方式上有什么本质区别?
答: ReAct是一个实时思考-行动-观察方式,每次思考都根据之前的行动来决定下一步的行动。Plan-and-Solve是先规划再行动,先给出全局规划再逐步执行。Reflection是每次行动后由大模型生成一个反馈,让大模型根据反馈对答案进行调整
- 如果要设计一个"智能家居控制助手"(需要控制灯光、空调、窗帘等多个设备,并根据用户习惯自。动调节),你会选择哪种范式作为基础架构?为什么?
答: 我会使用ReAct的范式。每次行动后进行观察,即可以观察对应设备是否正确启动,也可以观察用户的习惯,送入大模型继续思考。
- 是否可以将这三种范式进行组合使用?若可以,请尝试设计一个混合范式的智能体架构,并说明其适用场景。
答: 可以,总体上使用React,到执行阶段使用plan-and-solve方式,最后对该次行动生成对应的反馈,让大模型根据反馈去进行思考下一步。
- 这三种范式在"思考"与"行动"的组织方式上有什么本质区别?
-
在4.2节的
ReAct实现中,我们使用了正则表达式来解析大语言模型的输出(如Thought和Action)。请思考:- 当前的解析方法存在哪些潜在的脆弱性?在什么情况下可能会失败?
答: 当答案没有Thought和Action时,会匹配失败
- 除了正则表达式,还有哪些更鲁棒的输出解析方案?
答: 不会
- 尝试修改本章的代码,使用一种更可靠的输出格式,并对比两种方案的优缺点
答: 不会
- 当前的解析方法存在哪些潜在的脆弱性?在什么情况下可能会失败?
-
工具调用是现代智能体的核心能力之一。基于4.2.2节的
ToolExecutor设计,请完成以下扩展实践:提示:这是一道动手实践题,建议实际编写代码
- 为
ReAct智能体添加一个"计算器"工具,使其能够处理复杂的数学计算问题(如"计算(123 + 456) × 789/ 12 = ?的结果") - 设计并实现一个"工具选择失败"的处理机制:当智能体多次调用错误的工具或提供错误的参数时,系统应该如何引导它纠正?
- 思考:如果可调用工具的数量增加到$50$个甚至$100$个,当前的工具描述方式是否还能有效工作?在可调用工具数量随业务需求显著增加时,从工程角度如何优化工具的组织和检索机制?
- 为
-
Plan-and-Solve范式将任务分解为"规划"和"执行"两个阶段。请深入分析:- 在4.3节的实现中,规划阶段生成的计划是"静态"的(一次性生成,不可修改)。如果在执行过程中发现某个步骤无法完成或结果不符合预期,应该如何设计一个"动态重规划"机制?
答: 设计这样的机制,当检测到某个步骤没法完成或结果不符合预期,应该停止并记录出错原因,将原因送入大模型让大模型进行重新规划
- 对比
Plan-and-Solve与ReAct:在处理"预订一次从北京到上海的商务旅行(包括机票、酒店、租车)"这样的任务时,哪种范式更合适?为什么?答: 使用Plan-and-Solve更合适,由大模型进行规划好具体路径再进行执行,可以保证更符合用户要求且能让执行分布进行
- 尝试设计一个"分层规划"系统:先生成高层次的抽象计划,然后针对每个高层步骤再生成详细的子计划。这种设计有什么优势?
答: 可以将问题进一步简化,让执行效率更高
- 在4.3节的实现中,规划阶段生成的计划是"静态"的(一次性生成,不可修改)。如果在执行过程中发现某个步骤无法完成或结果不符合预期,应该如何设计一个"动态重规划"机制?
-
Reflection机制通过"执行-反思-优化"循环来提升输出质量。请思考:- 在4.4节的代码生成案例中,不同阶段使用的是同一个模型。如果使用两个不同的模型(例如,用一个更强大的模型来做反思,用一个更快的模型来做执行),会带来什么影响?
答: 在该例子中,反思的程度很高,但执行的完成度可能不高
Reflection机制的终止条件是"反馈中包含无需改进"或"达到最大迭代次数"。这种设计是否合理?能否设计一个更智能的终止条件?答: 合理,没改进思路
- 假设你要搭建一个"学术论文写作助手",它能够生成初稿并不断优化论文内容。请设计一个多维度的Reflection机制,从段落逻辑性、方法创新性、语言表达、引用规范等多个角度进行反思和改进。
答: 确定不同角度的权重,根据不同的权重进行不同程度和顺序的反思和改进
- 在4.4节的代码生成案例中,不同阶段使用的是同一个模型。如果使用两个不同的模型(例如,用一个更强大的模型来做反思,用一个更快的模型来做执行),会带来什么影响?
-
提示词工程是影响智能体最终效果的关键技术。本章展示了多个精心设计的提示词模板。请分析:
- 对比4.2.3节的
ReAct提示词和4.3.2节的Plan-and-Solve提示词,它们显然存在结构设计上的明显不同,这些差异是如何服务于各自范式的核心逻辑的?答: 根据不同的结构设计,引导大模型根据不同的结构,来进行观察或反馈等操作
- 在4.4.3节的
Reflection提示词中,我们使用了"你是一位极其严格的代码评审专家"这样的角色设定。尝试修改这个角色设定(如改为"你是一位注重代码可读性的开源项目维护者"),观察输出结果的变化,并总结角色设定对智能体行为的影响。 - 在提示词中加入
few-shot示例往往能显著提升模型对特定格式的遵循能力。请为本章的某个智能体尝试添加few-shot示例,并对比其效果。
- 对比4.2.3节的
-
某电商初创公司现在希望使用"客服智能体"来代替真人客服实现降本增效,它需要具备以下功能:
a. 理解用户的退款申请理由
b. 查询用户的订单信息和物流状态
c. 根据公司政策智能地判断是否应该批准退款
d. 生成一封得体的回复邮件并发送至用户邮箱
e. 如果判断决策存在一定争议(自我置信度低于阈值),能够进行自我反思并给出更审慎的建议
此时作为该产品的负责人:
- 你会选择本章的哪种范式(或哪些范式的组合)作为系统的核心架构?
- 这个系统需要哪些工具?请列出至少3个工具及其功能描述。
- 如何设计提示词来确保智能体的决策既符合公司利益,又能保持对用户的友好态度?
- 这个产品上线后可能面临哪些风险和挑战?如何通过技术手段来降低这些风险?
答: 我会使用ReAct和Reflection结合。工具1用来查询用户订单状态和物流情况,工具2用于根据政策判断是否退款,工具3用于给用户发邮箱。设计提示词使要求大模型首先考虑公司利益,其次要让回答语气表现为对用户友好