news 2026/6/17 20:27:19

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
手把手教你搭建一个「参考文献不造假」的 AI 综述写作系统

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

传统做法的架构缺陷:

  1. 用户输入关键词 → 搜索引擎返回标题 → 大模型凭记忆写正文 → 随机分配引用编号 → 标题列表当参考文献

结果就是:AI 编的引用、DOI 不存在、正文和引文不匹配。

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


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

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

  1. Step1: AI生成检索策略 → Step2: 真实数据库检索 → Step3: 提纲编辑
  2. → 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

  1. 你是一个医学综述写手,请根据以下标题写一篇综述:[标题]
  2. 参考文献:请自行查找

本系统的 Prompt 结构(简化示意):

  1. 你要撰写综述的章节:[章节标题和要求]
  2. 该章节需要用到的文献及其核心信息:
  3. - [文献1] (PMID: xxxx, RCT, n=1204): 二甲双胍组 HOMA-IR 较安慰剂组显著降低 (HR=0.62, p<0.01)
  4. - [文献2] (PMID: yyyy, Meta-analysis, 18 RCTs): ...
  5. 写作要求:
  6. 1. 引用文献时使用 [N] 编号
  7. 2. 每句有据可查,不要泛泛而谈
  8. 3. 优先引用大样本、高影响因子的文献

关键差异:AI 不是「凭记忆写」,而是「看着结构化证据写」。每句引用都对应一条具体的文献记录,该记录有真实的 PMID 和提取出的核心结论。


Step 6:审稿 + 全文润色

6.1 AI 审稿

AI 从四个维度评审:

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

6.2 逐句 AI 工具

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

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

6.3 参考文献格式化

  1. GBT: [1] Zhang S, Li W. Metformin effects... [J]. J Clin Endocrinol Metab, 2024.
  2. APA: Zhang, S., & Li, W. (2024). Metformin effects...
  3. 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 #全栈开发 #独立开发者

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/17 20:16:35

NXP MC33814评估板实战:汽车电子功率驱动与引擎控制核心功能解析

1. 项目概述与核心价值在汽车电子和嵌入式系统开发领域&#xff0c;尤其是针对摩托车、通用小型发动机这类应用&#xff0c;工程师面临的核心挑战之一是如何高效、可靠地驱动和控制一系列高功率负载&#xff0c;如点火线圈、喷油器、燃油泵继电器等。这些负载不仅需要大电流驱动…

作者头像 李华
网站建设 2026/6/17 20:14:34

计算机毕业设计之基于电商数据日志分析系统

电商数据日志分析系统是一种基于Django框架的在线存储和信息共享平台。它提供了便捷的搜索信息数据库储存和管理功能&#xff0c;用户可以通过网络随时随地查询自己的所需信息。该系统基于Django框架&#xff0c;利用Python语言&#xff0c;结合目前流行的 B/S架构&#xff0c;…

作者头像 李华
网站建设 2026/6/17 20:13:52

FreeMASTER GUI:基于BDM的MM912H634实时调试与可视化控制实战

1. 项目概述与核心价值如果你正在开发基于飞思卡尔&#xff08;现恩智浦&#xff09;MM912H634这类集成S12内核的智能功率驱动芯片&#xff0c;那么一个直观、高效的实时调试工具绝对是你的“第二双眼睛”。我接触过不少工程师&#xff0c;在调试复杂的汽车电子或工业控制项目时…

作者头像 李华
网站建设 2026/6/17 20:11:42

六马达聚焦零损耗,AM-601让光缆接续一步到位

.2026年的中国&#xff0c;一场前所未有的大规模基础设施建设正在纵深推进。不同于2008年“4万亿”投向的铁路与公路&#xff0c;这一次&#xff0c;7万亿元投资精准地砸向了水网、新型电网、算力网、新一代通信网、城市地下管网和物流网“六张网”——建的是AI时代的数字底座。…

作者头像 李华
网站建设 2026/6/17 20:04:56

TradingView-Screener 深度解析:Python 量化交易数据获取技术实现

TradingView-Screener 深度解析&#xff1a;Python 量化交易数据获取技术实现 【免费下载链接】TradingView-Screener A package that lets you create TradingView screeners in Python 项目地址: https://gitcode.com/gh_mirrors/tr/TradingView-Screener TradingView…

作者头像 李华
网站建设 2026/6/17 19:58:30

为什么90%的uni-app开发者都在寻找这个Vue 3框架?uView-Plus深度解析

为什么90%的uni-app开发者都在寻找这个Vue 3框架&#xff1f;uView-Plus深度解析 【免费下载链接】uview-plus 零云uview-plus&#xff0c;是uni-app全面兼容nvue的uni-app生态框架&#xff0c;全面的组件和便捷的工具会让您信手拈来&#xff0c;如鱼得水。 项目地址: https:…

作者头像 李华