Gemma 4 2B 通过 Spring AI / LM Studio 正确处理结构化 JSON 输出、工具调用和推理轨迹——包括在代码审查中识别出一个真实的 Java 错误
摘要
用户测试了 Gemma 4 2B 在本地通过 LM Studio 和 Spring AI 运行,用于结构化 JSON 输出、工具调用和推理轨迹,发现它正确识别了代码审查中的 Java 错误,并且性能与更大的模型相当。
想分享一个连我自己都没想到能成功的结果。在本地通过 LM Studio 运行 google/gemma-4-e2b,经过 OpenAI 兼容端点暴露,然后从 Spring Boot 应用中使用 Spring AI 的 ChatClient 抽象进行调用。我测试了三件事:
1. **结构化输出(符合模式的 JSON)**:使用 BeanOutputConverter 强制模型返回一个 CodeReview 对象,包含特定字段(issues、qualityScore、suggestions、summary)。给它一段 Java 代码片段,其中包含一个字符串比较错误(== 与 .equals())。结果:完美的 JSON,没有 Markdown 包裹,所有字段正确填充。正确识别了错误,并且还建议使用 Streams 重构。质量评分 50/100——有趣的是,这与 Claude Sonnet 4.6 在相同输入上的结果完全相同,而 GPT-4o 则不那么严格,给了 55。
2. **工具调用**:用 @Tool 注解注册了一个天气预报函数。询问“我应该在里加带伞吗?”。结果:模型正确决定调用工具,提取了“里加”作为位置参数,接收了模拟的天气响应,并自然地将其转述回来。没有任何辅助,也没有“如果我有权限就会调用天气工具”——它真的调用了。
3. **推理轨迹**:LM Studio 的响应中包含一个 `reasoning\_content` 字段,展示了最终 JSON 输出前的逐步思考过程。不仅仅是生成的 token——模型明确地分析了整个过程:
- 思考过程:
1. 分析请求:用户想要一个审查……
2. 分析代码:……
3. 识别问题/改进:
\- 问题 1(字符串比较):== 与 .equals()
\- 问题 2(风格/可读性):基于索引的循环与 Streams
4. 提出建议……
完整的演示在我制作的一个视频中,介绍了设置过程,包括一个关闭 WiFi 的测试来证明推理确实是本地的:https://youtu.be/lW0FMjDUzik
我好奇的是:
- 有人专门针对结构化输出的可靠性对 Gemma 4 2B、Phi-4 和 Qwen 2.5 3B 做过基准测试吗?我的个人经验是 Gemma 更遵循模式,但我没有做过严格的测试。
- 对于支持并行函数调用(一次响应中调用多个工具)的工具调用,目前最小且可靠的模型处于什么水平?
- 有没有人在生产环境中运行这种规模的模型来应对真实负载?我特别关注的是负载下的 p99 延迟数据,而不仅仅是单次请求的演示。
相似文章
Gemma 4 31B 的能力让我惊讶
一位用户分享了轶事发现:Gemma 4 31B 在理解和重构杂乱的学术代码方面优于 Qwen 3.6 模型,并与 Opus 4.7 能力相当,还突出了一个 Gemma 擅长的基准测试(SciCode)。
@MiaAI_lab:我使用Fable-5风格推理和助手轨迹对Gemma 4 12B进行了微调,并将其发布为Gemmable 4 12b。**可用…
Mia-AiLab发布了Gemmable 4 12B,这是Google Gemma 4 12B模型的微调版本,使用了Fable-5风格推理和助手轨迹,提供GGUF和MLX格式用于本地推理。
Gemma 4 技术报告
Gemma 4 技术报告介绍了新一代开放权重、原生多模态语言模型,采用多样化的架构,推理能力增强,并在各项任务中性能提升。模型参数范围从 2.3B 到 31B,并具备生成推理轨迹的思考模式。
本地测试(更新后的)Gemma 4在OpenCode中的编码表现
在M5 Pro上使用llama.cpp本地测试了更新后的Gemma 4,使用OpenCode进行编码任务时达到60 tokens/s;后端表现良好,但UI/UX不佳。
Gemma 4 技术报告
Gemma 4 引入了新一代开放权重、原生多模态语言模型,采用密集和混合专家架构,具备思考模式以进行高级推理,提高了效率并支持长上下文能力。