Med-bot / app.py
“clover2024”
[fix] add share
fbd215e
# 这些只是一些建议,每个人的健康状况和需求可能不同。如果有关健康的问题或症状持续存在,建议咨询医生或专业的医疗人员。
import gradio as gr
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
from langchain.chains import RetrievalQA
from langchain_openai import ChatOpenAI
def initialize_MED_BOT(vector_store_dir: str="med_faq"):
db = FAISS.load_local(vector_store_dir, OpenAIEmbeddings())
llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)
global MED_BOT
MED_BOT = RetrievalQA.from_chain_type(llm,
retriever=db.as_retriever(search_type="similarity_score_threshold",
search_kwargs={"score_threshold": 0.75}))
# 返回向量数据库的检索结果
MED_BOT.return_source_documents = True
return MED_BOT
def med_chat(message, history):
print(f"[message]{message}")
print(f"[history]{history}")
# TODO: 从命令行参数中获取
enable_chat = True
ans = MED_BOT({"query": message})
# 如果检索出结果,或者开了大模型聊天模式
# 返回 RetrievalQA combine_documents_chain 整合的结果
if ans["source_documents"] or enable_chat:
print(f"[result]{ans['result']}")
print(f"[source_documents]{ans['source_documents']}")
return ans["result"]
# 否则输出较为保守的回答
else:
return "这个问题我回答不了,请咨询专业人士"
def launch_gradio():
demo = gr.ChatInterface(
fn=med_chat,
title="常见医疗问题问答机器人",
# retry_btn=None,
# undo_btn=None,
chatbot=gr.Chatbot(height=600),
)
demo.launch(share=True, server_name="0.0.0.0")
if __name__ == "__main__":
# 初始化医疗问题问答机器人
initialize_MED_BOT()
# 启动 Gradio 服务
launch_gradio()