cody82 commited on
Commit
af5c917
·
verified ·
1 Parent(s): 7eacfaa

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -6
app.py CHANGED
@@ -1,17 +1,28 @@
1
  import torch
2
  import gradio as gr
3
  from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
 
4
 
5
- model_id = "google/flan-t5-base" # можно flan-t5-large, если хватает памяти
6
  tokenizer = AutoTokenizer.from_pretrained(model_id)
7
  model = AutoModelForSeq2SeqLM.from_pretrained(model_id)
8
  device = "cuda" if torch.cuda.is_available() else "cpu"
9
  model.to(device)
10
 
11
- context = """
12
- Университет Иннополис был основан в 2012 году. Это современный вуз в России,
13
- специализирующийся на IT и робототехнике, расположенный в городе Иннополис, Татарстан.
14
- """
 
 
 
 
 
 
 
 
 
 
15
 
16
  def respond(message, history=None):
17
  if history is None:
@@ -33,7 +44,8 @@ def respond(message, history=None):
33
  do_sample=False,
34
  eos_token_id=tokenizer.eos_token_id
35
  )
36
- answer = tokenizer.decode(outputs[0], skip_special_tokens=True)
 
37
 
38
  history.append((message, answer))
39
  return history
 
1
  import torch
2
  import gradio as gr
3
  from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
4
+ import re
5
 
6
+ model_id = "google/flan-t5-base"
7
  tokenizer = AutoTokenizer.from_pretrained(model_id)
8
  model = AutoModelForSeq2SeqLM.from_pretrained(model_id)
9
  device = "cuda" if torch.cuda.is_available() else "cpu"
10
  model.to(device)
11
 
12
+ context = (
13
+ "Университет Иннополис был основан в 2012 году. "
14
+ "Это современный вуз в России, специализирующийся на IT и робототехнике, "
15
+ "расположенный в городе Иннополис, Татарстан."
16
+ )
17
+
18
+ def clean_answer(answer, prompt):
19
+ # Убираем prompt из начала, если остался
20
+ answer = answer[len(prompt):].strip() if answer.lower().startswith(prompt.lower()) else answer.strip()
21
+ # Оставляем только кириллицу, пробелы и знаки препинания
22
+ answer = re.sub(r"[^а-яА-ЯёЁ ,.\-:;?!]", "", answer)
23
+ # Дополнительно можно убрать повторяющиеся символы
24
+ answer = re.sub(r"(.)\1{2,}", r"\1", answer)
25
+ return answer
26
 
27
  def respond(message, history=None):
28
  if history is None:
 
44
  do_sample=False,
45
  eos_token_id=tokenizer.eos_token_id
46
  )
47
+ raw_answer = tokenizer.decode(outputs[0], skip_special_tokens=True)
48
+ answer = clean_answer(raw_answer, prompt)
49
 
50
  history.append((message, answer))
51
  return history