作为一个写过医学综述、也被 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, p0.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, n1204): 二甲双胍组 HOMA-IR 较安慰剂组显著降低 (HR0.62, p0.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编辑器VditorWYSIWYG Markdown拖拽dnd-kit文献检索PubMed E-utilities CNKI APIAI 引擎GPT-4 / Claude后端编排实时通信SSEPDF 解析Grobid PDFBox导出Word (.docx) Markdown总结这个系统的核心价值不是「用了多强的 AI 模型」而是把循证医学的写作方法论固化为软件流水线。每一条引用都对应一篇真实存在的文献每一篇文献都有提取出的结构化证据每一段正文都基于这些证据生成——这是一个「先读再写」的架构不是「凭记忆瞎编」的 prompt。如果你也想自己搭建类似系统关键就一句话把「文献真实性」作为架构约束而不是事后检查项。项目地址TopBeeAi-SCI见主页链接#React #AI写作 #医学综述 #PubMed #全栈开发 #独立开发者
手把手教你搭建一个「参考文献不造假」的 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, p0.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, n1204): 二甲双胍组 HOMA-IR 较安慰剂组显著降低 (HR0.62, p0.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编辑器VditorWYSIWYG Markdown拖拽dnd-kit文献检索PubMed E-utilities CNKI APIAI 引擎GPT-4 / Claude后端编排实时通信SSEPDF 解析Grobid PDFBox导出Word (.docx) Markdown总结这个系统的核心价值不是「用了多强的 AI 模型」而是把循证医学的写作方法论固化为软件流水线。每一条引用都对应一篇真实存在的文献每一篇文献都有提取出的结构化证据每一段正文都基于这些证据生成——这是一个「先读再写」的架构不是「凭记忆瞎编」的 prompt。如果你也想自己搭建类似系统关键就一句话把「文献真实性」作为架构约束而不是事后检查项。项目地址TopBeeAi-SCI见主页链接#React #AI写作 #医学综述 #PubMed #全栈开发 #独立开发者