ariankhalfani commited on
Commit
87f2acc
·
verified ·
1 Parent(s): 6d64f28

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +80 -50
app.py CHANGED
@@ -1,7 +1,66 @@
 
 
1
  import gradio as gr
2
- from huggingface_hub import InferenceClient
3
 
4
- client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
 
6
  # Function to convert days to score
7
  def days_to_score(days):
@@ -20,66 +79,37 @@ def days_to_score(days):
20
  def diagnose_gerd_responses(responses):
21
  scores = [days_to_score(d) for d in responses]
22
  total_score = sum(scores)
 
23
  if total_score <= 7:
24
  diagnosis = "Kemungkinan Anda tidak menderita GERD."
25
  elif 8 <= total_score <= 18:
26
  diagnosis = "Kemungkinan Anda menderita GERD. Konsultasikan dengan penyedia layanan kesehatan untuk evaluasi lebih lanjut."
27
  else:
28
  diagnosis = "Skor di luar jangkauan. Pastikan Anda memasukkan nilai dengan benar."
29
- return diagnosis
30
-
31
- def respond(message, history, system_message, max_tokens, temperature, top_p):
32
- messages = [{"role": "system", "content": system_message}]
33
-
34
- for val in history:
35
- if val[0]:
36
- messages.append({"role": "user", "content": val[0]})
37
- if val[1]:
38
- messages.append({"role": "assistant", "content": val[1]})
39
-
40
- messages.append({"role": "user", "content": message})
41
 
42
- response = ""
43
- user_responses = []
44
-
45
- for message in client.chat_completion(messages, max_tokens=max_tokens, stream=True, temperature=temperature, top_p=top_p):
46
- token = message.choices[0].delta.content
47
- response += token
48
- yield response
49
-
50
- if "nyeri ulu hati" in message:
51
- user_responses.append(int(message))
52
- response = "Berapa hari dalam 7 hari terakhir Anda mengalami nyeri ulu hati?"
53
- elif "regurgitasi" in message:
54
- user_responses.append(int(message))
55
- response = "Berapa hari dalam 7 hari terakhir Anda mengalami regurgitasi?"
56
- elif "mual" in message:
57
- user_responses.append(int(message))
58
- response = "Berapa hari dalam 7 hari terakhir Anda mengalami mual?"
59
- elif "sulit tidur" in message:
60
- user_responses.append(int(message))
61
- response = "Berapa hari dalam 7 hari terakhir Anda mengalami kesulitan tidur karena nyeri ulu hati?"
62
- elif "minum obat" in message:
63
- user_responses.append(int(message))
64
- response = "Berapa hari dalam 7 hari terakhir Anda minum obat tambahan untuk nyeri ulu hati?"
65
 
66
- if len(user_responses) == 6:
67
- diagnosis = diagnose_gerd_responses(user_responses)
68
- response = diagnosis
69
 
70
- yield response
 
 
 
 
 
 
71
 
72
- demo = gr.ChatInterface(
73
- respond,
74
- additional_inputs=[
75
- gr.Textbox(value="You are a friendly Chatbot.", label="System message"),
76
- gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="Max new tokens"),
77
- gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="Temperature"),
78
- gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (nucleus sampling)"),
79
- ],
80
  title="Nexus-Gerd-Bot",
81
  description="Chat dengan Nexus-Gerd-Bot untuk menilai kemungkinan GERD berdasarkan gejala yang Anda alami dalam 7 hari terakhir."
82
  )
83
 
 
84
  if __name__ == "__main__":
85
- demo.launch()
 
1
+ import nltk
2
+ from nltk.chat.util import Chat, reflections
3
  import gradio as gr
 
4
 
