Normalized LLM client used by the GEPA LLM facade.
This struct is intentionally small. Adapter-specific clients, sessions, and provider-native structs belong in adapter_state, not in GEPA optimizer code.
adapter_state
@type t() :: %GEPA.LLM.Client{ adapter: module(), adapter_state: term(), capabilities: MapSet.t(atom()), defaults: keyword(), metadata: map(), model: String.t() | nil, provider: atom() | nil }