← 返回时间线

团队项目 · 帝国理工

临床多智能体 Text-to-SQL

2025年10月 – 2025年12月

在团队项目评估中正确回答了 20 个问题中的 17 个。

角色: 规划智能体设计、LangGraph 集成与失败案例评估。

  • Multi-agent
  • LangGraph
  • Text-to-SQL
  • MIMIC-IV

现实问题

将临床问题转换为基于 MIMIC-IV schema 的 SQL,并进行验证、修复与安全拒答。

系统表达

智能体状态图 / 运行时循环

不用先学会写数据库查询,也能提出问题

医院记录分散在不同数据表里。团队的助手把问题变成 SQL,也就是检索这些记录的指令。我的工作重点是分步规划、LangGraph 集成和失败案例测试。

从问题到经过检查的数据库查询意图分析将可回答的问题交给生成器,其余请求停止。生成器内部检查 SQL,必要时重试一次;仍失败则不返回 SQL。独立评估器在 SQLite 中比较查询结果。用日常语言提问理解问题,判断能否查询intent_analyzer可以查询无法查询停止不返回 SQLgenerator生成数据库查询Gemini 2.5 Pro · SQL检查基础语法修复 · 最多重试一次仍未通过返回 SQL独立评估 · SQLite与参考查询的返回结果比较
问题示例与实现细节
项目展示中的问题示例
2018 年有多少患者入院?
查什么:入院记录时间范围:2018 年返回什么:人数

1 · 先理解请求

意图分析先判断问题类型;如果无法从数据库回答,就停止生成查询。

可以查询

2 · 根据数据表定义生成 SQL

Gemini 2.5 Pro 接收问题、意图和 schema,即可用数据表的名称与结构。

3 · 检查、修复,必要时再试一次

基础语法检查识别不完整查询。生成器收到错误后可再次尝试,无法解决时不返回 SQL。

↺ 修复发生在生成器内部

无法查询

停止,不编造答案

治疗建议与检索已记录事实是不同的请求。系统可以返回 null,而不是强行生成 SQL。

团队评估

查出来的结果真的对吗?

评估器在 SQLite 中分别执行生成 SQL 和参考 SQL,再比较返回结果。语法检查通过,并不等于回答正确。

深入看:智能体、重试与验证的边界

提供的 notebook 有 intent_analyzer 和 generator 两个 LangGraph 节点。生成器总共最多尝试两次。检查涉及 SELECT 基础结构、括号和不完整子句;表名检查给出提示,并不阻止输出。SQL 执行位于独立的诊断评估器中。这些检查不构成临床正确性的保证。

展开技术说明

节点

临床问题先进入意图分析,可回答时再生成 SQL。生成器进行基础语法检查与修复;执行及结果比较位于评估器中。

共享状态

LangGraph 协调共享状态、节点与转移。

分支与修复循环

可回答的意图进入生成器,无法回答时结束图流程。语法修复和重试发生在生成器内部,随后返回输出。

安全拒答

无法安全回答时,系统以拒答结束。

核心思想 / 原理导读

先理解原理,再看实现

SQL 与 Text-to-SQL

SQL 用于查询关系型数据表。Text-to-SQL 将自然语言问题转换为查询,但语法正确并不代表回答了正确的问题。

临床问题为什么需要规划

规划将问题拆为人群、时间窗口、住院记录和聚合方式。先明确这些条件,可以将问题解释与 MIMIC-IV 查询构建分开。

状态、节点与边

状态承载一次运行中的信息。提供的实现包含意图分析和生成节点,条件边决定进入生成器还是结束。修复循环位于生成器内部。

验证是决策点

基础语法检查可触发再次生成,表名检查仅作提示,执行则单独测试。查询能够解析或输出格式正确,都不保证回答正确。

实现细节

临床问题

自然语言请求

Planner Agent

意图分析与分步拆解

SQL 生成

基于 schema 生成 SQL

验证与修复

语法、schema、执行检查与修复

执行或安全拒答

有效查询执行;无法解决时安全拒答

成果与演示

团队评估中正确回答的问题数

17 / 20 (85%)
评估详情
样本量
20 questions

职责边界

设计与实现

设计分步规划逻辑,集成 LangGraph 状态、节点与转移。

评估

参与团队评估中的失败案例测试;团队正确回答了 20 个问题中的 17 个。

团队背景

帝国理工团队项目,使用 MIMIC-IV。