欢迎光临
我们一直在努力

手把手教你搭建一个「参考文献不造假」的 AI 综述写作系统

作为一个写过医学综述、也被 AI 工具坑过的独立开发者,我发现市面上大多数 AI 论文写作工具都有一个致命缺陷:参考文献不可靠。

传统做法的架构缺陷:

  • 用户输入关键词 → 搜索引擎返回标题 → 大模型凭记忆写正文 → 随机分配引用编号 → 标题列表当参考文献
  • 结果就是:AI 编的引用、DOI 不存在、正文和引文不匹配。

    这篇文章从技术实现角度,分享一下我是怎么解决这个问题的。


    核心设计理念:证据链流水线

    不要用一个 Prompt 生成全文,而是分成 6 个确定性的步骤。每一步的输出都是下一步的输入,每一步都可以人工审核。

  • Step1: AI生成检索策略 → Step2: 真实数据库检索 → Step3: 提纲编辑
  • → Step4: 文献筛选+结构化提取 → Step5: 证据绑定写作 → Step6: 审稿润色

  • Step 1:让 AI 生成专业检索策略

    问题

    用户通常只会输入自然语言主题,比如「二甲双胍对多囊卵巢综合征代谢指标的影响」。如果直接用这句话去 PubMed 检索,查全率和查准率都很低。

    解决方案

    让 LLM 将自然语言主题映射为 MeSH 词 + 布尔逻辑检索式:

    产出物:

    • PubMed 检索式:("Metformin"[Mesh] OR "Metformin"[tiab]) AND ("Polycystic Ovary Syndrome"[Mesh] OR "PCOS"[tiab]) AND …
    • CNKI 检索式:(二甲双胍 OR 格华止) AND (多囊卵巢综合征 OR 多囊卵巢) AND …

    Step 2:在真实数据库中执行检索

    关键点

    绝对不要让 LLM 生成文献列表! 这一步必须调用真实的学术数据库 API。

    / 调用 PubMed E-utilities API
    async function searchPubMed({ query, pageNum, pageSize, startYear, endYear }) {
    const params = {
    db: 'pubmed',
    term: query,
    retstart: (pageNum – 1) * pageSize,
    retmax: pageSize,
    sort: 'relevance',
    mindate: `${startYear}/01/01`,
    maxdate: `${endYear}/12/31`,
    datetype: 'pdat',
    retmode: 'json',
    };
    // 调用 E-utilities,解析返回的 PMID 列表
    // 然后通过 EFetch 获取详细元数据
    }

    每篇文献返回的数据结构:

    {
    "id": "pmid_12345678",
    "title": "Metformin effects on metabolic parameters in PCOS…",
    "authors": "Zhang S, Li W, Chen X, …",
    "journal": "J Clin Endocrinol Metab",
    "year": 2024,
    "doi": "10.1210/xxxxx",
    "pmid": "12345678",
    "pmc": "PMCxxxxxx",
    "abstract": "OBJECTIVE: To evaluate the effects of…",
    "impactFactor": 6.9,
    "casZone": "Q1",
    "isWarning": false,
    "apaFormat": "Zhang, S., Li, W., … (2024). Metformin…",
    "gbtFormat": "[1] Zhang S, Li W, … Metformin… [J]. J Clin Endocrinol Metab, 2024."
    }

    每个字段都来自数据库,零幻觉。


    Step 3:提纲生成 + 人机协作编辑

    设计思路

    提纲是综述的骨架。让 AI 出初稿,人来做决策。

    提纲数据结构(递归嵌套):

    1. 引言1.1 研究背景。。。。

    前端交互:

    • 使用 @dnd-kit/core 实现章节拖拽排序
    • 将嵌套提纲递归解析为扁平列表 outlineToSections(),编辑后再反向组回嵌套 sectionsToOutline()
    • 支持升降级(H1 ↔ H2 ↔ H3 ↔ H4)、增删、AI 润色

    Step 4:文献筛选与结构化提取(最核心)

    这步是整个系统的「灵魂」

    传统做法的问题不是「没有文献」,而是「文献和正文没有关联」。

    实现方案

    4.1 AI 主题聚类

    将文献池中的论文按研究方向自动分组:

    # 后端逻辑(简化)
    papers = […] # Step 2 中的文献列表
    themes = llm.cluster_by_theme(papers)
    # 输出: {"流行病学数据": [paper1, paper3], "机制研究": [paper5, paper8], …}

    4.2 结构化信息提取

    对每篇文献提取标准化的关键信息,为 Step 5 的写作提供「证据数据」:

    {
    "paperId": "pmid_12345678",
    "structuredInfo": {
    "researchType": "RCT",
    "sampleSize": 1204,
    "population": "PCOS patients aged 18-40",
    "intervention": "Metformin 1500mg/day",
    "comparator": "Placebo",
    "coreIndex": "HOMA-IR decreased by 1.2 (95%CI: 0.8-1.6, p<0.01)",
    "limitations": "Single center, 24-week follow-up only"
    }
    }

    4.3 纳排标准筛选

    用户可设置的筛选条件:

    const INCLUDE_CRITERIA = {
    RCT: '仅纳入随机对照试验',
    COHORT: '纳入队列研究',
    SAMPLE_GTE_50: '样本量 ≥ 50',
    IF_GTE_3: 'IF ≥ 3.0',
    RECENT_3Y: '近3年发表',
    };

    4.4 文献补充

    当文献不够时,支持三种补充方式:

    • 引文滚雪球:调用 API 获取某篇文献的参考文献列表
    • PDF 上传解析:Grobid + PDFBox 提取 PDF 中的参考文献
    • 手动搜索:直接在 PubMed/CNKI 中搜索追加

    Step 5:基于证据的正文生成

    这一步的 Prompt 结构完全不同

    传统方案的 Prompt:

  • 你是一个医学综述写手,请根据以下标题写一篇综述:[标题]
  • 参考文献:请自行查找
  • 本系统的 Prompt 结构(简化示意):

  • 你要撰写综述的章节:[章节标题和要求]
  • 该章节需要用到的文献及其核心信息:
  • – [文献1] (PMID: xxxx, RCT, n=1204): 二甲双胍组 HOMA-IR 较安慰剂组显著降低 (HR=0.62, p<0.01)
  • – [文献2] (PMID: yyyy, Meta-analysis, 18 RCTs): …
  • 写作要求:
  • 1. 引用文献时使用 [N] 编号
  • 2. 每句有据可查,不要泛泛而谈
  • 3. 优先引用大样本、高影响因子的文献
  • 关键差异:AI 不是「凭记忆写」,而是「看着结构化证据写」。每句引用都对应一条具体的文献记录,该记录有真实的 PMID 和提取出的核心结论。


    Step 6:审稿 + 全文润色

    6.1 AI 审稿

    AI 从四个维度评审:

  • 1. 逻辑结构:章节衔接是否流畅?论证链条是否完整?
  • 2. 论证力度:每个论点是否有足够的文献支撑?
  • 3. 文献质量:引用的文献是否是领域内的关键研究?
  • 4. 表达规范:术语使用是否正确?是否有冗余表达?
  • 6.2 逐句 AI 工具

    选中文本后可用的 9 种操作:

    const AI_TOOLS = {
    POLISH: '润色',
    REWRITE: '改写',
    IMITATE: '仿写',
    EXPAND: '扩写',
    CONDENSE: '缩写',
    PROOFREAD: '校对',
    REPHRASE: '降重',
    TRANSLATE: '翻译',
    SEARCH_CITE: '搜索并引用',
    };

    6.3 参考文献格式化

  • GBT: [1] Zhang S, Li W. Metformin effects… [J]. J Clin Endocrinol Metab, 2024.
  • APA: Zhang, S., & Li, W. (2024). Metformin effects…
  • EndNote: 支持导出为 .enw 格式

  • 技术栈总结

    模块技术选型
    前端 React 19 + Vite 8
    编辑器 Vditor(WYSIWYG + Markdown)
    拖拽 @dnd-kit
    文献检索 PubMed E-utilities + CNKI API
    AI 引擎 GPT-4 / Claude(后端编排)
    实时通信 SSE
    PDF 解析 Grobid + PDFBox
    导出 Word (.docx) + Markdown

    总结

    这个系统的核心价值不是「用了多强的 AI 模型」,而是把循证医学的写作方法论固化为软件流水线。

    每一条引用都对应一篇真实存在的文献,每一篇文献都有提取出的结构化证据,每一段正文都基于这些证据生成——这是一个「先读再写」的架构,不是「凭记忆瞎编」的 prompt。

    如果你也想自己搭建类似系统,关键就一句话:把「文献真实性」作为架构约束,而不是事后检查项。


    项目地址:TopBeeAi-SCI(见主页链接)

    #React #AI写作 #医学综述 #PubMed #全栈开发 #独立开发者

    赞(0)
    未经允许不得转载:171主机测评 » 手把手教你搭建一个「参考文献不造假」的 AI 综述写作系统
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址