news 2026/8/11 2:21:02

Hermes 与 ReAct 模式对比分析_2

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Hermes 与 ReAct 模式对比分析_2

Hermes 与 ReAct 模式对比分析

结论先行

HermesThought → Action → Observation 的经典过程,但它不是用文本标记Thought:/Action:/Observation:显式表达的 ReAct,而是用API 原生的结构化消息隐式完成了相同的三段循环。


一、经典 ReAct 的三段式

Thought: 我需要查找北京的天气 ← 推理(文本) Action: search("北京天气") ← 行动(文本,需解析) Observation: 北京今天晴,32°C ← 观察(文本,拼回上下文) Thought: 找到了,可以回答用户 Answer: 北京今天晴天,32°C

关键特征:

  • Thought / Action / Observation都是纯文本,在同一条输出流中
  • Action 需要正则/JSON 解析器从文本中提取
  • Observation 由外部注入到下一段文本
  • 三者之间没有结构化关联,靠格式约定维系

二、Hermes 的三段式:结构化隐式 ReAct

Hermes 没有显式的Thought:/Action:/Observation:标记,但在每一轮循环中,三段过程完整存在,只是换了载体:

2.1 一轮循环的消息流

messages 列表的真实结构: ┌─────────────────────────────────────────────────────┐ │ {"role": "system", "content": "You are Hermes..."} │ ← 系统提示 │ {"role": "user", "content": "北京今天天气怎样?"} │ ← 用户输入 │ │ │ ── 第 1 轮循环 ────────────────────────────────── │ │ {"role": "assistant", │ │ "content": "让我查一下天气", ← Thought │ │ "reasoning": "用户问天气,需要调用web_search", │ │ "tool_calls": [{ │ │ "id": "call_abc", │ │ "function": { │ │ "name": "web_search", ← Action │ │ "arguments": '{"query":"北京天气"}' │ │ } │ │ }]} │ │ {"role": "tool", │ │ "tool_call_id": "call_abc", │ │ "content": "北京今天晴,32°C"} ← Observation │ │ │ │ ── 第 2 轮循环 ────────────────────────────────── │ │ {"role": "assistant", │ │ "content": "北京今天晴天,32°C。"} ← 最终 Answer│ │ "tool_calls": null} │ └─────────────────────────────────────────────────────┘

2.2 Thought → Action → Observation 的对应关系

ReAct 阶段ReAct 表现形式Hermes 表现形式代码位置
Thought文本Thought: ...assistant.content(正文推理)+assistant.reasoning/reasoning_content/<REASONING_SCRATCHPAD>(结构化推理)_extract_reasoning()方法提取,支持 6 种格式
Action文本Action: search("北京天气")assistant.tool_calls[].function结构化对象(name + JSON args)_execute_tool_calls()_invoke_tool()
Observation文本Observation: 北京今天晴{"role": "tool", "tool_call_id": "xxx", "content": "..."}结构化消息工具执行结果 append 到 messages

2.3 Thought 的 6 种格式

Hermes 通过_extract_reasoning()方法统一提取推理内容,支持以下格式:

#格式来源示例
1message.reasoningDeepSeek、Qwen 等模型直接返回assistant_message.reasoning
2message.reasoning_contentMoonshot AI、Novita 等替代字段assistant_message.reasoning_content
3message.reasoning_detailsOpenRouter 统一格式,含 summary[{type: "reasoning.summary", summary: "..."}]
4<thinking>...</thinking>内联标签模型在 content 中嵌入
5<REASONING_SCRATCHPAD>...</REASONING_SCRATCHPAD>旧式推理标签convert_scratchpad_to_think()转换
6thinking...thinkingAnthropic/Claude 风格正则提取

代码原文:

def_extract_reasoning(self,assistant_message)->Optional[str]:# 1. message.reasoning — Direct reasoning field (DeepSeek, Qwen, etc.)# 2. message.reasoning_content — Alternative field (Moonshot AI, Novita, etc.)# 3. message.reasoning_details — Array of {type, summary, ...} objects# 4~6. Fallback: inline tags in content# ཱུ...thinking># <thinking>...</thinking># <reasoning>...</reasoning># <REASONING_SCRATCHPAD>...</REASONING_SCRATCHPAD>

三、循环过程对比

3.1 经典 ReAct 循环

while not done: output = LLM(prompt + history) thought, action = parse(output) # 正则解析文本 if action is None: return thought # 纯文本就是最终答案 observation = execute(action) # 执行动作 history += [output, f"Observation: {observation}"]

3.2 Hermes 循环

while api_call_count < max_iterations: response = API(messages) # 结构化 API 调用 assistant_msg = response.choices[0].message # Thought: 推理内容(结构化提取) reasoning = _extract_reasoning(assistant_msg) # Action: 工具调用(结构化对象,无需解析) if assistant_msg.tool_calls: # Observation: 工具结果(结构化消息) for tool_call in assistant_msg.tool_calls: result = _invoke_tool(tool_call.function.name, tool_call.function.arguments) messages.append({"role": "tool", "tool_call_id": tool_call.id, "content": result}) continue # 继续循环 else: # 无 Action → 最终答案 return assistant_msg.content

