cody82 commited on
Commit
db606bb
·
verified ·
1 Parent(s): 5e09a54

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -28
app.py CHANGED
@@ -1,63 +1,55 @@
1
  import os
2
- os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "0" # отключаем проблемный ускоритель загрузки
3
 
4
  import torch
5
  import gradio as gr
6
  from transformers import AutoTokenizer, AutoModelForCausalLM
7
 
8
- # Используем базовый GPT-2 от OpenAI (английский, но подойдет для демонстрации)
9
- model_id = "gpt2"
10
  tokenizer = AutoTokenizer.from_pretrained(model_id)
11
  model = AutoModelForCausalLM.from_pretrained(model_id)
12
 
13
  device = "cuda" if torch.cuda.is_available() else "cpu"
14
  model.to(device)
15
 
16
- # Контекст, который мы передаём как часть каждого запроса
17
- context = """
18
- Университет Иннополис был основан в 2012 году. Это современный вуз в России,
19
- специализирующийся на IT и робототехнике, расположенный в городе Иннополис, Татарстан.
20
- """
21
 
22
- # Обработчик сообщений
23
  def respond(message, history=None):
24
- prompt = (
25
- f"{context}\n\n"
26
- f"Вопрос: {message}\n"
27
- "Ответ:"
28
- )
29
 
30
- inputs = tokenizer(prompt, return_tensors="pt").to(device)
31
 
32
  with torch.no_grad():
33
- outputs = model.generate(
34
- **inputs,
35
  max_new_tokens=100,
36
- temperature=0.7,
37
  top_p=0.9,
38
  do_sample=True,
39
  pad_token_id=tokenizer.eos_token_id
40
  )
41
 
42
- generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
43
 
44
- # Извлекаем ответ после "Ответ:"
45
- answer_start = generated_text.find("Ответ:")
46
- if answer_start != -1:
47
- answer = generated_text[answer_start + len("Ответ:"):].strip()
48
  else:
49
- answer = generated_text[len(prompt):].strip()
50
 
51
  return answer
52
 
53
- # Интерфейс Gradio
54
  iface = gr.ChatInterface(
55
  fn=respond,
56
- title="Innopolis GPT-2 Q&A Bot",
57
  chatbot=gr.Chatbot(label="Диалог"),
58
- textbox=gr.Textbox(placeholder="Задай вопрос про Университет Иннополис...", label="Твой вопрос")
59
  )
60
 
61
- # Запуск
62
  if __name__ == "__main__":
63
  iface.launch()
 
1
  import os
2
+ os.environ["HF_HUB_ENABLE_HF_TRANSFER"] = "0" # отключаем нестабильную загрузку
3
 
4
  import torch
5
  import gradio as gr
6
  from transformers import AutoTokenizer, AutoModelForCausalLM
7
 
8
+ model_id = "sberbank-ai/rugpt3medium_based_on_gpt2"
9
+
10
  tokenizer = AutoTokenizer.from_pretrained(model_id)
11
  model = AutoModelForCausalLM.from_pretrained(model_id)
12
 
13
  device = "cuda" if torch.cuda.is_available() else "cpu"
14
  model.to(device)
15
 
16
+ context = (
17
+ "Университет Иннополис был основан в 2012 году. "
18
+ "Это современный вуз в России, специализирующийся на IT и робототехнике, "
19
+ "расположенный в городе Иннополис, Татарстан.\n"
20
+ )
21
 
 
22
  def respond(message, history=None):
23
+ prompt = f"{context}Вопрос: {message}\nОтвет:"
 
 
 
 
24
 
25
+ input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to(device)
26
 
27
  with torch.no_grad():
28
+ output_ids = model.generate(
29
+ input_ids,
30
  max_new_tokens=100,
31
+ temperature=0.8,
32
  top_p=0.9,
33
  do_sample=True,
34
  pad_token_id=tokenizer.eos_token_id
35
  )
36
 
37
+ full_output = tokenizer.decode(output_ids[0], skip_special_tokens=True)
38
 
39
+ # Извлекаем только текст после "Ответ:"
40
+ if "Ответ:" in full_output:
41
+ answer = full_output.split("Ответ:")[-1].strip()
 
42
  else:
43
+ answer = full_output[len(prompt):].strip()
44
 
45
  return answer
46
 
 
47
  iface = gr.ChatInterface(
48
  fn=respond,
49
+ title="Бот об Университете Иннополис",
50
  chatbot=gr.Chatbot(label="Диалог"),
51
+ textbox=gr.Textbox(placeholder="Задай вопрос на русском...", label="Твой вопрос")
52
  )
53
 
 
54
  if __name__ == "__main__":
55
  iface.launch()