Eval bug: Gemma4 fails with NotImplemented: map: filter-mapping not implemented

该报错通常出现在 llama-server 已成功加载 Gemma4 模型、但请求中携带的工具(tool)schema 触发了 llama.cpp 内置 jinja 引擎尚未实现的能力时;日志中的 Eval bug: Gemma4 fails with NotImplemented: map: fi

快速结论:该报错通常出现在 llama-server 已成功加载 Gemma4 模型、但请求中携带的工具(tool)schema 触发了 llama.cpp 内置 jinja 引擎尚未实现的能力时;日志中的 Eval bug: Gemma4 fails with NotImplemented: map: filter-mapping not implemented 指向模板里使用了 map/filter-mapping 相关写法。可优先检查客户端(如 opencode)配置的 MCP/工具定义,并暂时禁用可疑工具。

适用环境:Issue 已确认:llama.cpp version 8683 (d0a6dfeb2),GNU 15.2.1,Linux x86_64,HIP(ROCm)后端,AMD 395+ AI(Strix Halo),Radeon 8060S Graphics / gfx1151;模型为 unsloth/gemma-4-E4B-it-GGUF 的 Q4_K_M,经 llama-server 以 --jinja 启动。Python、CUDA、PyTorch 版本未在 Issue 中提供。

最快修复方案:暂无确认的一步修复方案。Issue 中已定位的触发源是 MCP(报告者为 qdrant),可通过在客户端暂时移除或禁用该 MCP/工具来绕过;Issue 表明 jinja 引擎对该 filter-mapping 特性“尚未实现”,需要上游修复。

注意事项:禁用 MCP 只是绕行,不是根本修复;即使注释掉 chat-template-file,报告者仍能复现。该 Issue 已被标记关闭(因 stale 无活动关闭),错误能否在后续版本中修复未在讨论链中验证。

问题场景

用户通过 llama-server 加载 Gemma4(unsloth/gemma-4-E4B-it-GGUF,Q4_K_M)并开启 --jinja,模型本身可正常加载;随后用 opencode 发送请求,服务端返回 500,日志出现上述 NotImplemented 异常。讨论确认,问题与客户端配置的 MCP 工具相关:报告者排查到触发问题的 MCP 是 qdrant,怀疑嵌入结构/工具 schema 与 Gemma 不兼容;维护者判断是工具 schema 命中了 jinja 引擎不支持的特性。

报错原文

[36203] srv    operator(): got exception: {"error":{"code":500,"message":"NotImplemented: map: filter-mapping not implemented","type":"server_error"}}
Eval bug: Gemma4 fails with NotImplemented: map: filter-mapping not implemented

原因分析

可能原因是:Gemma4 的 chat template(Issue 引用 unsloth 模型页 chat_template=default 第 45 行附近)使用了 map/filter-mapping 这类 Jinja 过滤器写法,而 llama.cpp 的 jinja 实现尚未支持该特性。请求中如果带有工具(tool schema),客户端会将其传入模板渲染;一旦模板走到未实现的分支,就在 eval 阶段抛出 NotImplemented,导致整个请求返回 500。该问题与具体客户端无关,opencode 只是暴露它的入口;报告者也确认注释掉 chat-template-file 并不能消除错误。

环境排查

  • 确认 llama.cpp 版本是否为 8683 (d0a6dfeb2) 或相近构建,并确认启动参数含 --jinja。
  • 确认后端为 HIP(ROCm),GPU 为 gfx1151(Radeon 8060S Graphics);注意这是 Issue 报告环境,不代表问题仅限该硬件。
  • 确认模型文件为 unsloth/gemma-4-E4B-it-GGUF 的 Q4_K_M,并检查是否额外指定了自定义 chat-template-file。
  • 检查客户端(如 opencode)是否配置了 MCP 服务器或工具定义;报告者确认 qdrant MCP 会触发该错误。
  • 如使用 --models-preset,确认对应模型段中的 jinja、chat-template-file 等配置是否符合预期。

解决步骤

  1. 先在 opencode 中暂时禁用所有 MCP 服务器,或至少禁用 qdrant MCP,再重新发送同一提示,观察是否仍返回 500。
  2. 若禁用后恢复正常,逐个启用 MCP/工具,定位到具体触发错误的工具 schema。
  3. 对已定位的工具,检查其参数/返回结构定义,避免在 Gemma4 请求中携带该工具;可优先尝试精简工具 schema 或更换结构较简单的 MCP 实现。
  4. 同时关注 llama.cpp 上游对 jinja filter-mapping 的支持进展;Issue 中已有贡献者表示认领该问题,后续可升级到包含修复的版本。
  5. 在修复发布前,需要稳定使用 Gemma4 的简单对话场景,可不启用 MCP 工具,仅进行纯聊天请求。

验证方法

在禁用可疑 MCP 后,用相同客户端、相同提示向 llama-server 重新请求:若不再出现 NotImplemented: map: filter-mapping not implemented 且返回正常响应,即可确认触发源;再单独启用 qdrant MCP 复现,可进一步验证因果关系。升级 llama.cpp 后,应在保留该 MCP 的情况下重测同一请求,确认 jinja 渲染不再报错。

参考来源

ggml-org/llama.cpp #21547

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 32041

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注