hermi612 commited on
Commit
de0479d
·
verified ·
1 Parent(s): 3c2b39a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +166 -8
app.py CHANGED
@@ -118,6 +118,161 @@ def local_fallback_response(query):
118
  """当API调用失败时提供基本的本地响应"""
119
  query = query.lower()
120
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  # 详细的失眠响应
122
  if "失眠" in query or "睡不着" in query or "睡眠" in query:
123
  days_match = None
@@ -287,6 +442,16 @@ def local_fallback_response(query):
287
  对于任何严重或持续的健康问题,建议您咨询专业医生获取准确诊断和治疗方案。"""
288
 
289
  def medical_chat(user_input, history):
 
 
 
 
 
 
 
 
 
 
290
  # 构建更详细的医学对话提示词,针对通用大模型进行优化
291
  system_prompt = """你是一位经验丰富的医生,专注于提供准确、客观、专业且详细的医疗建议。
292
  请根据患者描述的症状,提供科学的建议和可能的解决方案。
@@ -308,12 +473,7 @@ def medical_chat(user_input, history):
308
  - 何时就医:明确说明在什么情况下患者应该寻求专业医疗帮助
309
  - 预防建议:如何预防类似问题再次发生
310
 
311
- 对于失眠问题,你应该:
312
- - 解释短期和长期失眠的区别
313
- - 分析可能的原因(如压力、焦虑、生活习惯、环境因素等)
314
- - 提供详细的睡眠卫生建议
315
- - 建议非药物干预方法(如放松技巧、认知行为疗法等)
316
- - 说明何时应该寻求专业帮助
317
 
