-
Notifications
You must be signed in to change notification settings - Fork 12.9k
Adding chat template support for Granite model #14864
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 7 commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
13a8ecc
Adding support for Granite chat template. Updating build for xcframew…
smdesai 1ed1980
Add test case for granite
smdesai 4a48e25
Merge branch 'ggml-org:master' into master
smdesai 7088637
Merge branch 'ggml-org:master' into master
smdesai 18ccb40
revert build-xcframework.sh as libcommon.a is not to be used externally
smdesai 8336e66
corrected indentation
smdesai 728c3c0
add missing chat template and correct template name
smdesai 361d8fb
make it less likely to misidentify the template
smdesai fdd5111
merge with latest
smdesai e483e07
add missing break
smdesai File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
59 changes: 59 additions & 0 deletions
59
models/templates/ibm-granite-granite-3.3-2B-Instruct.jinja
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
{# Alias tools -> available_tools #} | ||
{%- if tools and not available_tools -%} | ||
{%- set available_tools = tools -%} | ||
{%- endif -%} | ||
{%- if messages[0]['role'] == 'system' %} | ||
{%- set system_message = messages[0]['content'] %} | ||
{%- set loop_messages = messages[1:] %} | ||
{%- else %} | ||
{%- set system_message = "Knowledge Cutoff Date: April 2024. Today's Date: " + strftime_now('%B %d, %Y') + ". You are Granite, developed by IBM." %} | ||
{%- if available_tools and documents %} | ||
{%- set system_message = system_message + " You are a helpful assistant with access to the following tools. When a tool is required to answer the user's query, respond only with <|tool_call|> followed by a JSON list of tools used. If a tool does not exist in the provided list of tools, notify the user that you do not have the ability to fulfill the request. Write the response to the user's input by strictly aligning with the facts in the provided documents. If the information needed to answer the question is not available in the documents, inform the user that the question cannot be answered based on the available data." %} | ||
{%- elif available_tools %} | ||
{%- set system_message = system_message + " You are a helpful assistant with access to the following tools. When a tool is required to answer the user's query, respond only with <|tool_call|> followed by a JSON list of tools used. If a tool does not exist in the provided list of tools, notify the user that you do not have the ability to fulfill the request." %} | ||
{%- elif documents %} | ||
{%- set system_message = system_message + " Write the response to the user's input by strictly aligning with the facts in the provided documents. If the information needed to answer the question is not available in the documents, inform the user that the question cannot be answered based on the available data." %} | ||
{%- elif thinking %} | ||
{%- set system_message = system_message + " You are a helpful AI assistant. | ||
Respond to every user query in a comprehensive and detailed way. You can write down your thoughts and reasoning process before responding. In the thought process, engage in a comprehensive cycle of analysis, summarization, exploration, reassessment, reflection, backtracing, and iteration to develop well-considered thinking process. In the response section, based on various attempts, explorations, and reflections from the thoughts section, systematically present the final solution that you deem correct. The response should summarize the thought process. Write your thoughts between <think></think> and write your response between <response></response> for each user query." %} | ||
{%- else %} | ||
{%- set system_message = system_message + " You are a helpful AI assistant." %} | ||
{%- endif %} | ||
{%- if 'citations' in controls and documents %} | ||
{%- set system_message = system_message + ' | ||
Use the symbols <|start_of_cite|> and <|end_of_cite|> to indicate when a fact comes from a document in the search result, e.g <|start_of_cite|> {document_id: 1}my fact <|end_of_cite|> for a fact from document 1. Afterwards, list all the citations with their corresponding documents in an ordered list.' %} | ||
{%- endif %} | ||
{%- if 'hallucinations' in controls and documents %} | ||
{%- set system_message = system_message + ' | ||
Finally, after the response is written, include a numbered list of sentences from the response with a corresponding risk value that are hallucinated and not based in the documents.' %} | ||
{%- endif %} | ||
{%- set loop_messages = messages %} | ||
{%- endif %} | ||
{{- '<|start_of_role|>system<|end_of_role|>' + system_message + '<|end_of_text|> | ||
' }} | ||
{%- if available_tools %} | ||
{{- '<|start_of_role|>available_tools<|end_of_role|>' }} | ||
{{- available_tools | tojson(indent=4) }} | ||
{{- '<|end_of_text|> | ||
' }} | ||
{%- endif %} | ||
{%- if documents %} | ||
{%- for document in documents %} | ||
{{- '<|start_of_role|>document {"document_id": "' + document['doc_id'] | string + '"}<|end_of_role|> | ||
' }} | ||
{{- document['text'] }} | ||
{{- '<|end_of_text|> | ||
' }} | ||
{%- endfor %} | ||
{%- endif %} | ||
{%- for message in loop_messages %} | ||
{{- '<|start_of_role|>' + message['role'] + '<|end_of_role|>' + message['content'] + '<|end_of_text|> | ||
' }} | ||
{%- if loop.last and add_generation_prompt %} | ||
{{- '<|start_of_role|>assistant' }} | ||
{%- if controls %} | ||
{{- ' ' + controls | tojson()}} | ||
{%- endif %} | ||
{{- '<|end_of_role|>' }} | ||
{%- endif %} | ||
{%- endfor %} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.