@type error() :: {:error, String.t()}
@type response() :: {:ok, String.t()}
@callback get_response(ai :: AI.t(), opts :: map()) :: response() | error()