# DeepInfra - gemma-4-31b grade card

OpenAI chat/completions · serves `google/gemma-4-31B-it` as gemma-4-31b · probed live 2026-08-25

HTML version: [https://inferencecanary.com/deepinfra/gemma-4-31b](https://inferencecanary.com/deepinfra/gemma-4-31b) · matrix: [https://inferencecanary.com/index.md](https://inferencecanary.com/index.md)

## Grades


| Axis | Grade | Basis |
|---|---|---|
| Inference | C | A − 2 high − 0 medium severity, per the published ladder |
| Billing | OK | Reported usage consistent with bytes on the wire. |
| Caching | Sometimes (1/3 hits) | Reused already-seen context on 1/3 cold→warm trials. Speed numbers: [https://inferencecanary.com/speed.md](https://inferencecanary.com/speed.md) |


## Flags

- **[high · inference] Images in tool results: rejected or silently blinded on several providers** - The model reads images returned by tools - the reference provider delivers them, perception-judged, and several OpenAI-compat providers prove the standard shape works. The failing providers fail on schema choice, not model limits: several reject the request (400/422), and AWS Bedrock (Responses) is the worst class - it returns 200 and the model never sees the image, answering confidently about content it never saw. Google's own shim rejects a capability Google's native protocol serves. SambaNova and Novita, which rejected these requests through July, deliver tool-result images since 2026-08-25. (details: [/tool-result-images.md](https://inferencecanary.com/tool-result-images.md))
- **[high · inference] DeepInfra and Parasail validate tool_choice but do not enforce it** - Invalid values are rejected with a 4xx - every surface signal says the capability exists - but a valid constraint has zero effect on decoding: "required" returns prose with zero calls, and forcing a tool by name yields a call to a different tool. An application relying on forced tool calls silently gets prose. Parasail enforced all three conditions on 2026-07-27 and stopped by 2026-08-01 - the guarantee can vanish with no signal at the API surface. (details: [/tool-choice-unenforced.md](https://inferencecanary.com/tool-choice-unenforced.md))

