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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -18
app.py CHANGED
@@ -1,22 +1,28 @@
 
 
 
1
  import torch
2
  import gradio as gr
3
  from transformers import AutoTokenizer, AutoModelForCausalLM
4
 
5
- model_id = "openai-community/gpt2" # если нужен GPT-2 community версия
 
6
  tokenizer = AutoTokenizer.from_pretrained(model_id)
7
  model = AutoModelForCausalLM.from_pretrained(model_id)
8
 
9
  device = "cuda" if torch.cuda.is_available() else "cpu"
10
  model.to(device)
11
 
 
12
  context = """
13
  Университет Иннополис был основан в 2012 году. Это современный вуз в России,
14
  специализирующийся на IT и робототехнике, расположенный в городе Иннополис, Татарстан.
15
  """
16
 
 
17
  def respond(message, history=None):
18
  prompt = (
19
- f"Контекст: {context}\n"
20
  f"Вопрос: {message}\n"
21
  "Ответ:"
22
  )
@@ -27,27 +33,31 @@ def respond(message, history=None):
27
  outputs = model.generate(
28
  **inputs,
29
  max_new_tokens=100,
30
- do_sample=True, # включаем сэмплирование
31
- top_p=0.95, # nucleus sampling
32
- temperature=0.7, # делает ответ разнообразнее
33
  pad_token_id=tokenizer.eos_token_id
34
  )
35
 
36
  generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
37
 
38
- # Обрезаем исходный промпт, чтобы получить только сгенерированный ответ
39
- answer = generated_text[len(prompt):].strip()
40
-
41
- # Отладка: если ответ всё ещё пустой, печатаем всё
42
- if not answer:
43
- print(">>> PROMPT:")
44
- print(prompt)
45
- print(">>> FULL OUTPUT:")
46
- print(generated_text)
47
 
48
  return answer
49
 
50
-
51
-
52
- iface = gr.ChatInterface(fn=respond, title="Innopolis Q&A")
53
- 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
+ # Используем базовый 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
  )
 
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()