This commit consolidates a large set of host-mode security and UX fixes across backend and frontend. Security / execution model: - Make permission/execution mode switches apply immediately (no deferred pending-only behavior). - Keep runtime mode change notices durable and visible via user-message guidance path. - Add explicit runtime message source taxonomy support and persistence: user / presend / guidance / notify / sub_agent / background_command. - Ensure guidance/notify insertion is batched per tool-cycle so mid-run inserts are committed together. - Separate notify from guidance semantics for mode-change notices. - Add direct-mode auto-fallback handling visibility on frontend. Approval and command gating: - Align run_command approval pre-check logic with docker behavior for approval/auto_approval modes in host execution paths. - Keep approval retry flow and final-result semantics intact when permission errors trigger approval. - Externalize forbidden command keyword list into JSON config: config/forbidden_commands.json. - Update forbidden command rejection message to user-facing wording: 用户不允许执行包含“... ”的指令. Prompt/runtime guidance: - Refine execution-mode runtime rule text to avoid endless workaround loops: one safe alternative first, then request switching to direct mode when truly required. Chat rendering / message UX: - Prevent injected guidance/notify user-messages from incorrectly triggering assistant work header/timer chain. - Restore correct visibility after history reload while preserving runtime-source behavior. - Update user-header icon/label rendering by message source: - guidance -> 引导 + navigation icon - notify/sub_agent/background_command -> 通知 + bell icon - user/presend -> keep normal user header. - Add new icons: static/icons/navigation.svg, static/icons/bell.svg. Approval panel UX: - Convert desktop approval panel from layout-compress sidebar to overlay + blur sheet. - Fix panel transition behavior (remove unintended vertical motion; use dedicated desktop overlay transition). - Improve approval result display: - decision and reason split lines, - green/red status styling, - multiline reason rendering, - auto-collapse delay adjusted to 3s. Execution mode TTL feedback: - When direct mode auto-expires to sandbox, frontend menu state is updated from status snapshot. - Show non-auto-dismiss warning toast to explicitly notify auto-fallback. Misc consistency updates: - Execution mode label text cleanup in composer. - Runtime notice wording normalization (权限模式修改为..., 执行环境修改为...). Build/test notes: - Frontend rebuilt after UI changes. - Smoke tests passed for server refactor path.
51 lines
8.8 KiB
Plaintext
51 lines
8.8 KiB
Plaintext
【翻译后 - 中文译文】
|
||
|
||
================================================================================
|
||
1 摘要
|
||
================================================================================
|
||
大型语言模型(LLMs)在语言理解和交互式决策等任务上展现出卓越的性能,但其推理能力(如思维链提示)和行动能力(如行动计划生成)主要作为独立主题进行研究。本文探索利用大型语言模型以交错方式生成推理轨迹和任务特定行动,使两者之间产生更大协同效应:推理轨迹帮助模型诱导、跟踪和更新行动计划以及处理异常情况,而行动则使其能够与外部来源(如知识库或环境)进行交互并收集额外信息。我们将这种名为ReAct的方法应用于多样化的语言和决策任务,证明其相对于最先进基线方法的有效性,同时提高了人类可解释性和可信度。具体而言,在问答任务(HotpotQA)和事实验证任务(Fever)中,ReAct通过与简单的维基百科API交互,克服了思维链推理中普遍存在的幻觉和错误传播问题,并生成比没有推理轨迹的基线方法更具可解释性的类人任务解决轨迹。此外,在两个交互式决策基准测试(ALFWorld和WebShop)中,ReAct分别以绝对成功率34%和10%的优势超越模仿学习和强化学习方法,而仅使用一个或两个上下文示例进行提示。
|
||
|
||
================================================================================
|
||
2 引言
|
||
================================================================================
|
||
人类智能的一个独特特征是能够无缝地将面向任务的行动与语言推理(或内心独白)相结合,这种能力已被理论化为在人类认知中发挥重要作用,能够实现自我调节或策略制定,并维持工作记忆。以厨房烹饪菜肴为例,在任意两个步骤之间,可能会有多种选择:根据冰箱中的内容调整食谱,阅读菜谱描述以了解下一步该做什么,并确保菜肴有新鲜原料和适当调料。这种在推理(用于计划或将目标分解为子目标)与行动(与环境交互)之间进行决策的能力对于人类完成复杂任务至关重要,也被认为是人类认知能力的基础之一。
|
||
|
||
最近,人们对开发能够执行行动的自主代理产生了极大兴趣,这些代理能够根据语言描述为现实世界中的决策任务(例如在线购物和家庭家务)生成行动计划并执行它们。尽管这些语言模型在语言和决策任务上展现出令人印象深刻的结果,但它们是在有限的环境中进行研究的,行动空间是简单的,反馈是程序生成的。此外,这些代理没有使用自由形式的语言推理,这限制了它们以类人方式表达、讨论和解决问题以及从交互中学习的能力。
|
||
|
||
本文探索了如何将大型语言模型(LLMs)用于推理(特别是思维链能力)和行动,以使两者协同工作:生成推理轨迹使模型能够诱导、跟踪和更新行动计划,以及处理异常情况。虽然LLMs在推理方面取得了显著进展,但主要是在静态推理问题上,如数学推理、常识推理和符号推理。相比之下,我们认为语言和行动之间也存在协同作用,允许模型执行动态推理以构建、维护和调整行动计划,同时与外部环境(例如维基百科)或其他工具进行交互,以收集额外信息,从而在知识密集型推理任务(如问答和事实验证)上获得更好的结果。
|
||
|
||
我们将这种推理和行动协同的方法命名为ReAct(Reasoning and Acting)。通过HotpotQA(多跳问答)和Fever(事实验证)实验,我们证明ReAct能够有效克服思维链推理中的幻觉和错误传播问题。具体来说,在HotpotQA上的成功率相对于思维链方法提高了14%,在Fever上达到与思维链加行动方法相当或更好的性能。我们还证明了ReAct相对于纯行动基线方法在可解释性和可信度方面的优势。
|
||
|
||
此外,我们还测试ReAct在两个交互式决策任务上的表现:ALFWorld(基于文本的家庭环境)和WebShop(在线购物网站环境)。通过少量示例学习,ReAct在这两个任务上的成功率分别达到34%和10%,显著超越了模仿学习和强化学习的基线方法。总之,我们的贡献包括:(1)引入了ReAct,这是一种新颖的范式,允许大型语言模型交错生成推理轨迹和任务特定行动,实现两者之间更大的协同;(2)通过多个领域的实验证明了ReAct在知识密集型推理任务和交互式决策任务上的有效性;(3)对ReAct与现有方法进行了全面分析,突出了其在可解释性、可信度和学习能力方面的优势。
|
||
|
||
================================================================================
|
||
3 方法
|
||
================================================================================
|
||
ReAct提示方法的核心思想是将推理和行动交错进行。在知识密集型任务(如HotpotQA和Fever)中,我们使用简单的维基百科API作为行动空间。模型可以执行两种类型的行动:(1)搜索实体,从维基百科返回前k个句子;(2)查找字符串,返回包含该字符串的页面中的所有句子,模拟浏览器中的Ctrl+F功能。
|
||
|
||
对于每个任务,我们从训练集中随机选择少量示例,并手动编写ReAct格式的轨迹作为少样本提示的示例。ReAct格式的轨迹包括交替出现的思考(Thought)和行动(Action)。思考是模型对当前状态的分析和推理,而行动是模型决定采取的下一步操作。这种格式允许模型在执行行动之前先进行推理,从而提高任务解决的准确性和可解释性。
|
||
|
||
在决策任务(如ALFWorld和WebShop)中,ReAct以类似的方式工作。模型接收环境观察并生成思考和行动。思考帮助模型理解当前环境状态并计划下一步行动,而行动则改变环境状态并产生新的观察。通过这种交互式循环,ReAct能够逐步完成复杂的决策任务。
|
||
|
||
ReAct的关键优势在于它将推理和行动紧密结合。推理轨迹不仅帮助模型规划行动,还提供了解释模型行为的基础。这种可解释性对于理解模型决策过程和调试错误非常重要。此外,ReAct的交错生成方式允许模型根据行动的结果动态调整推理,从而实现更灵活的任务解决策略。
|
||
|
||
================================================================================
|
||
4 相关工作
|
||
================================================================================
|
||
大型语言模型用于推理的工作中最著名的是思维链(Chain-of-Thought,CoT),它揭示了大型语言模型制定推理步骤的能力。后续工作包括自一致性(Self-Consistency)、思维树(Tree of Thoughts)等,这些方法主要关注如何提高推理的准确性和效率。
|
||
|
||
在语言模型用于行动方面,先前的工作包括WebGPT,它使用网络搜索来回答开放域问题,以及SayCan等机器人系统,它们将自然语言指令转换为机器人行动。这些方法主要关注如何使模型能够在特定环境中执行行动。
|
||
|
||
ReAct的独特之处在于它将推理和行动相结合,而不是将它们作为独立的过程。这种协同方法允许模型在执行行动之前进行推理,并根据行动结果更新推理。这与人类认知过程更加相似,也使模型更具可解释性和可信度。
|
||
|
||
我们的工作也与工具增强语言模型相关,例如Toolformer和Gorilla。这些模型被训练或微调以使用外部工具(如API、搜索引擎等)。ReAct采用了类似的思想,但强调推理和行动的交错进行,而不是简单地调用工具。
|
||
|
||
================================================================================
|
||
5 结论
|
||
================================================================================
|
||
本文提出了ReAct,一种将推理和行动协同应用于大型语言模型的新范式。通过在各种语言和决策任务上的实验,我们证明了ReAct的有效性。ReAct通过交错生成推理轨迹和任务特定行动,实现了推理和行动之间的更大协同,从而提高了任务的准确性和可解释性。
|
||
|
||
ReAct的优势包括:(1)克服思维链推理中的幻觉和错误传播问题;(2)提供更具可解释性和可信度的任务解决轨迹;(3)在交互式决策任务上显著超越传统的模仿学习和强化学习方法;(4)只需少量示例即可实现良好的性能。
|
||
|
||
未来的研究方向包括:扩展ReAct到更多样化的任务和环境、探索更高效的提示策略、以及将ReAct的思想应用于模型微调。我们相信ReAct为开发更智能、更可解释的语言模型代理提供了一个有前途的方向。
|