# `Alloy.Provider.Gemini`
[🔗](https://github.com/alloy-ex/alloy/blob/v0.10.1/lib/alloy/provider/gemini.ex#L1)

Provider for Google's Gemini GenerateContent API.

Normalizes Gemini's `contents` / `parts` wire format to Alloy messages,
including function calling and thinking-part round-tripping.

## Config

Required:
- `:api_key` - Gemini API key
- `:model` - Model name (for example `"gemini-2.5-flash"`)

Optional:
- `:max_tokens` - Max output tokens (default: `4096`)
- `:system_prompt` - System prompt string
- `:api_url` - Base URL (default: `"https://generativelanguage.googleapis.com"`)
- `:api_version` - API version path (default: `"v1beta"`)
- `:generation_config` - Raw Gemini `generationConfig` fields
- `:tool_config` - Raw Gemini `toolConfig`
- `:safety_settings` - Raw Gemini `safetySettings`
- `:extra_headers` - Additional headers as `[{name, value}]`
- `:req_options` - Additional options passed to Req

## Example

    Alloy.run("Summarize this code.",
      provider: {Alloy.Provider.Gemini,
        api_key: System.get_env("GEMINI_API_KEY"),
        model: "gemini-2.5-flash"
      }
    )

---

*Consult [api-reference.md](api-reference.md) for complete listing*
