Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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="症状咨询"
|