| import os |
| import torch |
| import gradio as gr |
| from transformers import AutoTokenizer, AutoModelForCausalLM |
|
|
| MODEL_ID = "meta-llama/Llama-3.2-1B-Instruct" |
|
|
| token = os.environ.get("HF_TOKEN") |
|
|
| tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, token=token) |
| model = AutoModelForCausalLM.from_pretrained( |
| MODEL_ID, |
| token=token, |
| torch_dtype=torch.float16 if torch.cuda.is_available() else torch.float32, |
| device_map="auto" |
| ) |
|
|
| def chat(message, history): |
| history = history or [] |
|
|
| messages = [] |
| for user_msg, bot_msg in history: |
| messages.append({"role": "user", "content": user_msg}) |
| messages.append({"role": "assistant", "content": bot_msg}) |
| messages.append({"role": "user", "content": message}) |
|
|
| input_text = tokenizer.apply_chat_template( |
| messages, |
| tokenize=False, |
| add_generation_prompt=True |
| ) |
|
|
| inputs = tokenizer(input_text, return_tensors="pt").to(model.device) |
|
|
| output = model.generate( |
| **inputs, |
| max_new_tokens=200, |
| temperature=0.7, |
| do_sample=True |
| ) |
|
|
| response = tokenizer.decode( |
| output[0][inputs["input_ids"].shape[1]:], |
| skip_special_tokens=True |
| ) |
|
|
| return response |
|
|
| demo = gr.ChatInterface(fn=chat) |
|
|
| demo.launch() |