Xolkin commited on
Commit
133324c
·
verified ·
1 Parent(s): b43a066

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -15
app.py CHANGED
@@ -1,26 +1,29 @@
1
  import gradio as gr
2
  from transformers import AutoModelForCausalLM, AutoTokenizer
3
 
4
- # Подключаем модель и токенизатор
5
  model_name = "distilgpt2"
6
  model = AutoModelForCausalLM.from_pretrained(model_name)
7
  tokenizer = AutoTokenizer.from_pretrained(model_name)
8
 
9
- def respond(message, history, system_message, max_tokens, temperature, top_p):
10
- messages = [{"role": "system", "content": system_message}]
11
-
12
- for val in history:
13
- if val[0]:
14
- messages.append({"role": "user", "content": val[0]})
15
- if val[1]:
16
- messages.append({"role": "assistant", "content": val[1]})
 
 
17
 
18
- messages.append({"role": "user", "content": message})
19
-
20
- input_text = "\n".join([msg["content"] for msg in messages])
21
 
 
22
  inputs = tokenizer(input_text, return_tensors="pt", truncation=True, padding=True)
23
 
 
24
  outputs = model.generate(
25
  inputs["input_ids"],
26
  max_length=max_tokens,
@@ -30,19 +33,51 @@ def respond(message, history, system_message, max_tokens, temperature, top_p):
30
  )
31
 
32
  response = tokenizer.decode(outputs[0], skip_special_tokens=True)
33
- response += "\nСделано больницей EMS штата Alta!"
 
 
 
34
  return response
35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  # Интерфейс Gradio
37
  demo = gr.Interface(
38
  fn=respond,
39
  inputs=[
40
  gr.Textbox(value="Здравствуйте. Отвечай кратко...", label="System message"),
41
- gr.Slider(minimum=1, maximum=2048, value=512, label="Max Tokens"),
42
  gr.Slider(minimum=0.1, maximum=4.0, value=0.7, label="Temperature"),
43
  gr.Slider(minimum=0.1, maximum=1.0, value=0.95, label="Top-p"),
44
  ],
45
  outputs="text",
46
  )
47
 
48
- demo.launch()
 
 
1
  import gradio as gr
2
  from transformers import AutoModelForCausalLM, AutoTokenizer
3
 
4
+ # Загружаем модель и токенизатор
5
  model_name = "distilgpt2"
6
  model = AutoModelForCausalLM.from_pretrained(model_name)
7
  tokenizer = AutoTokenizer.from_pretrained(model_name)
8
 
9
+ def respond(
10
+ message,
11
+ history=None,
12
+ system_message=None,
13
+ max_tokens=512,
14
+ temperature=0.7,
15
+ top_p=0.95,
16
+ ):
17
+ if history is None:
18
+ history = [] # Инициализируем пустой список, если history не передан
19
 
20
+ # Объединяем сообщения в историю
21
+ input_text = "\n".join([msg[1] for msg in history] + [message])
 
22
 
23
+ # Токенизация текста
24
  inputs = tokenizer(input_text, return_tensors="pt", truncation=True, padding=True)
25
 
26
+ # Генерация ответа
27
  outputs = model.generate(
28
  inputs["input_ids"],
29
  max_length=max_tokens,
 
33
  )
34
 
35
  response = tokenizer.decode(outputs[0], skip_special_tokens=True)
36
+
37
+ # Формируем ответ согласно шаблону
38
+ response = format_response(response)
39
+
40
  return response
41
 
42
+ def format_response(response):
43
+ # Форматируем ответ в соответствии с шаблоном
44
+ diagnosis = extract_diagnosis(response)
45
+ operation = extract_operation(response)
46
+ treatment = extract_treatment(response)
47
+
48
+ formatted_response = f"Предварительный диагноз: {diagnosis}\nОперация: {operation}\nЛечение: {treatment}"
49
+
50
+ return formatted_response
51
+
52
+ def extract_diagnosis(response):
53
+ # Простой способ извлечь диагноз (можно улучшить, используя NLP методы)
54
+ # Для упрощения примем, что диагноз будет первым упомянутым заболеванием.
55
+ # Нужно будет улучшить в будущем с использованием NLP инструментов.
56
+ diagnosis = response.split(".")[0] # Пример: диагноз - первая часть ответа
57
+ return diagnosis.strip()
58
+
59
+ def extract_operation(response):
60
+ # Извлекаем название операции из ответа
61
+ # Пример: операция - второе упоминание в ответе
62
+ operation = "Не требуется" # Пример, что операция не требуется, можно настроить для реальных случаев
63
+ return operation.strip()
64
+
65
+ def extract_treatment(response):
66
+ # Извлекаем лечение (например, лечение как последняя часть ответа)
67
+ treatment = response.split(".")[-1] # Пример: лечение - последняя часть
68
+ return treatment.strip()
69
+
70
  # Интерфейс Gradio
71
  demo = gr.Interface(
72
  fn=respond,
73
  inputs=[
74
  gr.Textbox(value="Здравствуйте. Отвечай кратко...", label="System message"),
75
+ gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max Tokens"),
76
  gr.Slider(minimum=0.1, maximum=4.0, value=0.7, label="Temperature"),
77
  gr.Slider(minimum=0.1, maximum=1.0, value=0.95, label="Top-p"),
78
  ],
79
  outputs="text",
80
  )
81
 
82
+ if __name__ == "__main__":
83
+ demo.launch()