Parcourir la source

docs: update exercise for chapter4

Tsumugii24 il y a 8 mois
Parent
commit
f4d5ed8d05
1 fichiers modifiés avec 60 ajouts et 0 suppressions
  1. 60 0
      docs/chapter4/第四章 智能体经典范式构建.md

+ 60 - 0
docs/chapter4/第四章 智能体经典范式构建.md

@@ -1242,6 +1242,66 @@ def find_primes(n):
 
 至此,我们已经掌握了构建单个智能体的核心技术。为了过渡知识,以及对实际应用更加深入。下一节我们将会探索不同低代码平台的使用方式以及轻代码构建agent的方案。
 
+## 习题
+
+> <strong>提示</strong>:部分习题没有标准答案,重点在于培养学习者对智能体范式设计的综合理解和实践能力。
+
+1. 本章介绍了三种经典的智能体范式:`ReAct`、`Plan-and-Solve` 和 `Reflection`。请分析:
+
+   - 这三种范式在"思考"与"行动"的组织方式上有什么本质区别?
+   - 如果要设计一个"智能家居控制助手"(需要控制灯光、空调、窗帘等多个设备,并根据用户习惯自动调节),你会选择哪种范式作为基础架构?为什么?
+   - 是否可以将这三种范式进行组合使用?若可以,请尝试设计一个混合范式的智能体架构,并说明其适用场景。
+
+2. 在4.2节的 `ReAct` 实现中,我们使用了正则表达式来解析大语言模型的输出(如 `Thought` 和 `Action`)。请思考:
+
+   - 当前的解析方法存在哪些潜在的脆弱性?在什么情况下可能会失败?
+   - 除了正则表达式,还有哪些更鲁棒的输出解析方案?
+   - 尝试修改本章的代码,使用一种更可靠的输出格式,并对比两种方案的优缺点
+
+3. 工具调用是现代智能体的核心能力之一。基于4.2.2节的 `ToolExecutor` 设计,请完成以下扩展实践:
+
+   > <strong>提示</strong>:这是一道动手实践题,建议实际编写代码
+
+   - 为 `ReAct` 智能体添加一个"计算器"工具,使其能够处理复杂的数学计算问题(如"计算 `(123 + 456) × 789/ 12 = ?` 的结果")
+   - 设计并实现一个"工具选择失败"的处理机制:当智能体多次调用错误的工具或提供错误的参数时,系统应该如何引导它纠正?
+   - 思考:如果可调用工具的数量增加到$50$个甚至$100$个,当前的工具描述方式是否还能有效工作?在可调用工具数量随业务需求显著增加时,从工程角度如何优化工具的组织和检索机制?
+
+4. `Plan-and-Solve` 范式将任务分解为"规划"和"执行"两个阶段。请深入分析:
+
+   - 在4.3节的实现中,规划阶段生成的计划是"静态"的(一次性生成,不可修改)。如果在执行过程中发现某个步骤无法完成或结果不符合预期,应该如何设计一个"动态重规划"机制?
+   - 对比 `Plan-and-Solve` 与 `ReAct`:在处理"预订一次从北京到上海的商务旅行(包括机票、酒店、租车)"这样的任务时,哪种范式更合适?为什么?
+   - 尝试设计一个"分层规划"系统:先生成高层次的抽象计划,然后针对每个高层步骤再生成详细的子计划。这种设计有什么优势?
+
+5. `Reflection` 机制通过"执行-反思-优化"循环来提升输出质量。请思考:
+
+   - 在4.4节的代码生成案例中,不同阶段使用的是同一个模型。如果使用两个不同的模型(例如,用一个更强大的模型来做反思,用一个更快的模型来做执行),会带来什么影响?
+   - `Reflection` 机制的终止条件是"反馈中包含<strong>无需改进</strong>"或"达到最大迭代次数"。这种设计是否合理?能否设计一个更智能的终止条件?
+   - 假设你要搭建一个"学术论文写作助手",它能够生成初稿并不断优化论文内容。请设计一个多维度的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个工具及其功能描述。
+   - 如何设计提示词来确保智能体的决策既符合公司利益,又能保持对用户的友好态度?
+   - 这个产品上线后可能面临哪些风险和挑战?如何通过技术手段来降低这些风险?
+
 ## 参考文献
 
 [1] Yao S, Zhao J, Yu D, et al. React: Synergizing reasoning and acting in language models[C]//International Conference on Learning Representations (ICLR). 2023.