Hello Agents | 第四章习题 #502
Unanswered
matrixcloud
asked this question in
💬 Exercises & Q&A
Replies: 3 comments
-
|
1 |
Beta Was this translation helpful? Give feedback.
0 replies
-
|
my flask app 代码在哪里?这个代码维护助手如何运行? |
Beta Was this translation helpful? Give feedback.
0 replies
-
|
smithery那里根本操作不了,天呐 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
第四章习题
1. 本章介绍了三种经典的智能体范式:ReAct、Plan-and-Solve 和 Reflection。请分析
a. 这三种范式在"思考"与"行动"的组织方式上有什么本质区别?
b. 如果要设计一个"智能家居控制助手"(需要控制灯光、空调、窗帘等多个设备,并根据用户习惯自动调节),你会选择哪种范式作为基础架构?为什么?
首先明确,什么是依据用户习惯自动调节?可以理解为,智能体根据用户的历史操作数据进行自动调节,例如近三天用户习惯于晚上 10 点打开卧室的灯,然后接着打开空调并设置到 25 度。当智能体识别到这个习惯后,应该调整设定好的规则。这样的场景,非常适用于使用 Reflection范式,用户可能在最初设定了一个使用的规则集,现在根据用户的习惯反思并提出优化建议,最后由执行层去执行,最后得到一个最终版本用于设定新的规则集。
c. 是否可以将这三种范式进行组合使用?若可以,请尝试设计一个混合范式的智能体架构,并说明其适用场景。
可以,例如 coding agent。使用 Plan-and-Solve 范式来规划新需求的任务,接着用 ReAct范式来对子任务进行开发,在提交代码的时候,可以使用 Reflection范式来优化相应的代码。
2. 在4.2节的 ReAct 实现中,我们使用了正则表达式来解析大语言模型的输出(如 Thought 和 Action)。请思考
a. 当前的解析方法存在哪些潜在的脆弱性?在什么情况下可能会失败?
b. 除了正则表达式,还有哪些更鲁棒的输出解析方案?
使用严格标准的返回格式,例如 JSON 或 XML。
c. 尝试修改本章的代码,使用一种更可靠的输出格式,并对比两种方案的优缺点
3. 工具调用是现代智能体的核心能力之一。基于4.2.2节的 ToolExecutor 设计,请完成以下扩展实践
实现 DEMO
当调用工具急剧增加时,当前的工具描述方式可能有效,但是效率会下降,另外如果用户本身的输入很长,再加上工具的描述,可能导致 LLM 出现健忘的情况,甚至导致输入超出模型的最大长度。我认为,可以定义两层索引,第一层索引是工具的分类,例如"计算工具"、"数据工具"等;第二层索引是具体工具的名称、使用场景以及加载位置;LLM 先找分类,然后再找需要加载的工具,以实现懒加载。
4. Plan-and-Solve 范式将任务分解为"规划"和"执行"两个阶段。请深入分析
首先将存储步骤的数据结构改成有向图,每个节点表示一个步骤,每次规划实际上就是从起点规划一条路径到终点,对于某个步骤无法完成的情况,可以让 LLM 回溯到上一个成功节点,重新规划路径。
ReAct 范式更合适,因为它能够动态地调用工具,而 Plan-and-Solve 是静态的,只能在规划阶段就确定好所有的步骤。比如 ReAct 能处理机票库存不足的情况,而 Plan-and-Solve 不太适合。
通过高层的抽象可以指定做什么(What),而低层完成怎么做(How)。这样做有如下优点:
5. Reflection 机制通过"执行-反思-优化"循环来提升输出质量。请思考
首先,反思出来的建议会更好;其次,执行模型会更快,能够更快地响应用户的需求。Agent 自我优化的轮次会更少,能够更快地收敛到最优解。
不是太合理的设计。反馈中包含无需改进,实际上是一个主观的判断,达到最大迭代次数,可能会导致智能体提前结束,而没有机会得到最优解。一个更智能的终止条件需要考虑多方面因素:
a. 消耗的 Token 数量
b. 智能体的执行时间
c. 定义多维度的评判指标
d. 基于语义相似度的判断
e. ...
总之,要考虑到模型求解的边际成本,添加多维度的评判指标。
TODO
6. 提示词工程是影响智能体最终效果的关键技术。本章展示了多个精心设计的提示词模板。请分析
a. 对比4.2.3节的 ReAct 提示词和4.3.2节的 Plan-and-Solve 提示词,它们显然存在结构设计上的明显不同,这些差异是如何服务于各自范式的核心逻辑的?
b. 在4.4.3节的 Reflection 提示词中,我们使用了"你是一位极其严格的代码评审专家"这样的角色设定。尝试修改这个角色设定(如改为"你是一位注重代码可读性的开源项目维护者"),观察输出结果的变化,并总结角色设定对智能体行为的影响。
TODO
c. 在提示词中加入 few-shot 示例往往能显著提升模型对特定格式的遵循能力。请为本章的某个智能体尝试添加 few-shot 示例,并对比其效果。
TODO
7. 某电商初创公司现在希望使用"客服智能体"来代替真人客服实现降本增效,它需要具备以下功能
e. 如果判断决策存在一定争议(自我置信度低于阈值),能够进行自我反思并给出更审慎的建议
此时作为该产品的负责人:
Beta Was this translation helpful? Give feedback.
All reactions