cody82 commited on
Commit
7cd7e31
·
verified ·
1 Parent(s): d87c9d2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -31
app.py CHANGED
@@ -1,51 +1,42 @@
1
  import torch
2
- from transformers import AutoModelForCausalLM, AutoTokenizer
3
  import gradio as gr
 
4
 
5
- model_id = "cody82/unitrip"
6
-
7
  tokenizer = AutoTokenizer.from_pretrained(model_id)
8
- model = AutoModelForCausalLM.from_pretrained(model_id)
9
  device = "cuda" if torch.cuda.is_available() else "cpu"
10
  model.to(device)
11
 
12
- system_message = "Ты — умный помощник по Университету Иннополис."
 
 
 
13
 
14
- def respond(user_message, history):
15
  if history is None:
16
  history = []
17
- prompt = system_message + "\n"
18
- for user_text, bot_text in history:
19
- prompt += f"User: {user_text}\nAssistant: {bot_text}\n"
20
- prompt += f"User: {user_message}\nAssistant:"
 
 
 
21
 
22
  inputs = tokenizer(prompt, return_tensors="pt").to(device)
23
 
24
  with torch.no_grad():
25
  outputs = model.generate(
26
  **inputs,
27
- max_new_tokens=150,
28
- pad_token_id=tokenizer.eos_token_id,
29
- eos_token_id=tokenizer.eos_token_id,
30
  do_sample=False,
 
31
  )
 
32
 
33
- generated_text = tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True).strip()
34
-
35
- history.append((user_message, generated_text))
36
- return history, history
37
-
38
- def clear_textbox():
39
- return ""
40
-
41
- with gr.Blocks() as demo:
42
- chatbot = gr.Chatbot()
43
- message = gr.Textbox(placeholder="Введите вопрос...")
44
- state = gr.State([])
45
-
46
- # При отправке сообщения вызываем respond, обновляем чат и состояние
47
- message.submit(respond, inputs=[message, state], outputs=[chatbot, state])
48
- # Очищаем поле ввода после отправки
49
- message.submit(clear_textbox, inputs=[], outputs=[message])
50
 
51
- demo.launch(share=True)
 
 
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:
18
  history = []
19
+
20
+ prompt = (
21
+ "Используя следующий контекст, ответь на вопрос четко и кратко.\n"
22
+ f"Контекст: {context}\n"
23
+ f"Вопрос: {message}\n"
24
+ "Ответ:"
25
+ )
26
 
27
  inputs = tokenizer(prompt, return_tensors="pt").to(device)
28
 
29
  with torch.no_grad():
30
  outputs = model.generate(
31
  **inputs,
32
+ max_new_tokens=100,
 
 
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
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
 
41
+ iface = gr.ChatInterface(fn=respond, title="Innopolis Q&A")
42
+ iface.launch()