3.3 逐步对照

步骤ReActHermes
1. 推理LLM 输出Thought: ...文本API 返回reasoning+content字段
2. 决策正则匹配Action: xxx(yyy)API 返回tool_calls数组(或 null)
3. 执行eval(action_string)或自定义解析器_invoke_tool(name, args),JSON schema 校验
4. 观察拼接Observation: result文本追加{"role": "tool", "content": result}
5. 终止输出不含 Action → 结束tool_calls为 null → 结束

四、Hermes 比 ReAct 多了什么

能力ReActHermes
并行 Action不支持,一次一个同一轮多个 tool_calls 可并行 ThreadPoolExecutor
子任务委派不支持delegate_task创建子 Agent,独立 budget
Action 校验无,靠模型自觉工具名白名单 + JSON schema 校验 + 自动修复
Action 去重_deduplicate_tool_calls()
格式容错无,格式错误直接失败无效工具名重试 3 次 + 无效 JSON 重试 3 次
上下文管理无,历史无限增长3 层压缩 + 压力预警 + Grace Call
Fallback多 Provider 自动切换
Checkpoint文件变更和破坏性命令前自动快照
记忆内置 memory + session_search + 外部 Provider

五、总结构图

ReAct 经典三段式 ──────────────── Thought ─────→ "Thought: 我需要查天气" (文本) │ Action ──────→ "Action: search(北京天气)" (文本,需解析) │ Observation ─→ "Observation: 晴,32°C" (文本,拼回上下文) Hermes 结构化三段式 ────────────────── Thought ─────→ assistant.reasoning (结构化字段) assistant.reasoning_content (6 种格式统一提取) assistant.content (正文推理) │ Action ──────→ assistant.tool_calls[0].function (结构化对象) { (name + JSON args) "name": "web_search", "arguments": '{"query":"北京天气"}' } │ Observation ─→ {"role": "tool", (结构化消息) "tool_call_id": "call_abc", (带 ID 关联) "content": "晴,32°C"}

一句话总结:Hermes 有完整的 Thought → Action → Observation 循环,但把 ReAct 的"文本约定协议"升级成了"API 结构化协议"——逻辑同构,工程实现更可靠。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/11 2:19:10

终极Unity游戏模组加载器MelonLoader:新手完全指南

终极Unity游戏模组加载器MelonLoader&#xff1a;新手完全指南 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader MelonLoader是全…

作者头像 李华
网站建设 2026/8/11 2:18:55

视频动态目标三维实时重建:边防机动目标长时序轨迹推演理论探究

### 视频动态目标三维实时重建&#xff1a;边防机动目标长时序轨迹推演理论探究摘要本研究旨在深入探究边防机动目标长时序轨迹推演理论&#xff0c;以提升边防安全监测的精准性与有效性。随着边境安全形势的日益复杂&#xff0c;对机动目标的持续、准确监测成为关键需求。研究…

作者头像 李华
网站建设 2026/8/11 2:18:48

长治酒店客控服务商:瑞创集成优势及选择建议

长治酒店客控服务商解析&#xff1a;瑞创集成优势及选择建议在为酒店或商业空间规划智能化系统时&#xff0c;面对市场上众多的服务商&#xff0c;业主往往难以抉择。本文并非官方发布的排名榜单&#xff0c;而是基于公开的市场信息、不同规模项目的适用人群以及关键的工程筛选…

作者头像 李华
网站建设 2026/8/11 2:17:15

2026年AI应用开发:从LangChain到LangGraph的Agent实战指南

如果你在2026年还在用传统方式“拼接”大模型应用&#xff0c;那么你很可能已经落后了。今天&#xff0c;一个更强大的范式正在成为主流&#xff1a; Agent&#xff08;智能体&#xff09; 。它不再是简单地调用API获取答案&#xff0c;而是让大模型拥有了“思考-行动-观察”…

作者头像 李华
网站建设 2026/8/11 2:16:31

基于Java的OA系统

开题报告内容一、研究背景随着信息技术的飞速发展&#xff0c;企业的办公模式正经历着深刻的变革。在当今竞争激烈的商业环境下&#xff0c;企业需要不断提高办公效率、降低运营成本、加强内部管理与协作。OA办公系统&#xff08;办公自动化系统&#xff09;作为一种集成了各种…

作者头像 李华
网站建设 2026/8/11 2:14:26

Moneta Markets亿汇:把执行效率做到位——清单盘点与提示整理

对多数外汇相关用户来说&#xff0c;判断平台并不需要复杂术语&#xff0c;关键在于信息能否被快速理解、关键提示是否容易找到、服务体验是否稳定一致。以Moneta Markets亿汇为例&#xff0c;这里聚焦这些更贴近实际使用的亮点与细节。外汇相关信息更新频繁&#xff0c;平台将…

作者头像 李华