# `ExLLama.ChatTemplate`

# `meta`

```elixir
@type meta() :: Keyword.t() | nil
```

# `model`

```elixir
@type model() :: ExLLama.Model.t()
```

# `model_response`

```elixir
@type model_response() :: {tokens :: integer(), String.t()}
```

# `thread`

```elixir
@type thread() :: [map()]
```

# `extract_response`

```elixir
@callback extract_response(response :: [model_response()], model(), meta()) ::
  {:ok, ExLLama.ChatResponse.t()}
```

# `support_list`

```elixir
@callback support_list() :: {:ok, MapSet.t()}
```

# `to_context`

```elixir
@callback to_context(thread(), model(), meta()) :: {:ok, String.t()}
```

# `extract_response`

# `pick_handler`

# `to_context`

---

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