# Parasail - gemma-4-31b grade card

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

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

## Grades


| Axis | Grade | Basis |
|---|---|---|
| Inference | B | A − 1 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] 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))

