# `ExLLama.ChatTemplate.GraniteInstruct`

based on: [https://github.com/chujiezheng/chat_templates/blob/main/chat_templates/granite-3.0-instruct.jinja]
```jinja
{%- if tools %}
    {{- '<|start_of_role|>available_tools<|end_of_role|>
' }}
    {%- for tool in tools %}
        {{- tool | tojson(indent=4) }}
        {%- if not loop.last %}
            {{- '

' }}
        {%- endif %}
    {%- endfor %}
    {{- '<|end_of_text|>
' }}
{%- endif %}

{%- for message in messages %}
    {%- if message['role'] == 'system' %}
        {{- '<|start_of_role|>system<|end_of_role|>' + message['content'] + '<|end_of_text|>
' }}
    {%- elif message['role'] == 'user' %}
        {{- '<|start_of_role|>user<|end_of_role|>' + message['content'] + '<|end_of_text|>
' }}
    {%- elif message['role'] == 'assistant' %}
        {{- '<|start_of_role|>assistant<|end_of_role|>' + message['content'] + '<|end_of_text|>
' }}
    {%- elif message['role'] == 'assistant_tool_call' %}
        {{- '<|start_of_role|>assistant<|end_of_role|><|tool_call|>' + message['content'] + '<|end_of_text|>
' }}
    {%- elif message['role'] == 'tool_response' %}
        {{- '<|start_of_role|>tool_response<|end_of_role|>' + message['content'] + '<|end_of_text|>
' }}
    {%- endif %}

    {%- if loop.last and add_generation_prompt %}
        {{- '<|start_of_role|>assistant<|end_of_role|>' }}
    {%- endif %}
{%- endfor %}
```

# `extract_response`

# `support_list`

# `to_context`

---

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