318
  请记住,你的建议仅供参考,不能替代专业医生的面诊。每个回答都应该全面、详细、有条理,就像一位真正的医生会提供的那种深入建议。"""
319
 
@@ -465,10 +625,8 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
465
  chat_interface = gr.ChatInterface(
466
  fn=medical_chat,
467
  examples=[
468
- "头痛三天了怎么办?",
469
  "接种疫苗后发烧正常吗?",
470
  "咳嗽一周了,有什么缓解方法?",
471
- "经常失眠怎么调理?",
472
  "孩子有轻微发烧,需要去医院吗?"
473
  ],
474
  title="症状咨询"
 
118
  """当API调用失败时提供基本的本地响应"""
119
  query = query.lower()
120
 
121
+ # 处理烫伤情况
122
+ if any(keyword in query for keyword in ["烫伤", "烧伤", "烫到", "烫着"]):
123
+ return """对于烫伤的紧急处理,请按以下步骤操作:
124
+
125
+ **第一步:立即冷却**
126
+ 1. 立即将烫伤部位置于冷自来水下冲洗10-15分钟
127
+ 2. 水温应为凉水或微凉水,不要使用冰水或冰块(可能会加重组织损伤)
128
+ 3. 如果无法将烫伤部位放在水下,可以用浸湿的冷毛巾敷在烫伤处
129
+
130
+ **第二步:评估烫伤程度**
131
+ - 一度烫伤:皮肤发红,轻微肿胀,有疼痛感
132
+ - 二度烫伤:皮肤起水泡,明显红肿,疼痛明显
133
+ - 三度烫伤:皮肤呈白色、棕色或黑色,可能没有疼痛感(因为神经已损伤)
134
+
135
+ **第三步:处理伤口**
136
+ 1. 轻度烫伤(一度):
137
+ - 冷却后,可以涂抹芦荟凝胶或专用烫伤药膏
138
+ - 用干净的纱布轻轻覆盖
139
+ 2. 中度烫伤(二度):
140
+ - 不要刺破水泡
141
+ - 用干净的纱布轻轻覆盖
142
+ - 不要使用棉花或有绒毛的材料
143
+ 3. 严重烫伤(三度):
144
+ - 立即就医,不要自行处理
145
+
146
+ **禁忌事项**:
147
+ - 不要在烫伤处涂抹牙膏、酱油、油脂等民间偏方
148
+ - 不要刺破水泡
149
+ - 不要使用冰块直接接触烫伤处
150
+ - 不要在严重烫伤处涂抹任何药物,应立即就医
151
+
152
+ **何时就医**:
153
+ - 任何三度烫伤
154
+ - 面积较大的二度烫伤(大于手掌大小)
155
+ - 烫伤位于面部、手、脚、生殖器或关节处
156
+ - 烫伤后出现感染迹象(如红肿加剧、有脓液、发热)
157
+ - 婴幼儿的任何烫伤
158
+
159
+ 这些是基本的急救措施,如果情况严重,请立即就医。"""
160
+
161
+ # 处理呛水/窒息情况
162
+ if any(keyword in query for keyword in ["呛水", "窒息", "噎住", "喉咙卡"]):
163
+ return """对于呛水或窒息的紧急处理,请按以下步骤操作:
164
+
165
+ **呛水处理**:
166
+ 1. 如果孩子能够咳嗽、说话或呼吸:
167
+ - 鼓励他们咳嗽,帮助排出呛入的水
168
+ - 不要拍打背部,让自然咳嗽将水排出
169
+ - 密切观察呼吸情况
170
+
171
+ 2. 如果孩子无法咳嗽、说话或呼吸(窒息):
172
+ - 对于1岁以上儿童:执行海姆立克急救法(腹部冲击法)
173
+ a. 站在孩子身后,双臂环抱孩子腰部
174
+ b. 一只手握拳,拇指侧抵住孩子上腹部(肚脐上方,胸骨下方)
175
+ c. 另一只手抓住拳头
176
+ d. 快速向内上方挤压5次
177
+ e. 重复直到异物排出或孩子失去意识
178
+
179
+ - 对于1岁以下婴儿:
180
+ a. 将婴儿面朝下放在您的前臂上,头低于躯干
181
+ b. 用手掌根部在婴儿背部肩胛骨之间拍打5次
182
+ c. 如果异物未排出,将婴儿翻过来,面朝上放在您的前臂上
183
+ d. 用两根手指在胸骨中央(乳头连线下方)按压5次
184
+ e. 交替进行背部拍打和胸部按压,直到异物排出
185
+
186
+ 3. 如果孩子失去意识:
187
+ - 立即拨打急救电话
188
+ - 开始心肺复苏(CPR)
189
+
190
+ **窒息处理**(食物或异物):
191
+ - 步骤与上述呛水窒息处理相同
192
+
193
+ **注意事项**:
194
+ - 任何严重呛水事件后,即使症状消失,也应就医检查
195
+ - 如果孩子在呛水后出现呼吸困难、持续咳嗽、发热或异常嗜睡,应立即就医
196
+ - 预防呛水:监督儿童游泳,教导安全饮食习惯,避免在进食时玩耍或奔跑
197
+
198
+ 这些是基本的急救措施,如果情况严重,请立即就医或拨打急救电话。"""
199
+
200
+ # 处理发烧情况
201
+ if any(keyword in query for keyword in ["发烧", "发热", "体温高"]):
202
+ return """对于儿童发烧的处理,请按以下指导操作:
203
+
204
+ **评估体温**:
205
+ - 轻度发热:37.5°C-38°C
206
+ - 中度发热:38.1°C-39°C
207
+ - 高热:39.1°C以上
208
+
209
+ **家庭处理措施**:
210
+ 1. **保持水分摄入**:
211
+ - 鼓励孩子多喝水,防止脱水
212
+ - 可以提供稀释的果汁或电解质饮料
213
+
214
+ 2. **物理降温**:
215
+ - 穿着轻薄、透气的衣物
216
+ - 保持室温舒适,不要过热
217
+ - 可以用温水(不是冷水)擦拭额头、腋下、颈部和腹股沟
218
+ - 避免使用酒精擦拭
219
+
220
+ 3. **药物降温**(在医生指导下):
221
+ - 对于38.5°C以上的发热,可以考虑使用对乙酰氨基酚或布洛芬
222
+ - 严格按照年龄和体重给药
223
+ - 不要同时使用多种退热药
224
+ - 不要给18岁以下儿童使用阿司匹林(可能导致瑞氏综合征)
225
+
226
+ **何时就医**:
227
+ - 3个月以下婴儿:任何发热都应立即就医
228
+ - 3-6个月婴儿:体温超过38°C
229
+ - 6个月-2岁儿童:体温超过39°C,或发热持续超过24小时
230
+ - 任何年龄:
231
+ - 发热伴随剧烈头痛、颈部僵硬、皮疹、呼吸困难、持续呕吐或腹泻
232
+ - 孩子异常嗜睡、烦躁或对周围环境反应迟钝
233
+ - 发热持续超过3天
234
+ - 孩子看起来非常不适或您感到担忧
235
+
236
+ **注意事项**:
237
+ - 发热本身是身体对抗感染的���然反应,不一定需要立即降温
238
+ - 观察孩子的整体状态比单纯看体温更重要
239
+ - 确保孩子充分休息
240
+ - 记录体温变化、用药情况和其他症状,以便向医生报告
241
+
242
+ 这些是基本的家庭护理建议,如有疑虑,请咨询医生。"""
243
+
244
+ # 处理擦伤、流血等急救情况
245
+ if any(keyword in query for keyword in ["擦伤", "擦破", "流血", "出血", "伤口", "摔倒", "摔伤"]):
246
+ return """对于擦伤和轻微流血的紧急处理,请按以下步骤操作:
247
+
248
+ **第一步:保持冷静**
249
+ - 安抚小孩情绪,保持冷静
250
+
251
+ **第二步:清洁伤口**
252
+ 1. 用清水或生理盐水轻轻冲洗伤口,去除污垢和异物
253
+ 2. 如果没有流动水,可以使用干净的瓶装水
254
+ 3. 用温和的肥皂和水清洗伤口周围的皮肤,但避免肥皂直接接触开放性伤口
255
+
256
+ **第三步:止血**
257
+ 1. 用干净的纱布或干净的布轻轻按压伤口
258
+ 2. 保持压力约5-10分钟,直到出血停止
259
+ 3. 如果血液浸透了纱布,不要移除它,而是在上面再加一层
260
+
261
+ **第四步:消毒处理**
262
+ 1. 使用医用酒精、碘伏或双氧水等消毒液轻轻擦拭伤口周围(不要直接涂在开放性伤口上)
263
+ 2. 可以使用无刺激性的抗菌药膏涂抹在伤口上
264
+
265
+ **第五步:包扎保护**
266
+ 1. 用干净的创可贴或纱布覆盖伤口
267
+ 2. 如果是较大的伤口,使用绷带轻轻包扎,但不要太紧
268
+
269
+ **注意事项**:
270
+ - 如果伤口较深、面积较大、异物无法清除,或者持续出血超过15分钟,应立即就医
271
+ - 观察伤口是否有感染迹象(如红肿、疼痛加剧、有脓液或发热),如有这些症状应及时就医
272
+ - 确认小孩的破伤风疫苗接种情况,如果超过5年未接种且伤口较深或被污染,应咨询医生是否需要接种破伤风疫苗
273
+
274
+ 这些是基本的急救措施,如果情况严重,请立即就医。"""
275
+
276
  # 详细的失眠响应
277
  if "失眠" in query or "睡不着" in query or "睡眠" in query:
278
  days_match = None
 
442
  对于任何严重或持续的健康问题,建议您咨询专业医生获取准确诊断和治疗方案。"""
