Spaces:
Runtime error
Runtime error
import gradio as gr | |
from transformers import AutoModelForCausalLM, AutoTokenizer | |
import torch | |
# Загрузка модели и токенизатора | |
model_name = "Qwen/Qwen2.5-Coder-32B-Instruct" | |
tokenizer = AutoTokenizer.from_pretrained(model_name) | |
model = AutoModelForCausalLM.from_pretrained(model_name) | |
# Функция для генерации ответа | |
def generate_response(system_message, chat_history, user_input): | |
if not chat_history: | |
chat_history.append({"role": "system", "content": system_message}) | |
# Конкатенируем все сообщения для контекста | |
conversation = " ".join([f"{entry['role']}: {entry['content']}" for entry in chat_history]) | |
conversation += f" user: {user_input}" | |
# Токенизация ввода | |
inputs = tokenizer(conversation, return_tensors="pt").to(model.device) | |
# Генерация ответа | |
with torch.no_grad(): | |
outputs = model.generate(inputs["input_ids"], max_length=512, num_return_sequences=1) | |
# Декодирование и получение текста ответа | |
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True) | |
# Извлечение только нового ответа | |
response = generated_text.split("assistant:")[-1].strip() | |
# Добавляем пользовательский ввод и ответ модели в историю чата | |
chat_history.append({"role": "user", "content": user_input}) | |
chat_history.append({"role": "assistant", "content": response}) | |
return chat_history | |
# Создаем интерфейс | |
with gr.Blocks() as demo: | |
gr.Markdown("## Чат-бот для помощи в кодировании") | |
system_message = gr.Textbox(placeholder="Введите системное сообщение...", label="Системное сообщение") | |
chatbot = gr.Chatbot(label="Чат с ботом", type='messages') | |
user_input = gr.Textbox(placeholder="Введите ваш вопрос или код здесь...", label="Ваш ввод") | |
submit_btn = gr.Button("Отправить") | |
submit_btn.click(generate_response, inputs=[system_message, chatbot, user_input], outputs=chatbot) | |
demo.launch() | |