khaoula1972 commited on
Commit
7bc087a
·
verified ·
1 Parent(s): b64c583

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +47 -9
src/streamlit_app.py CHANGED
@@ -9,7 +9,7 @@ import torch
9
  st.markdown(
10
  """
11
  <style>
12
- /* اجعل كل النصوص من اليمين إلى اليسار */
13
  .stTextArea, .stTextInput, .stButton {
14
  direction: rtl;
15
  text-align: right;
@@ -54,7 +54,36 @@ def classify_question(text):
54
  return LABELS[pred]
55
 
56
  # =======================
57
- # Chatbot Response
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  # =======================
59
  def get_mistral_response(prompt, api_key):
60
  url = "https://openrouter.ai/api/v1/chat/completions"
@@ -100,18 +129,27 @@ if st.button("اسأل"):
100
  # Add user message
101
  st.session_state.messages.append({"role": "user", "content": user_input})
102
 
103
- # Classification
104
  with st.spinner("جار تحليل سؤالك..."):
105
  category = classify_question(user_input)
106
 
107
  if category == "LABEL_1":
108
- st.success("تم التعرف على سؤال إسعافات أولية. نحصل الآن على الإرشادات ✅")
109
- # Get bot response
110
- with st.spinner("جارٍ التواصل مع المساعد الذكي..."):
111
- answer = get_mistral_response(user_input, api_key)
112
- st.session_state.messages.append({"role": "bot", "content": answer})
 
 
 
 
 
 
 
 
113
  else:
114
- st.session_state.messages.append({"role": "bot", "content": "عذرًا، يمكنني الإجابة فقط على الأسئلة المتعلقة بالإسعافات الأولية❌"})
 
115
 
116
  # =======================
117
  # Display chat
 
9
  st.markdown(
10
  """
11
  <style>
12
+ /* RTL styling for inputs/buttons */
13
  .stTextArea, .stTextInput, .stButton {
14
  direction: rtl;
15
  text-align: right;
 
54
  return LABELS[pred]
55
 
56
  # =======================
57
+ # LLM first-aid double-check
58
+ # =======================
59
+ def llm_first_aid_check(query, api_key):
60
+ url = "https://openrouter.ai/api/v1/chat/completions"
61
+ headers = {
62
+ "Authorization": f"Bearer {api_key}",
63
+ "Content-Type": "application/json"
64
+ }
65
+ prompt = f"""
66
+ هل السؤال التالي يندرج ضمن الإسعافات الأولية؟ أجب فقط بـ "نعم" أو "لا":
67
+ {query}
68
+ """
69
+ data = {
70
+ "model": "mistralai/mistral-7b-instruct",
71
+ "messages": [
72
+ {"role": "system", "content": "أنت مساعد ذكي يساعد في تصنيف الأسئلة الطبية."},
73
+ {"role": "user", "content": prompt}
74
+ ],
75
+ "temperature": 0,
76
+ "max_tokens": 10
77
+ }
78
+ response = requests.post(url, headers=headers, json=data)
79
+ if response.status_code == 200:
80
+ answer = response.json()["choices"][0]["message"]["content"].strip()
81
+ return "نعم" in answer
82
+ else:
83
+ return False
84
+
85
+ # =======================
86
+ # Chatbot response
87
  # =======================
88
  def get_mistral_response(prompt, api_key):
89
  url = "https://openrouter.ai/api/v1/chat/completions"
 
129
  # Add user message
130
  st.session_state.messages.append({"role": "user", "content": user_input})
131
 
132
+ # First classifier check
133
  with st.spinner("جار تحليل سؤالك..."):
134
  category = classify_question(user_input)
135
 
136
  if category == "LABEL_1":
137
+ # LLM double-check
138
+ with st.spinner("جارٍ التحقق من صحة السؤال..."):
139
+ is_first_aid = llm_first_aid_check(user_input, api_key)
140
+
141
+ if is_first_aid:
142
+ st.success("تم التأكد من أن السؤال يتعلق بالإسعافات الأولية ✅")
143
+ # Get bot response
144
+ with st.spinner("جارٍ التواصل مع المساعد الذكي..."):
145
+ answer = get_mistral_response(user_input, api_key)
146
+ st.session_state.messages.append({"role": "bot", "content": answer})
147
+ else:
148
+ st.warning("يبدو أن السؤال لا يتعلق بالإسعافات الأولية ❌")
149
+ st.session_state.messages.append({"role": "bot", "content": "عذرًا، يمكنني الإجابة فقط على الأسئلة المتعلقة بالإسعافات الأولية."})
150
  else:
151
+ st.error("عذرًا، يمكنني الإجابة فقط على الأسئلة المتعلقة بالإسعافات الأولية❌")
152
+ st.session_state.messages.append({"role": "bot", "content": "عذرًا، يمكنني الإجابة فقط على الأسئلة المتعلقة بالإسعافات الأولية."})
153
 
154
  # =======================
155
  # Display chat