| from transformers import AutoTokenizer |
| import transformers |
| import os |
| import sys |
| import fire |
| import torch |
| import gradio as gr |
|
|
|
|
| def main( |
| base_model="ise-uiuc/Magicoder-S-DS-6.7B", |
| |
| port=8080, |
| ): |
| tokenizer = AutoTokenizer.from_pretrained(base_model) |
| pipeline = transformers.pipeline( |
| "text-generation", |
| model=base_model, |
| torch_dtype=torch.float16, |
| device=device |
| ) |
| def evaluate_magicoder( |
| instruction, |
| temperature=1, |
| max_new_tokens=2048, |
| ): |
| MAGICODER_PROMPT = """You are an exceptionally intelligent coding assistant that consistently delivers accurate and reliable responses to user instructions. |
| |
| @@ Instruction |
| {instruction} |
| |
| @@ Response |
| """ |
| prompt = MAGICODER_PROMPT.format(instruction=instruction) |
|
|
| sequences = pipeline( |
| prompt, |
| temperature=temperature, |
| max_new_tokens=max_new_tokens, |
| ) |
| for seq in sequences: |
| print('==========================question=============================') |
| print(prompt) |
| generated_text = seq['generated_text'].replace(prompt, "") |
| print('===========================answer=============================') |
| print(generated_text) |
| return generated_text |
|
|
| gr.Interface( |
| fn=evaluate_magicoder, |
| inputs=[ |
| gr.components.Textbox( |
| lines=3, label="Instruction", placeholder="Anything you want to ask Magicoder ?" |
| ), |
| gr.components.Slider(minimum=0, maximum=1, value=0, label="Temperature"), |
| gr.components.Slider( |
| minimum=1, maximum=2048, step=1, value=128, label="Max tokens" |
| ), |
| ], |
| outputs=[ |
| gr.components.Textbox( |
| lines=30, |
| label="Output", |
| ) |
| ], |
| title="Magicoder", |
| description="This is a LLM playground for Magicoder! Follow us on Github: https://github.com/ise-uiuc/magicoder and Huggingface: https://huggingface.co/ise-uiuc." |
| ).queue().launch(share=True, server_port=port) |
|
|
| if __name__ == "__main__": |
| fire.Fire(main) |
|
|