发布日期:2026-05-20 | 适用版本:Hermes 3、Gemini 3.5 Flash(2026年5月 Google I/O 发布)
Hermes Agent 是 NousResearch 基于 Meta Llama 3.1 微调的开源 Agent 框架,以 ChatML 格式和 <tool_call> XML 标签实现结构化工具调用;Gemini 3.5 Flash 是 Google 于 2026 年 5 月 Google I/O 发布的轻量推理模型,定位"低延迟、高吞吐量 Agent 场景的最佳性价比模型"。
Gemini 3.5 Flash 刚在 Google I/O 2026 亮相,Google 的判断很清楚:下一波 AI 浪潮的主角是 Agent,不是聊天机器人。对于已经在用 NousResearch Hermes 框架做工具调用的开发者来说,这个时间点值得认真对待——把后端推理换成 Gemini 3.5 Flash,可以在延迟、并发和工具生态上同时获益。
这篇文章讲清楚两件事:两个框架各自是什么,以及如何把它们接在一起跑起来。
Hermes Agent 是什么
Hermes Agent 是 NousResearch 推出的开源 Agent 框架,底层模型基于 Meta Llama 3.1 微调,核心强化了三项能力:结构化工具调用、多轮对话状态管理、JSON Schema 严格输出。
它有一套专属提示格式(ChatML),工具调用通过 XML 标签显式声明,格式固定,解析稳定:
<|im_start|>system
You are a function calling AI model.
<tools>
[{"type": "function", "function": {"name": "get_weather", ...}}]
</tools>
<|im_end|>
<|im_start|>user
北京今天天气怎么样?
<|im_end|>
<|im_start|>assistant
<tool_call>
{"name": "get_weather", "arguments": {"city": "北京"}}
</tool_call>
<|im_end|>
框架核心文件 functioncall.py 实现了最多 5 层递归的工具调用循环,支持链式多步骤任务。进阶模式(GOAP)还会生成 <scratch_pad> 推理过程,帮助模型在调用前先规划动作序列。
相关代码:github.com/NousResearch/Hermes-Function-Calling
Gemini 3.5 Flash 的 Agent 定位
Google I/O 2026 的核心主题是"从对话式 AI 转向自主 Agent",Gemini 3.5 Flash 是这个战略的推理层基础。官方定位是"低延迟、高吞吐量推理任务的最佳性价比模型"。
与上一代 Gemini 2.5 Flash 相比,3.5 Flash 针对 Agent 场景做了几项关键改进:
| 特性 | Gemini 2.5 Flash | Gemini 3.5 Flash |
|---|---|---|
| Function Calling 模式 | AUTO / ANY / NONE | AUTO / ANY / NONE / VALIDATED |
| 并行工具调用 | 支持 | 支持,响应更快 |
| MCP 协议原生支持 | 否 | 是 |
| 多模态工具返回 | 文本/图片 | 文本/图片/PDF |
其中 VALIDATED 模式是新增的:在多工具组合调用场景,模型会自动验证函数参数是否符合声明 schema,减少下游解析错误,这对工具链较长的 Agent 尤其有价值。
API 模型字符串:gemini-3.5-flash
两种框架的格式差异
接入之前需要理解一个核心问题:Hermes 和 Gemini 的工具调用格式不互通,需要做适配。
| 维度 | Hermes Agent | Gemini Function Calling |
|---|---|---|
| 工具声明方式 | System prompt 中 <tools> XML 标签 |
types.Tool(function_declarations=[...]) |
| 调用触发格式 | 模型输出 <tool_call> XML 标签 |
API 返回 functionCall 对象 |
| 结果回传格式 | role: tool + <tool_response> |
functionResponse 部件(含 id 映射) |
| 提示基础格式 | ChatML(<|im_start|> 标签) |
OpenAI 兼容 messages 数组 |
不能直接把 Hermes 的 system prompt 喂给 Gemini API——主要工作就是这层格式映射。
接入步骤:Hermes → Gemini 3.5 Flash
第一步:安装 Google GenAI SDK
pip install google-genai
第二步:用 Python 函数声明工具
Gemini SDK 支持直接传 Python 函数,自动从类型注解和 docstring 生成 schema,比 Hermes 手写 JSON 更简洁:
from google import genai
from google.genai import typesdef get_weather(city: str) -> dict:"""查询指定城市的实时天气。Args:city: 城市名称,例如 '北京' 或 '上海'"""# 替换为真实天气 API 调用return {"city": city, "temperature": "22°C", "condition": "晴"}def search_web(query: str) -> dict:"""执行网络搜索并返回摘要结果。Args:query: 搜索关键词"""return {"query": query, "results": ["结果1", "结果2"]}
第三步:配置客户端
import osclient = genai.Client(api_key=os.environ["GEMINI_API_KEY"])config = types.GenerateContentConfig(system_instruction="你是一个专业助手。", # 替代 Hermes 的 ChatML system prompttools=[get_weather, search_web], # 直接传函数列表tool_config=types.ToolConfig(function_calling_config=types.FunctionCallingConfig(mode="AUTO"))
)
第四步:实现工具调用循环
这是核心——复现 Hermes 的多轮调用逻辑:
def run_agent(user_query: str, max_rounds: int = 5) -> str:messages = [{"role": "user", "parts": [{"text": user_query}]}]tool_map = {"get_weather": get_weather,"search_web": search_web,}for _ in range(max_rounds):response = client.models.generate_content(model="gemini-3.5-flash",contents=messages,config=config)candidate = response.candidates[0]tool_calls = [part for part in candidate.content.partsif hasattr(part, "function_call")]if not tool_calls:return candidate.content.parts[0].textmessages.append(candidate.content)function_responses = []for part in tool_calls:fn_name = part.function_call.namefn_args = dict(part.function_call.args)result = tool_map[fn_name](**fn_args)function_responses.append(types.Part(function_response=types.FunctionResponse(id=part.function_call.id,name=fn_name,response=result)))messages.append({"role": "tool", "parts": function_responses})return "已达最大调用轮次"# 运行示例
result = run_agent("北京今天天气怎么样,需要带伞吗?")
print(result)
从 Hermes 迁移的三个注意点
① System Prompt 格式
Hermes 的 ChatML <|im_start|>system... 格式不适用于 Gemini,改用 GenerateContentConfig 的 system_instruction 参数传入,功能等价。
② 工具返回值类型
Hermes 的 <tool_response> 接受任意字符串,Gemini 的 functionResponse 需要传 Python dict,SDK 自动处理序列化。如果现有工具函数返回字符串,包一层 {"result": str_value} 即可。
③ 本地化需求判断
如果业务要求模型完全本地运行(私有数据合规、离线部署),Gemini 3.5 Flash 不适合,继续用本地 Hermes 模型。云端 API 场景下,Gemini 的响应速度和工具生态有明显优势。
进阶:通过 OpenAI 兼容接口最小化改动
如果不想重写工具调用逻辑,Gemini 提供 OpenAI 兼容端点,修改 base_url 即可:
from openai import OpenAIclient = OpenAI(api_key=os.environ["GEMINI_API_KEY"],base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)response = client.chat.completions.create(model="gemini-3.5-flash",messages=[{"role": "user", "content": "北京今天天气?"}],tools=[...] # 沿用原有工具声明格式
)
这种方式下,Hermes 框架中基于 OpenAI SDK 封装的工具调用逻辑几乎不需要改动。
接入 MCP 协议(Gemini 独有能力)
Gemini 3.5 Flash 原生支持 MCP(Model Context Protocol),这是 Hermes 框架目前不具备的能力。对于已有 MCP 工具服务的团队,接入方式直接:
mcp_tool = types.Tool(mcp_config=types.McpConfig(server_url="http://your-mcp-server/sse")
)config = types.GenerateContentConfig(tools=[mcp_tool])
[数据待核实:建议对照 google-genai SDK 最新版本确认 McpConfig 字段名称]
MCP 接入意味着可以把已有的工具服务(搜索、数据库查询、文件操作)直接接给 Gemini Agent,无需重写函数声明。对于需要标准化工具编排的团队,这是从 Hermes 迁移的最大增益点。国内也有支持 MCP 协议的推理服务,开发者可以通过统一接口编排多模型工具链(参考:developer.qiniu.com/aitokenapi/12984/mcp-user-manual)。
常见问题
Q:Hermes 的 GOAP 推理模式(scratch_pad)在 Gemini 里怎么实现?
Hermes 通过特殊 system prompt 引导模型输出 <scratch_pad> 思考过程。Gemini 3.5 Flash 通过 thinking_config 参数开启内置推理模式,效果类似但实现方式不同——在 GenerateContentConfig 中设置即可,无需修改提示模板。
Q:能否让 Hermes 做 orchestration、Gemini 做 execution?
可以。将本地 Hermes 模型作为任务拆解层(负责决策"调用什么工具、按什么顺序"),把具体子任务转发给 Gemini 3.5 Flash 执行。这种"本地调度 + 云端推理"混合架构在成本与延迟之间取得较好平衡,适合对本地算力有限但工具链复杂的场景。
Q:Gemini 3.5 Flash 支持并行工具调用吗?
支持。单次请求可触发多个 functionCall,通过 id 字段映射各自的 functionResponse。相比 Hermes 的串行递归调用,并行调用在多工具任务中可显著减少总延迟。
Q:如何验证工具调用参数是否符合 schema?
使用 VALIDATED 调用模式。在 FunctionCallingConfig 中设置 mode="VALIDATED",Gemini 会在生成工具调用前自动验证参数类型和必填字段,减少因参数错误导致的调用失败。
总结
Hermes Agent 的优势在于开源可控、函数调用格式确定性高,适合对模型输出有严格格式要求的场景。Gemini 3.5 Flash 的优势在于低延迟、高并发、原生 MCP 支持,适合工具数量多、调用频率高的生产环境。
两者接入的核心工作量集中在格式转换:把 Hermes 的 ChatML + XML 标签体系映射到 Gemini Python SDK 的调用方式,代码量不大。如果沿用 OpenAI 兼容接口,改动更少。
据 Google DeepMind 在 Google I/O 2026 的表述,Gemini 3.5 Flash 是其 Agent 战略的核心推理层。对于正在扩展工具数量或提升并发能力的团队,现在是评估迁移的好时机。本文内容基于 2026 年 5 月数据,Gemini API 版本持续迭代,建议定期对照 ai.google.dev 官方文档更新接入细节。
延伸资源
- Hermes Function Calling 仓库:https://github.com/NousResearch/Hermes-Function-Calling
- 多模型 API 对比测试:https://www.qiniu.com/ai/models