443
 
444
  def medical_chat(user_input, history):
445
+ # 检查是否是紧急情况,如果是,直接使用本地备用响应
446
+ emergency_keywords = ["摔倒", "摔伤", "流血", "出血", "擦伤", "擦破", "伤口",
447
+ "烫伤", "烧伤", "烫到", "烫着",
448
+ "呛水", "窒息", "噎住", "喉咙卡",
449
+ "急救", "紧急", "立即", "马上"]
450
+
451
+ if any(keyword in user_input.lower() for keyword in emergency_keywords):
452
+ print(f"检测到紧急情况关键词,直接使用本地备用响应")
453
+ return local_fallback_response(user_input)
454
+
455
  # 构建更详细的医学对话提示词,针对通用大模型进行优化
456
  system_prompt = """你是一位经验丰富的医生,专注于提供准确、客观、专业且详细的医疗建议。
457
  请根据患者描述的症状,提供科学的建议和可能的解决方案。
 
473
  - 何时就医:明确说明在什么情况下患者应该寻求专业医疗帮助
474
  - 预防建议:如何预防类似问题再次发生
475
 
476
+ 对于紧急情况(如外伤、烫伤、窒息等),请提供清晰的急救步骤和注意事项。
 
 
 
 
 
477
 
478
  请记住,你的建议仅供参考,不能替代专业医生的面诊。每个回答都应该全面、详细、有条理,就像一位真正的医生会提供的那种深入建议。"""
479
 
 
625
  chat_interface = gr.ChatInterface(
626
  fn=medical_chat,
627
  examples=[
 
628
  "接种疫苗后发烧正常吗?",
629
  "咳嗽一周了,有什么缓解方法?",
 
630
  "孩子有轻微发烧,需要去医院吗?"
631
  ],
632
  title="症状咨询"