A normalised inference response.
:text is the concatenated assistant text. :tool_calls holds any tool
calls the model wants the runtime to execute (empty when the model just
replied with text). :usage carries token accounting when the provider
reports it; :raw keeps the provider's original payload for debugging.
Summary
Types
@type t() :: %ExAthena.Response{ finish_reason: :stop | :length | :tool_calls | :content_filter | :error | nil, model: String.t() | nil, provider: atom() | module() | nil, raw: term() | nil, text: String.t() | nil, thinking: String.t() | nil, tool_calls: [ExAthena.Messages.ToolCall.t()], usage: usage() | nil }
@type usage() :: %{ optional(:input_tokens) => non_neg_integer(), optional(:output_tokens) => non_neg_integer(), optional(:total_tokens) => non_neg_integer() }