import gradio as gr
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
import spaces
model_name = "MBZUAI-Paris/Atlas-Chat-9B"
dtype = torch.bfloat16
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=dtype,
device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
@spaces.GPU
def chat(input_text, history=[]):
# Tokenize the input and generate response
inputs = tokenizer(input_text, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=150)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
# Update the conversation history
history.append((input_text, response))
return history, history
with gr.Blocks() as app:
gr.Markdown("
دردشة أطلس
")
chatbot = gr.Chatbot(label="المحادثة")
state = gr.State([])
with gr.Row():
txt = gr.Textbox(show_label=False, placeholder="اكتب رسالتك هنا...").style(container=False)
send_button = gr.Button("إرسال")
# Define the button click event
def user_input(input_text, history):
return "", history + [[input_text, None]]
def bot_response(history):
user_message = history[-1][0]
inputs = tokenizer(user_message, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=150)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
history[-1][1] = response
return history
# Link functions to button clicks
txt.submit(user_input, [txt, state], [txt, state]).then(
bot_response, state, chatbot
)
send_button.click(user_input, [txt, state], [txt, state]).then(
bot_response, state, chatbot
)
app.launch()