ZhangQiao123's picture
Update app.py
0cd1b42 verified
import gradio as gr
import time
import random
# 创建Gradio界面
with gr.Blocks() as demo:
gr.Markdown("# 医学AI助手")
gr.Markdown("基于GRPO微调的医学模型,可以回答医学相关问题并提供详细的推理过程和答案。")
gr.Markdown("⚠️ 注意:当前为演示模式,未加载实际模型。回答为模拟生成,仅供界面展示。")
chatbot = gr.Chatbot(height=500)
msg = gr.Textbox(placeholder="请输入您的医学问题...", label="问题")
clear = gr.Button("清除对话")
# 预设的医学回答模板
medical_templates = [
"""<reasoning>
对于"{question}"这个问题,我需要从以下几个方面进行分析:
1. 症状描述的完整性和特点
2. 可能的病因和相关疾病
3. 需要考虑的鉴别诊断
4. 建议的检查和治疗方案
基于提供的信息,这可能与以下几种情况有关:
- 常见病因A及其特点
- 可能的并发症B及其表现
- 需要排除的严重情况C
</reasoning>
<answer>
针对您描述的"{question}"问题,这是一个模拟的医学回答。在实际部署时,这里会显示由医学模型生成的专业回答,包含详细的分析和建议。
请注意,这只是一个界面演示,没有加载实际的医学模型。真实的医学建议应当由专业医生提供。
</answer>""",
"""<reasoning>
关于"{question}",我需要考虑:
1. 患者的基本情况(年龄、性别、既往史)
2. 症状的持续时间和严重程度
3. 是否有加重或缓解因素
4. 相关的实验室和影像学检查结果
可能的诊断包括:
- X疾病:特点是...
- Y综合征:通常表现为...
- Z病变:需要通过...检查确诊
</reasoning>
<answer>
这是一个关于"{question}"的模拟医学回答。实际部署时,这里将显示由经过GRPO训练的医学模型生成的专业回答。
该演示界面目前未连接到实际模型,仅用于展示用户界面的功能和交互方式。
</answer>"""
]
def respond(message, chat_history):
if not message:
return "", chat_history
# 模拟思考时间
yield "", chat_history + [("", "思考中...")]
time.sleep(1)
# 随机选择一个模板并填充问题
template = random.choice(medical_templates)
bot_message = template.format(question=message)
# 格式化输出
formatted_response = bot_message.replace("<reasoning>", "<b>推理过程:</b><br>")
formatted_response = formatted_response.replace("</reasoning>", "<br><br>")
formatted_response = formatted_response.replace("<answer>", "<b>最终答案:</b><br>")
formatted_response = formatted_response.replace("</answer>", "")
# 模拟打字效果
chat_history.append((message, ""))
for i in range(1, len(formatted_response), 10):
time.sleep(0.05)
chat_history[-1] = (message, formatted_response[:i])
yield "", chat_history
chat_history[-1] = (message, formatted_response)
return "", chat_history
def clear_chatbot():
return None
msg.submit(respond, [msg, chatbot], [msg, chatbot])
clear.click(clear_chatbot, None, chatbot)
demo.launch(share=True)