第四章习题个人解答 #313
Unanswered
SilkSong
asked this question in
💬 Exercises & Q&A
第四章习题个人解答
#313
Replies: 2 comments
-
|
牛 |
Beta Was this translation helpful? Give feedback.
0 replies
-
|
太赞了! |
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.
-
一
ReAct 和 Plan-and-solve 的区别是直观的, 一个是走一步看一步,动态规划,一个是谋定而后动,先生成整体的计划,再严格按步骤执行;
ReAct 和 Reflection 都是思考-行动循环执行, 也都有着之前执行的历史记忆。但 Reflection 根据它的意识词, 它可以对当前的行动进行反思, 并且它并不是一定会进行下一次行动, 如果当前行动足够好,它就会停下;相反,如果当前行动非常不好, 它会反思, 可能会考虑别的方法, 而不是沿着当前路线持续迭代。
我会选择 ReAct 作为基础架构。 首先该场景并不需要按照步骤执行计划, 所以 Plan-and-solve 不适合, 其次它也不是对最终结果的质量、准确性和可靠性有极高要求的场景,并且要求一定的实时性,所以 Reflection 并不合适。ReAct 是合适的, 它需要调用外部工具 (智能家居的 API), 天然的就适合使用 ReAct 框架, 其次 ReAct 可以根据外部的反馈例如天气, 房间温度/湿度来判断是否开启空调/加湿器, 从而达到自主调节的目的
对于一个复杂的问题, 可以先由 Plan-and-solve 形成一个整体的执行框架, 例如 step1, step2, step3..... 在每个执行步骤内, 通过 ReAct 来实现外部工具调用以及行动决策, 在 ReAct 过程中, 加入 Reflection 的思想, 例如再返回 observation 后,反思工具选对了么?如果选的不对 是否应该选择新的工具等..
二
在学习过程中, 多次运行代码,LLM输出的最终行动 (Finsih Action) 都只有起始大括号, 没有终止大括号, 导致代码
match = re.match(r"\w+\[(.*)\]", action_text)会因为缺少\]而解析失败, 本质上是 LLM 输出的是自然语言, 一点符号上的确实或者变动就会导致正则匹配失败。可以不解析自然语言, 直接让模型输出结构化结果例如 XML 或者 JSON, 一般是 JSON, JSON 有许多库可以更鲁棒的解析;或者彻底绕开文本解析, 使用 Function Calling, 让模型直接返回结构化 JSON, 由服务端保证结构, 但依赖底层 LLM/SDK 的支持, 不具有普遍性
代码参见: https://github.com/SilkSong/Hello-Agents-Solution/blob/main/chapter04/ReAct_JSON.py
JSON 解析:
正则解析:
三
AI 生成, 代码参见: https://github.com/SilkSong/Hello-Agents-Solution/blob/main/chapter04/toos_Calculator.py
四
五
六
ReAct 的提示词定义了一个模板, 包括角色定义, 工具清单, 格式规约, 和动态上下文, 其中工具清单和格式规约强制 LLM 的输出具有结构性, 才得以被解析为 thought 和 action 来服务于整个 ReAct 的核心流程, 提供了 history 的历史可以让 LLM 拥有完整的上下文进行决策。
Plan-and-solve 则因为包含一个规划器和一个执行器的角色,需要编写两个提示词, 除了基础的角色定位, 规划器也强制规约了输出的格式,方便执行器进行每步计划的解析; 执行器则包含原始问题, 完整计划,历史步骤结果以及当前步骤来让 LLM 拥有完整的上下文进行决策
尝试了几个实例, 更换后没有太多差别😂。但理论上, 对于特定的任务, 如果改为"注重代码可读性的开源项目维护者", 代码中可能会多一些注释来帮助理解
ReAct 加入 Few-shot
七
Beta Was this translation helpful? Give feedback.
All reactions