Behaviour for language model providers.
@callback default_object_generation_mode(term()) :: :json | :tool
@callback do_generate(term(), map()) :: {:ok, map()} | {:error, term()}
@callback do_stream(term(), map()) :: {:ok, map()} | {:error, term()}
@callback provider(term()) :: String.t()
@callback specification_version() :: String.t()
@callback supports_image_urls?(term()) :: boolean()
@callback supports_structured_outputs?(term()) :: boolean()