# `ExAthena.Response`
[🔗](https://github.com/udin-io/ex_athena/blob/v0.7.1/lib/ex_athena/response.ex#L1)

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.

# `t`

```elixir
@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,
  tool_calls: [ExAthena.Messages.ToolCall.t()],
  usage: usage() | nil
}
```

# `usage`

```elixir
@type usage() :: %{
  optional(:input_tokens) =&gt; non_neg_integer(),
  optional(:output_tokens) =&gt; non_neg_integer(),
  optional(:total_tokens) =&gt; non_neg_integer()
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