5
+ # Reflection to handle variations in user inputs
6
+ reflections = {
7
+ "aku": "kamu",
8
+ "saya": "Anda",
9
+ "kamu": "saya",
10
+ "Anda": "saya",
11
+ "adalah": "adalah",
12
+ }
13
+
14
+ # Define chatbot pairs
15
+ pairs = [
16
+ [
17
+ r"(hi|halo|hai|hello|hey)",
18
+ ["Halo! Saya Nexus-Gerd-Bot. Bagaimana saya bisa membantu Anda hari ini?",]
19
+ ],
20
+ [
21
+ r"siapa kamu\??",
22
+ ["Saya adalah Nexus-Gerd-Bot, asisten virtual untuk membantu Anda menilai kemungkinan GERD.",]
23
+ ],
24
+ [
25
+ r"bagaimana kabarmu\??",
26
+ ["Saya baik-baik saja. Terima kasih sudah bertanya!",]
27
+ ],
28
+ [
29
+ r"(.*)gerd(.*)",
30
+ ["Saya bisa membantu menilai apakah Anda mungkin menderita GERD berdasarkan gejala yang Anda alami dalam 7 hari terakhir. Siapkah Anda untuk memulai?",]
31
+ ],
32
+ [
33
+ r"(.*) (nyeri ulu hati|heartburn) (.*) ?",
34
+ ["Berapa hari dalam 7 hari terakhir Anda mengalami nyeri ulu hati?",]
35
+ ],
36
+ [
37
+ r"(.*) (regurgitasi) (.*) ?",
38
+ ["Berapa hari dalam 7 hari terakhir Anda mengalami regurgitasi?",]
39
+ ],
40
+ [
41
+ r"(.*) (mual) (.*) ?",
42
+ ["Berapa hari dalam 7 hari terakhir Anda mengalami mual?",]
43
+ ],
44
+ [
45
+ r"(.*) (sulit tidur) (.*) ?",
46
+ ["Berapa hari dalam 7 hari terakhir Anda mengalami kesulitan tidur karena nyeri ulu hati?",]
47
+ ],
48
+ [
49
+ r"(.*) (minum obat) (.*) ?",
50
+ ["Berapa hari dalam 7 hari terakhir Anda minum obat tambahan untuk nyeri ulu hati?",]
51
+ ],
52
+ [
53
+ r"terima kasih(.*)",
54
+ ["Sama-sama! Jika Anda membutuhkan bantuan lebih lanjut, jangan ragu untuk bertanya.",]
55
+ ],
56
+ [
57
+ r"selamat tinggal|dadah|sampai jumpa",
58
+ ["Sampai jumpa! Semoga hari Anda menyenangkan!",]
59
+ ],
60
+ ]
61
+
62
+ # Create a Chat object
63
+ chatbot = Chat(pairs, reflections)
64
 
65
  # Function to convert days to score
66
  def days_to_score(days):
 
79
  def diagnose_gerd_responses(responses):
80
  scores = [days_to_score(d) for d in responses]
81
  total_score = sum(scores)
82
+
83
  if total_score <= 7:
84
  diagnosis = "Kemungkinan Anda tidak menderita GERD."
85
  elif 8 <= total_score <= 18:
86
  diagnosis = "Kemungkinan Anda menderita GERD. Konsultasikan dengan penyedia layanan kesehatan untuk evaluasi lebih lanjut."
87
  else:
88
  diagnosis = "Skor di luar jangkauan. Pastikan Anda memasukkan nilai dengan benar."
 
 
 
 
 
 
 
 
 
 
 
 
89
 
90
+ return diagnosis
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
 
92
+ # Function to handle chatbot responses and collect inputs
93
+ def chatbot_interface(user_input, state):
94
+ responses = state or []
95
 
96
+ if len(responses) < 6:
97
+ response = chatbot.respond(user_input)
98
+ responses.append(int(user_input))
99
+ return response, responses
100
+ else:
101
+ diagnosis = diagnose_gerd_responses(responses)
102
+ return diagnosis, responses
103
 
104
+ # Define the Gradio interface
105
+ interface = gr.Interface(
106
+ fn=chatbot_interface,
107
+ inputs=[gr.Textbox(lines=2, placeholder="Masukkan pesan Anda di sini...")],
108
+ outputs=[gr.Textbox(label="Nexus-Gerd-Bot"), gr.State()],
 
 
 
109
  title="Nexus-Gerd-Bot",
110
  description="Chat dengan Nexus-Gerd-Bot untuk menilai kemungkinan GERD berdasarkan gejala yang Anda alami dalam 7 hari terakhir."
111
  )
112
 
113
+ # Launch the app
114
  if __name__ == "__main__":
115
+ interface.launch()