bs-demo3 / app.py
Rioo26's picture
Update app.py
53c4869 verified
import gradio as gr
from huggingface_hub import InferenceClient
import os
# 初始化 Hugging Face 客户端
client = InferenceClient(
provider="novita",
api_key = os.getenv("HF_token")
)
def chat(user_input, history, cot_enabled):
if history is None:
history = []
messages = []
for m in history:
messages.append({"role": m["role"], "content": m["content"]})
# 加系统提示
messages.insert(0, {
"role": "system",
"content": "你是一个有医学背景并能进行深度思维推理的 AI。请仔细回答用户的问题。"
})
# 是否加思维链提示
cot_prompt = "。请你一步一步地思考并解释你的推理过程。" if cot_enabled else ""
messages.append({"role": "user", "content": user_input.strip() + cot_prompt})
try:
completion = client.chat.completions.create(
model="deepseek-ai/DeepSeek-R1-Distill-Llama-8B",
messages=messages,
max_tokens=512,
temperature=0.5,
)
reply = completion.choices[0].message.content
history.append({"role": "user", "content": user_input})
history.append({"role": "assistant", "content": reply})
return history, history
except Exception as e:
error_msg = f"出错了:{str(e)}"
history.append({"role": "user", "content": user_input})
history.append({"role": "assistant", "content": error_msg})
return history, history
# Gradio 多轮对话界面
with gr.Blocks(title="🌐 AI 医疗问答系统") as demo:
gr.Markdown("## 💬 医疗问答助手\n使用 Hugging Face 上的 DeepSeek 模型进行问答。")
chatbot = gr.Chatbot(label="对话记录", type="messages")
user_input = gr.Textbox(lines=3, label="你的问题")
cot_mode = gr.Checkbox(label="深度思考", value=True)
state = gr.State([]) # 用来保存历史
send = gr.Button("发送")
send.click(fn=chat, inputs=[user_input, state, cot_mode], outputs=[chatbot, state])
if __name__ == "__main__":
demo.launch(share=True)