Google (OpenAI-compat)
OpenAI chat/completions shim over generateContent · serves gemma-4-31b-it as gemma-4-31b ·
probed live 2026-08-25 · back to the matrix
Google's OpenAI-compatibility shim, serving the same model as the native provider - graded on what the shim delivers.
Billing
✓
Reported usage consistent with bytes on the wire. Footnote: completion_tokens under-counts its own delivered content - under-bills in the customer's favor.
Caching
Fail
A repeat 20K-token submission waits out the free tier's per-minute token quota (~46s of 429 retries) before it is served - and gemma-4 has no paid tier, so there is no quota to buy. Whether context is reused is unobservable behind the wait. Speed numbers →
Flags
-
high pricing
Google sells no paid tier for gemma-4: every request is used to improve their products, and quota gates agentic work
Google's own price sheet lists gemma-4's paid tier as "Not available" on every line - the free tier is the only tier - and carries the row "Used to improve our products: Yes" with no paid alternative. The Gemini API... -
high inference
Several providers drop replayed reasoning: the model never sees its own prior thinking
The gemma-4 chat template renders reasoning replayed on model turns, and the model card mandates preserving thinking across tool-call turns - the reference provider reproduces this live. These providers delete it before... -
high inference
Google's OpenAI-compat shim has no reasoning channel; thought text leaks into content
The shim never populates reasoning or reasoning_content - even with reasoning_effort explicitly sent and accepted. The model's thought text arrives inside literal <thought> tags in the answer field, with no structured... -
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... -
medium inference
Google's shim mislabels streamed tool calls finish_reason: "stop"
The same deterministic tool prompt yields finish_reason "tool_calls" non-streaming but "stop" streaming. An agent harness that dispatches on finish_reason behaves differently depending on transport.
Every flag links to its finding - evidence, repro, and disclosure records live there; the deepest findings have full writeup pages.