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() | |