Spaces:
Runtime error
Runtime error
import gradio as gr | |
from transformers import AutoTokenizer | |
import json | |
tokenizer = AutoTokenizer.from_pretrained("HuggingFaceH4/zephyr-7b-beta") | |
demo_conversation = """[ | |
{"role": "system", "content": "You are a helpful chatbot."}, | |
{"role": "user", "content": "Hi there!"}, | |
{"role": "assistant", "content": "Hello, human!"}, | |
{"role": "user", "content": "Can I ask a question?"} | |
]""" | |
default_template = """{% for message in messages %} | |
{{ "<|im_start|>" + message["role"] + "\\n" + message["content"] + "<|im_end|>\\n" }} | |
{% endfor %} | |
{% if add_generation_prompt %} | |
{{ "<|im_start|>assistant\\n" }} | |
{% endif %}""" | |
description_text = """# Chat Template Creator | |
### This space is a helper app for writing [Chat Templates](https://huggingface.co/docs/transformers/main/en/chat_templating). | |
### When you're happy with the outputs from your template, you can use the code block at the end to add it to a PR!""" | |
def apply_chat_template(template, test_conversation, add_generation_prompt, cleanup_whitespace): | |
if cleanup_whitespace: | |
template = "".join([line.strip() for line in template.split('\n')]) | |
tokenizer.chat_template = template | |
outputs = [] | |
conversation = json.loads(test_conversation) | |
pr_snippet = ( | |
"CHECKPOINT = \"big-ai-company/cool-new-model\"\n" | |
"tokenizer = AutoTokenizer.from_pretrained(CHECKPOINT)", | |
f"tokenizer.chat_template = \"{template}\"", | |
"tokenizer.push_to_hub(CHECKPOINT, create_pr=True)" | |
) | |
pr_snippet = "\n".join(pr_snippet) | |
formatted = tokenizer.apply_chat_template(conversation, tokenize=False, add_generation_prompt=add_generation_prompt) | |
return formatted, pr_snippet | |
with gr.Blocks() as demo: | |
gr.Markdown(description_text) | |
with gr.Row(): | |
gr.Markdown("### Pick an existing template to start:") | |
with gr.Row(): | |
gr.Button("ChatML") | |
gr.Button("Zephyr") | |
gr.Button("LLaMA") | |
with gr.Row(): | |
gr.Button("Alpaca") | |
gr.Button("Vicuna") | |
gr.Button("Something else") | |
with gr.Row(): | |
with gr.Column(): | |
template_in = gr.TextArea(value=default_template, lines=10, max_lines=30, label="Chat Template") | |
conversation_in = gr.TextArea(value=demo_conversation, lines=6, label="Conversation") | |
generation_prompt_check = gr.Checkbox(value=False, label="Add generation prompt") | |
cleanup_whitespace_check = gr.Checkbox(value=True, label="Cleanup template whitespace") | |
submit = gr.Button("Apply template", variant="primary") | |
with gr.Column(): | |
formatted_out = gr.TextArea(label="Formatted conversation") | |
code_snippet_out = gr.TextArea(label="Code snippet to create PR", lines=3, show_label=True, show_copy_button=True) | |
submit.click(fn=apply_chat_template, | |
inputs=[template_in, conversation_in, generation_prompt_check, cleanup_whitespace_check], | |
outputs=[formatted_out, code_snippet_out] | |
) | |
demo.launch() | |
#iface = gr.Interface( | |
# description=description_text, | |
# fn=apply_chat_template, | |
# inputs=[ | |
# gr.TextArea(value=default_template, lines=10, max_lines=30, label="Chat Template"), | |
# gr.TextArea(value=demo_conversation, lines=6, label="Conversation"), | |
# gr.Checkbox(value=False, label="Add generation prompt"), | |
# gr.Checkbox(value=True, label="Cleanup template whitespace"), | |
# ], | |
# outputs=[ | |
# gr.TextArea(label="Formatted conversation"), | |
# gr.TextArea(label="Code snippet to create PR", lines=3, show_label=True, show_copy_button=True) | |
# ] | |
#) | |
#iface.launch() | |