基于DeepSeek与LangGraph的智能病历数据库交互系统开发指南
一、医疗AI技术栈构建
pip install langchain deepseek-coder psycopg2-binary python-dotenv sqlalchemy graphviz
POSTGRES_MEDICAL_USER=med_user
POSTGRES_MEDICAL_PASSWORD=secure_med_pass
POSTGRES_MEDICAL_HOST=med-db-server
POSTGRES_MEDICAL_PORT=5432
POSTGRES_MEDICAL_DB=medical_records
二、病历数据库建模
from langchain.utilities import SQLDatabase
medical_db = SQLDatabase.from_uri(
f"postgresql+psycopg2://{
os.getenv('POSTGRES_MEDICAL_USER')}:"
f"{
os.getenv('POSTGRES_MEDICAL_PASSWORD')}@{
os.getenv('POSTGRES_MEDICAL_HOST')}:"
f"{
os.getenv('POSTGRES_MEDICAL_PORT')}/{
os.getenv('POSTGRES_MEDICAL_DB')}",
include_tables=["patients", "diagnoses", "prescriptions"],
sample_rows_in_table_info=3,
custom_table_info="""
patients: 患者主表
id: 患者ID(主键)
name: 患者姓名(脱敏处理)
gender: 性别
birth_date: 出生日期
registration_date: 建档日期
diagnoses: 诊断记录表
id: 诊断ID(主键)
patient_id: 患者ID(外键)
diagnosis_date: 诊断日期
diagnosis_code: ICD-11编码
diagnosis_description: 诊断描述
prescriptions: 处方记录表
id: 处方ID(主键)
patient_id: 患者ID(外键)
prescription_date: 处方日期
medication: 药物名称
dosage: 剂量
"""
)
三、DeepSeek模型配置
from langchain.llms import DeepSeek
medical_llm = DeepSeek(
model_name="deepseek-16b",
temperature=0.6,
max_tokens=4096,
top_p=0.85,
repetition_penalty=1.1,
callbacks=[
MedicalCallbackHandler()
],
medical_mode=True
)
四、LangGraph流程构建
from langchain.graphs import Graph
from langchain.chains import SQLDatabaseChain
medical_graph = Graph()
parse_step = medical_graph.add_node(
"语义解析",
MedicalQueryParser(llm=medical_llm)
)
sql_gen_step = medical_graph.add_node(
"SQL生成",