Rooni commited on
Commit
ced3bb5
·
verified ·
1 Parent(s): 0de3f0b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -8
app.py CHANGED
@@ -1,20 +1,41 @@
1
  import gradio as gr
 
 
2
 
3
- # Предположим, что модель загружена и доступна
4
- model = gr.load("models/Qwen/Qwen2.5-Coder-32B-Instruct")
 
 
5
 
6
- def code_assistant(system_message, chat_history, user_input):
 
7
  if not chat_history:
8
  chat_history.append({"role": "system", "content": system_message})
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
 
10
- # Рассмотрим, что модель принимает строку и возвращает строку
11
- response = "Ответ от модели" # Замените на реальный вызов модели, например: model(user_input)
12
-
 
13
  chat_history.append({"role": "user", "content": user_input})
14
  chat_history.append({"role": "assistant", "content": response})
15
-
16
  return chat_history
17
 
 
18
  with gr.Blocks() as demo:
19
  gr.Markdown("## Чат-бот для помощи в кодировании")
20
 
@@ -23,6 +44,6 @@ with gr.Blocks() as demo:
23
  user_input = gr.Textbox(placeholder="Введите ваш вопрос или код здесь...", label="Ваш ввод")
24
  submit_btn = gr.Button("Отправить")
25
 
26
- submit_btn.click(code_assistant, inputs=[system_message, chatbot, user_input], outputs=chatbot)
27
 
28
  demo.launch()
 
1
  import gradio as gr
2
+ from transformers import AutoModelForCausalLM, AutoTokenizer
3
+ import torch
4
 
5
+ # Загрузка модели и токенизатора
6
+ model_name = "Qwen/Qwen2.5-Coder-32B-Instruct"
7
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
8
+ model = AutoModelForCausalLM.from_pretrained(model_name)
9
 
10
+ # Функция для генерации ответа
11
+ def generate_response(system_message, chat_history, user_input):
12
  if not chat_history:
13
  chat_history.append({"role": "system", "content": system_message})
14
+
15
+ # Конкатенируем все сообщения для контекста
16
+ conversation = " ".join([f"{entry['role']}: {entry['content']}" for entry in chat_history])
17
+ conversation += f" user: {user_input}"
18
+
19
+ # Токенизация ввода
20
+ inputs = tokenizer(conversation, return_tensors="pt").to(model.device)
21
+
22
+ # Генерация ответа
23
+ with torch.no_grad():
24
+ outputs = model.generate(inputs["input_ids"], max_length=512, num_return_sequences=1)
25
+
26
+ # Декодирование и получение текста ответа
27
+ generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
28
 
29
+ # Извлечение только нового ответа
30
+ response = generated_text.split("assistant:")[-1].strip()
31
+
32
+ # Добавляем пользовательский ввод и ответ модели в историю чата
33
  chat_history.append({"role": "user", "content": user_input})
34
  chat_history.append({"role": "assistant", "content": response})
35
+
36
  return chat_history
37
 
38
+ # Создаем интерфейс
39
  with gr.Blocks() as demo:
40
  gr.Markdown("## Чат-бот для помощи в кодировании")
41
 
 
44
  user_input = gr.Textbox(placeholder="Введите ваш вопрос или код здесь...", label="Ваш ввод")
45
  submit_btn = gr.Button("Отправить")
46
 
47
+ submit_btn.click(generate_response, inputs=[system_message, chatbot, user_input], outputs=chatbot)
48
 
49
  demo.launch()