Skip to content

[Bug]: gemini-3.7-flash unusable — hardcoded thinking_level "minimal" is rejected by the model (only low/medium/high supported) #689

Description

@GlikIta

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.)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions