习题

提示:部分习题没有标准答案,重点在于培养学习者对智能体范式设计的综合理解和实践能力。

  1. 本章介绍了三种经典的智能体范式:ReActPlan-and-SolveReflection。请分析:

    • 这三种范式在"思考"与"行动"的组织方式上有什么本质区别?

      : ReAct是一个实时思考-行动-观察方式,每次思考都根据之前的行动来决定下一步的行动。Plan-and-Solve是先规划再行动,先给出全局规划再逐步执行。Reflection是每次行动后由大模型生成一个反馈,让大模型根据反馈对答案进行调整

    • 如果要设计一个"智能家居控制助手"(需要控制灯光、空调、窗帘等多个设备,并根据用户习惯自。动调节),你会选择哪种范式作为基础架构?为什么?

      : 我会使用ReAct的范式。每次行动后进行观察,即可以观察对应设备是否正确启动,也可以观察用户的习惯,送入大模型继续思考。

    • 是否可以将这三种范式进行组合使用?若可以,请尝试设计一个混合范式的智能体架构,并说明其适用场景。

      : 可以,总体上使用React,到执行阶段使用plan-and-solve方式,最后对该次行动生成对应的反馈,让大模型根据反馈去进行思考下一步。

  2. 在4.2节的 ReAct 实现中,我们使用了正则表达式来解析大语言模型的输出(如 ThoughtAction)。请思考:

    • 当前的解析方法存在哪些潜在的脆弱性?在什么情况下可能会失败?

      : 当答案没有Thought和Action时,会匹配失败

    • 除了正则表达式,还有哪些更鲁棒的输出解析方案?

      : 不会

    • 尝试修改本章的代码,使用一种更可靠的输出格式,并对比两种方案的优缺点

      : 不会

  3. 工具调用是现代智能体的核心能力之一。基于4.2.2节的 ToolExecutor 设计,请完成以下扩展实践:

    提示:这是一道动手实践题,建议实际编写代码

    • ReAct 智能体添加一个"计算器"工具,使其能够处理复杂的数学计算问题(如"计算 (123 + 456) × 789/ 12 = ? 的结果")
    • 设计并实现一个"工具选择失败"的处理机制:当智能体多次调用错误的工具或提供错误的参数时,系统应该如何引导它纠正?
    • 思考:如果可调用工具的数量增加到$50$个甚至$100$个,当前的工具描述方式是否还能有效工作?在可调用工具数量随业务需求显著增加时,从工程角度如何优化工具的组织和检索机制?
  4. Plan-and-Solve 范式将任务分解为"规划"和"执行"两个阶段。请深入分析:

    • 在4.3节的实现中,规划阶段生成的计划是"静态"的(一次性生成,不可修改)。如果在执行过程中发现某个步骤无法完成或结果不符合预期,应该如何设计一个"动态重规划"机制?

      : 设计这样的机制,当检测到某个步骤没法完成或结果不符合预期,应该停止并记录出错原因,将原因送入大模型让大模型进行重新规划

    • 对比 Plan-and-SolveReAct:在处理"预订一次从北京到上海的商务旅行(包括机票、酒店、租车)"这样的任务时,哪种范式更合适?为什么?

      : 使用Plan-and-Solve更合适,由大模型进行规划好具体路径再进行执行,可以保证更符合用户要求且能让执行分布进行

    • 尝试设计一个"分层规划"系统:先生成高层次的抽象计划,然后针对每个高层步骤再生成详细的子计划。这种设计有什么优势?

      : 可以将问题进一步简化,让执行效率更高

  5. Reflection 机制通过"执行-反思-优化"循环来提升输出质量。请思考:

    • 在4.4节的代码生成案例中,不同阶段使用的是同一个模型。如果使用两个不同的模型(例如,用一个更强大的模型来做反思,用一个更快的模型来做执行),会带来什么影响?

      : 在该例子中,反思的程度很高,但执行的完成度可能不高

    • Reflection 机制的终止条件是"反馈中包含无需改进"或"达到最大迭代次数"。这种设计是否合理?能否设计一个更智能的终止条件?

      : 合理,没改进思路

    • 假设你要搭建一个"学术论文写作助手",它能够生成初稿并不断优化论文内容。请设计一个多维度的Reflection机制,从段落逻辑性、方法创新性、语言表达、引用规范等多个角度进行反思和改进。

      : 确定不同角度的权重,根据不同的权重进行不同程度和顺序的反思和改进

  6. 提示词工程是影响智能体最终效果的关键技术。本章展示了多个精心设计的提示词模板。请分析:

    • 对比4.2.3节的 ReAct 提示词和4.3.2节的 Plan-and-Solve 提示词,它们显然存在结构设计上的明显不同,这些差异是如何服务于各自范式的核心逻辑的?

      : 根据不同的结构设计,引导大模型根据不同的结构,来进行观察或反馈等操作

    • 在4.4.3节的 Reflection 提示词中,我们使用了"你是一位极其严格的代码评审专家"这样的角色设定。尝试修改这个角色设定(如改为"你是一位注重代码可读性的开源项目维护者"),观察输出结果的变化,并总结角色设定对智能体行为的影响。
    • 在提示词中加入 few-shot 示例往往能显著提升模型对特定格式的遵循能力。请为本章的某个智能体尝试添加 few-shot 示例,并对比其效果。
  7. 某电商初创公司现在希望使用"客服智能体"来代替真人客服实现降本增效,它需要具备以下功能:

    a. 理解用户的退款申请理由

    b. 查询用户的订单信息和物流状态

    c. 根据公司政策智能地判断是否应该批准退款

    d. 生成一封得体的回复邮件并发送至用户邮箱

    e. 如果判断决策存在一定争议(自我置信度低于阈值),能够进行自我反思并给出更审慎的建议

    此时作为该产品的负责人:

    • 你会选择本章的哪种范式(或哪些范式的组合)作为系统的核心架构?
    • 这个系统需要哪些工具?请列出至少3个工具及其功能描述。
    • 如何设计提示词来确保智能体的决策既符合公司利益,又能保持对用户的友好态度?
    • 这个产品上线后可能面临哪些风险和挑战?如何通过技术手段来降低这些风险?

    : 我会使用ReAct和Reflection结合。工具1用来查询用户订单状态和物流情况,工具2用于根据政策判断是否退款,工具3用于给用户发邮箱。设计提示词使要求大模型首先考虑公司利益,其次要让回答语气表现为对用户友好

感谢你的访问,欢迎交流。