Spaces:
Running
Running
File size: 1,659 Bytes
2e03cda 9c601ea c440868 e474e6b 482912e 9c601ea b10ba12 9c601ea 9d9c29a af5c917 c440868 b10ba12 c440868 12dd231 9c601ea c263659 c440868 9d9c29a c440868 c263659 9d9c29a c440868 b10ba12 c440868 01cea97 c440868 01cea97 c440868 01cea97 c440868 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
import gradio as gr
model_id = "openai-community/gpt2"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id)
device = "cuda" if torch.cuda.is_available() else "cpu"
model.to(device)
system_message = "Ты — умный помощник по Университету Иннополис."
def respond(user_message, history):
if history is None:
history = []
prompt = system_message + "\n"
for user_text, bot_text in history:
prompt += f"User: {user_text}\nAssistant: {bot_text}\n"
prompt += f"User: {user_message}\nAssistant:"
inputs = tokenizer(prompt, return_tensors="pt").to(device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=150,
pad_token_id=tokenizer.eos_token_id,
eos_token_id=tokenizer.eos_token_id,
do_sample=False,
)
generated_text = tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True).strip()
history.append((user_message, generated_text))
return history, history
with gr.Blocks() as demo:
chatbot = gr.Chatbot()
message = gr.Textbox(placeholder="Введите вопрос...")
state = gr.State([]) # состояние — история
# Привязываем submit на поле ввода
message.submit(respond, inputs=[message, state], outputs=[chatbot, state])
message.submit(lambda: "", None, message) # Очистка поля после отправки
demo.launch(share=True)
|