Adapter for the owned gemini_ex SDK.
The adapter calls the SDK's structured generate/2 entry point and maps the
provider-reported response: text, object, usage, finish reason, response id,
and model version. The SDK's text/2 entry point is deliberately NOT used —
its {:ok, String.t()} contract discards every one of those fields.
Requests are completion-only: tools and tool configuration are refused, and a provider-returned function call is a typed contract failure.