Describe the bug
Selecting gemini-3.7-flash as the LLM (google / google_vertex provider — the model field allows custom input) makes every generation fail with an INVALID_ARGUMENT error about the thinking level (observed live on app.dograh.com, 2026-08-21: 400 … THINKING_LEVEL_MINIMAL). The agent is completely broken with that model.
Root cause
The bundled pipecat fork applies a blanket low-latency thinking default to every Gemini 3 Flash model when no explicit thinking config is set (and the app never sets one — there is no thinking field anywhere in the configuration schema):
# dograh-hq/pipecat, src/pipecat/services/google/llm.py — _maybe_unset_thinking_budget()
elif model.startswith("gemini-3") and "flash" in model:
generation_params["thinking_config"] = {"thinking_level": "minimal"}
But per Google's documentation, Gemini 3.7 Flash does not support minimal: supported values are LOW, MEDIUM (default) and HIGH, and "explicitly setting thinking_level to MINIMAL will return an API validation error" (What's new in Gemini 3.7 Flash, Vertex model page).
Fix already exists upstream
Upstream pipecat has already fixed exactly this, with a per-model lowest-level map:
# pipecat-ai/pipecat, src/pipecat/services/google/llm.py
_LOWEST_MODEL_THINKING_LEVELS = {
"gemini-3.7-flash": "low",
}
...
elif model.startswith("gemini-3") and "flash" in model:
level = next(
(lowest for prefix, lowest in _LOWEST_MODEL_THINKING_LEVELS.items()
if model.startswith(prefix)),
"minimal",
)
generation_params["thinking_config"] = {"thinking_level": level}
Its docstring states the contract explicitly: "Gemini 3 Flash accepts 'minimal', 'low', 'medium', and 'high', except Gemini 3.7 Flash, which accepts only 'low', 'medium', and 'high'."
Cherry-picking that mechanism into the fork fixes the bug with no behavior change for any other model.
Workarounds today
- Use
gemini-3.6-flash (still accepts minimal), or
- none otherwise: there is no thinking-level field in the org configuration, the workflow
model_configuration_v2_override, or any env var, so users cannot express a valid level for 3.7.
Same class of bug tracked elsewhere for reference: BerriAI/litellm #18245 (reasoning_effort mapping vs Gemini 3 thinkingLevel).
(Optionally, exposing thinking_level as an advanced LLM config field would also future-proof this — happy to split that into a separate feature request.)
Describe the bug
Selecting
gemini-3.7-flashas the LLM (google / google_vertex provider — the model field allows custom input) makes every generation fail with anINVALID_ARGUMENTerror about the thinking level (observed live on app.dograh.com, 2026-08-21:400 … THINKING_LEVEL_MINIMAL). The agent is completely broken with that model.Root cause
The bundled pipecat fork applies a blanket low-latency thinking default to every Gemini 3 Flash model when no explicit thinking config is set (and the app never sets one — there is no thinking field anywhere in the configuration schema):
But per Google's documentation, Gemini 3.7 Flash does not support
minimal: supported values are LOW, MEDIUM (default) and HIGH, and "explicitly setting thinking_level to MINIMAL will return an API validation error" (What's new in Gemini 3.7 Flash, Vertex model page).Fix already exists upstream
Upstream pipecat has already fixed exactly this, with a per-model lowest-level map:
Its docstring states the contract explicitly: "Gemini 3 Flash accepts 'minimal', 'low', 'medium', and 'high', except Gemini 3.7 Flash, which accepts only 'low', 'medium', and 'high'."
Cherry-picking that mechanism into the fork fixes the bug with no behavior change for any other model.
Workarounds today
gemini-3.6-flash(still acceptsminimal), ormodel_configuration_v2_override, or any env var, so users cannot express a valid level for 3.7.Same class of bug tracked elsewhere for reference: BerriAI/litellm #18245 (reasoning_effort mapping vs Gemini 3 thinkingLevel).
(Optionally, exposing
thinking_levelas an advanced LLM config field would also future-proof this — happy to split that into a separate feature request.)