# `Sycophant.WireProtocol.GoogleGemini`

Wire protocol adapter for the Google Gemini API format.

Encodes Sycophant Request structs into the Gemini
JSON format and decodes responses back into Response structs.

# `t`

```elixir
@type t() :: %{
  optional(:stop) =&gt; [binary()],
  optional(:seed) =&gt; integer(),
  optional(:max_tokens) =&gt; integer(),
  optional(:temperature) =&gt; float(),
  optional(:top_p) =&gt; float(),
  optional(:top_k) =&gt; integer(),
  optional(:reasoning_effort) =&gt;
    :none | :minimal | :low | :medium | :high | :xhigh,
  optional(:reasoning_budget) =&gt; integer(),
  optional(:reasoning_summary) =&gt; :auto | :concise | :detailed | :none,
  optional(:tool_choice) =&gt; any(),
  optional(:parallel_tool_calls) =&gt; boolean(),
  optional(:frequency_penalty) =&gt; float(),
  optional(:presence_penalty) =&gt; float(),
  optional(:logprobs) =&gt; boolean(),
  optional(:top_logprobs) =&gt; integer()
}
```

# `param_schema`

Options:

* `:stop` (list of `t:String.t/0`) - Stop sequences

* `:seed` (`t:integer/0`) - Random seed for reproducible outputs

* `:max_tokens` (`t:integer/0`) - Maximum number of tokens to generate

* `:temperature` (`t:float/0`) - Sampling temperature

* `:top_p` (`t:float/0`) - Nucleus sampling threshold

* `:top_k` (`t:integer/0`) - Top-K sampling

* `:reasoning_effort` (`:none` | `:minimal` | `:low` | `:medium` | `:high` | `:xhigh`) - Extended thinking effort level

* `:reasoning_budget` (`t:integer/0`) - Explicit reasoning token budget

* `:reasoning_summary` (`:auto` | `:concise` | `:detailed` | `:none`) - How to summarize reasoning

* `:tool_choice` (`t:term/0`) - Tool selection strategy

* `:parallel_tool_calls` (`t:boolean/0`) - Allow parallel tool calls

* `:frequency_penalty` (`t:float/0`) - Penalize repeated tokens

* `:presence_penalty` (`t:float/0`) - Penalize tokens already present

* `:logprobs` (`t:boolean/0`) - Return log probabilities of output tokens

* `:top_logprobs` (`t:integer/0`) - Number of most likely tokens to return

---

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