project / app.py
cody82's picture
Update app.py
68f7433 verified
import os
import gradio as gr
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
# Указание названия модели
model_name = "cody82/innopolis_bot_model"
# Получение токена из переменной окружения
hf_token = os.getenv("HUGGINGFACE_HUB_TOKEN")
if hf_token is None:
raise ValueError("Переменная окружения HUGGINGFACE_HUB_TOKEN не установлена.")
# Загрузка токенизатора и модели с авторизацией
tokenizer = AutoTokenizer.from_pretrained(model_name, use_auth_token=hf_token)
model = AutoModelForCausalLM.from_pretrained(model_name, use_auth_token=hf_token)
# Использование CPU
device = torch.device("cpu")
model.to(device)
# Обработка входящих сообщений (новый формат: messages)
def respond(message, history):
full_input = ""
for turn in history:
if turn["role"] == "user":
full_input += f"User: {turn['content']}\n"
elif turn["role"] == "assistant":
full_input += f"Assistant: {turn['content']}\n"
full_input += f"User: {message}\nAssistant:"
inputs = tokenizer(full_input, return_tensors="pt").to(device)
outputs = model.generate(
**inputs,
max_new_tokens=200,
do_sample=True,
temperature=0.7,
top_p=0.95,
pad_token_id=tokenizer.eos_token_id,
)
output_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
response = output_text.split("Assistant:")[-1].strip()
return response
# Интерфейс Gradio
chat = gr.ChatInterface(
fn=respond,
chatbot=gr.Chatbot(label="Innopolis Bot", type="messages"),
title="Innopolis Chatbot",
theme="soft",
examples=["Когда был основан университет Иннополис?", "Какие программы есть в магистратуре?"],
)
if __name__ == "__main__":
chat.launch(share=True)