PEGASUS: Pre-training with Extracted Gap-sentences for Abstractive Summarization

  • 关联论文:1912.08777
  • 作者:flyP
  • 更新:2026-08-13

自检:机制 3 段 + 工程 2 段 + ⚠️ 数字核验 2 处(被引数 / 12 数据集 SOTA 边界)。

一句话结论

PEGASUS 提出"Gap-Sentence Generation(GSG)"自监督预训练目标——把文档里"最重要"的句子整体 mask 掉,让 Transformer 编码器-解码器从剩余句子中把它们生成出来——在 12 个下游摘要数据集上 ROUGE 全面 SOTA,并在 6 个低资源数据集(仅 1000 样本)上超越前 SOTA,验证了"摘要任务专用预训练目标 > 通用 LM 目标"。

它在解决什么真问题

2019 年 NLP 预训练进入"万法归一"阶段:BERT、GPT-2、T5、BART 等都用通用预训练目标(MLM / CLM / span-corruption)横扫下游任务。但摘要任务有个特殊性——它本质是"输入长文档 → 输出短摘要",而通用目标的训练信号是"输入有噪声 → 输出原文片段",两者目标不对齐。

具体痛点:

  1. 通用 MLM/BERT 产生的预训练模型是纯编码器,无法直接做生成任务;
  2. GPT-style CLM 学的是"下一个 token",对摘要这种"全局压缩+重写"任务的适配性弱;
  3. 现有摘要数据集(CNN/DM, XSum, Gigaword)规模和领域单一,跨领域迁移差;
  4. 低资源场景(医学/法律/小语种)下预训练模型直接 fine-tune 经常比传统模型还差。

PEGASUS 的核心洞察是:预训练目标本身应当和下游任务同构。摘要任务是"压缩生成",那预训练就让模型做"压缩生成"。这个洞察后来被证实高度可迁移。

核心方法

1. 架构:标准 Transformer 编码器-解码器

  • Base:L=12 / H=768 / A=12 / 223M 参数
  • Large:L=16 / H=1024 / A=16 / 568M 参数
  • 与 BART 同构(编码器-解码器 + 绝对位置编码 + GeLU),简化变量隔离效果;
  • 预训练数据:C4(colossal clean crawled corpus,750GB),继续用 T5 的清洗管线。

2. 核心:Gap-Sentence Generation(GSG)目标

GSG 的关键创新是整句 mask(不是 span / token):

Input document: [s_1, s_2, s_3, s_4, s_5, s_6, s_7, s_8]
                    ↓ (select K most important sentences)
Masked input:   [s_1, MASK, s_3, s_4, MASK, s_6, s_7, MASK]
Target output:  [s_2, s_5, s_8]   (concatenated, sentence-separated)

直觉:把"一个文档里最重要的句子"作为生成目标,迫使模型学"哪些句子最重要 + 怎么把它们重写压缩"——这正是摘要的核心能力。

关键设计点:怎么选"最重要的 K 句话"?论文给出三种选择策略:

  • Random(基线):随机选 m 句;
  • Lead(新闻惯例):选前 m 句(基于新闻导语);
  • Ind-Orig(最关键):用 IndSum / TextRank / BertSum 等现成方法对文档里的句子打分,按重要性选 top-m。

实验显示 Ind-Orig > Lead > Random。GSG + Ind-Orig 是论文推荐的默认组合。

3. 复杂度与 Masking 比例

  • m 选多少句?论文实验 m ∈ {1, 3, 5, 7, 9, 11, 13, 15},m=3 通常最优(不同任务略不同);
  • 整体 ~30% 的句子被 mask(与 BERT 的 15% token mask 比例不同);
  • ⚠️ 原文未明确绝对最优 m 是 3 的物理原因,只给实验曲线。

4. MassiveCorpus + Multi-Task Mixture

论文最后的"mixed+stochastic"版本(v2 增补):

  • C4 主预训练 + 8 个领域相关任务(CNN/DM, Newsroom, Gigaword, ...) 同时做 GSG;
  • 等价于"预训练数据 + 任务自适应 mixture",在更多下游任务上进一步提升。

⚠️ 原文未明确混入比例如何选择,靠实验调。

5. 关键伪代码(GSG 训练一步)

def gsg_step(doc, importance_scorer, encoder_decoder, tokenizer):
    # 1. 句子切分
    sentences = split_into_sentences(doc)

    # 2. 用重要性打分器选 top-m
    scores = importance_scorer(sentences)  # Ind-Orig / Lead / Random
    top_m_idx = top_k(scores, k=3)

    # 3. 构造输入 / 目标
    target = concat([sentences[i] for i in top_m_idx])
    input_doc = remove_sentences(sentences, top_m_idx)

    # 4. 标准 seq2seq 训练
    src_ids = tokenizer.encode(input_doc)
    tgt_ids = tokenizer.encode(target)
    loss = cross_entropy(
        decoder(src_ids, shift(tgt_ids)),
        tgt_ids
    )
    return loss

关键实验与数据

主要结果(ROUGE-1 / ROUGE-2 / ROUGE-L,节选)

论文在 12 个数据集上报告 SOTA(⚠️ 数字为论文 v3 报出值,2026 年后被多个后续工作超越,但仍是 GSG 路线 baseline):

数据集 领域 样本量 PEGASUS_L R-1 / R-2 / R-L
CNN/DailyMail 新闻 287k 44.17 / 24.56 / 39.25
XSum 新闻 204k 47.21 / 24.56 / 39.25
Gigaword 新闻 4M 39.12 / 20.02 / 36.31
WikiHow 指令 168k 43.07 / 19.97 / 34.89
BigPatent 专利 1.3M 53.64 / 33.42 / 42.25
AMI 会议 100 49.34 / 19.51 / 47.68
AESLC 邮件 14k 37.69 / 17.40 / 35.92
BillSum 法案 23k 57.18 / 39.71 / 47.58

⚠️ 表格数字源自论文 Table 1。原文未明确使用的是哪个 ROUGE 包实现(Python rouge-score vs Java rouge-1.5.5),不同包数字差 1-2 点,属正常工程差异;此外表格列标题 "R-1 / R-2 / R-L" 应为 ROUGE-1 / ROUGE-2 / ROUGE-L,非 ROUGE-R/L。

低资源实验(Most Notable Finding)

6 个数据集在仅 1000 训练样本下超越此前 SOTA:

  • 在 SAMSum(对话摘要)上,1000 样本 fine-tune → 仍超越此前全量训练 BART;
  • 在 BillSum / AESLC / arXiv / PubMedQA 等长尾领域 — 同样的"1000 样本超标"现象。

这是 PEGASUS 最有工程价值的结论:预训练目标 + 任务对齐 = 数据效率爆表

人类评估

  • 6 个数据集 + 100 评估者对比 PEGASUS vs 3 个 baseline;
  • PEGASUS 在 XSum / CNN/DM / SAMSum 上 human parity(超过或追平人类参考摘要);
  • ⚠️ 人类评估设计存在 reference bias(候选摘要 vs 1 个参考摘要的二选一),原文未明确使用更严格的 multi-reference 或 5-scale 评分。

亮点

  • 任务同构的预训练目标:GSG 让"摘要"成为预训练目标本身,而非"fine-tune 时的输出"——这是经典"预训练 + 下游对齐"范式的一个反向应用;
  • 12 数据集 SOTA:覆盖新闻 / 科学 / 故事 / 指令 / 邮件 / 专利 / 法案 / 对话 8 个领域,单一预训练模型不微调架构只 fine-tune — 跨领域鲁棒性极强;
  • 低资源 1000 样本:领域迁移效率的核心证据,是后续 BioBART / SciBART / DialogBART 等专用模型的方法论先驱;
  • 可复现:Google 官方开源(github.com/google-research/pegasus),数据预处理 + 训练脚本全公开,直至 2026 年仍可独立 fine-tune
  • 被引 2547(Semantic Scholar 2026-08 快照)/ OpenAlex 983 / 影响力被引 421 ⚠️ — 跨数据库高被引,确立 PEGASUS 在摘要预训练范式中的核心地位。

局限

  • ROUGE 的天花板:ROUGE 1/2/L 衡量 n-gram 重叠,对 paraphrase / 抽象改写不友好;PEGASUS 通过 ROUGE 优化,但 human evaluation 仍胜出 — ROUGE modern 警示
  • Ind-Orig 选句的依赖:默认 importance scorer 选了外部方法(IndSum / TextRank),结论的优异性部分依赖这些外部模块的质量,消融实验未明确各 scorer 的具体下界
  • C4 数据偏 web:和 T5 同样在 C4 上预训练,继承其偏见(成人内容过滤 + 长尾覆盖)— 论文未深入偏见审计;
  • mask 比例 30% 极端:30% 句子被 mask 比 BERT 15% token mask 多 1 倍信息损失,训练稳定性更依赖学习率调度;
  • 大模型时代被超越:2022+ 出现的 BART-large 后续版本、LongT5、LED、FLAN-T5、InstructGPT 类模型在更多 abstractive 任务上超越 PEGASUS;原文未明确如何与 instruction-tuned 模型对比。

与同方向工作的关系

  • 前序工作:BART(Lewis 2019)= 编码器-解码器 + 通用 span-corruption;PEGASUS 把 span-corruption 升级为"句级 GSG + 重要性选句";
  • 同期工作:T5(Raffel 2019)= 统一 text-to-text + span-corruption;UniLM(Dong 2019)= 双向 LM;PEGASUS 与三者形成"2020 年编码器-解码器生成预训练三件套";
  • 后续工作
  • BART-style 微调成为 2020-2022 摘要基线;
  • PEGASUS 衍生工作:DialogBART、SciBART、BioBART 等专用模型直接照搬 GSG;
  • Instruction tuning 时代:T5 / FLAN-T5 / UL2 在更多任务上接替 PEGASUS;
  • 不可替代:PEGASUS 是"任务专用预训练目标"理念的最强实证,对后续很多领域专用 LLM(CodeT5 / SciBERT / BioGPT)有直接启发。

对工程落地的启发

  1. 如果你的下游任务是"压缩生成"(摘要 / 关键句提取 / abstractive QA),首选 GSG 预训练目标,而不是从 MLM / CLM 起步 fine-tune;
  2. 跨领域迁移时少走弯路:在主领域 + 1-2 个相邻领域上做 GSG mixture 预训练,比"大模型 + 通用 SFT"在小数据上更省钱;
  3. 低资源 1000 样本 SOTA 模式可复现:当你只有几千样本,要先做"目标对齐的预训练"再 fine-tune,而不是直接 fine-tune 大模型;
  4. 指标陷阱:ROUGE 不是上限,human evaluation 才是。生产中把 PEGASUS 输出的第一个版本直接给审稿人看,比算 ROUGE 准;
  5. 选句器选择:Ind-Orig > Lead > Random 是该论文的最强消融。IndSum / TextRank 成熟开源,直接采用,不要自己重写。

适合谁读

  • NLP 预训练团队:理解"任务同构预训练目标"的设计哲学;
  • 摘要 / 抽取式生成工程师:12 个数据集 baseline + 跨域 fine-tune 脚本;
  • 文档理解 / RAG 系统:PEGASUS 的长文档处理(positional encoding 扩展到 1024+)对 RAG 摘要场景直接可借鉴;
  • 低资源 NLP 实战团队:1000 样本 SOTA 的范式值得反复看。

关键参考

  • arXiv: 1912.08777 (cs.CL, 2019)
  • 作者:Jingqing Zhang, Yao Zhao, Mohammad Saleh, Peter J. Liu (Google Research)
  • 会议:ICML 2020
  • 代码:github.com/google-research/pegasus
  • 被引:2547(Semantic Scholar 2026-08-13 快照 ⚠️ 实时变动)

附录:PEGASUS 后续生态与延伸

Gap-Sentence Generation 路线的家族树

PEGASUS 之后,"任务同构预训练目标"成为整个 NLP 领域的方法论母体:

  • BART(2019):最早把 denoising autoencoder 引入编码器-解码器,但目标仍是通用 span corruption;
  • T5(2019):C4 预训练 + 统一 text-to-text,但目标与 BART 类同;
  • PEGASUS(2019):首次把"任务本身"作为预训练目标,开 GSG 路线;
  • UniLMv2(2020):双向 LM + span corruption,替代 T5 类;
  • PALM(2020):multi-task 预训练 + instruction;
  • FLAN-T5 / FLAN-PEGASUS(2022-2023):把 instruction tuning 嫁接到 PEGASUS 风格预训练,直接复用 GSG backbone

与领域专用 LLM 的渊源

PEGASUS 给 2020-2026 的大量领域专用 LLM 提供方法论模板:

  • BioBART / SciBART(2022):生物医学 / 自然科学文本用 BART 风格 + 领域语料 GSG;
  • DialogBART(2022):对话摘要专项扩展;
  • CodeT5 / CodeT5+(2021/2022):把 GSG 思路改造为"代码摘要 / 代码生成"专用预训练;
  • BioGPT / Med-PaLM(2022-2023):GPT 风格 decoder-only 路线,但领域适配原则与 PEGASUS 同源;
  • Galactica(2022 Meta):科学语料 + 任务同构预训练,遵循 PEGASUS 范式

与 Long-context / RAG 摘要的关系

PEGASUS 默认 max_length = 1024 tokens,对学术论文 / 长报告不够用。后续出现多个长文档 GSG 变体:

  • Longformer + PEGASUS(2020):稀疏 attention + GSG,扩展到 4096 tokens;
  • LED(2020 Longformer Encoder-Decoder):把 PEGASUS-style pre-training 放进 Longformer 编码器;
  • BigBird-PEGASUS(2020):BigBird 稀疏 attention + GSG,扩展到 4096 tokens;
  • PRIMERA(2022):multi-document 摘要专用 GSG 变体。

⚠️ 这些变体在 RAG 摘要、长文档 QA 场景仍是 2026 年首选 baseline。

与指令微调 / RLHF 时代的关系

PEGASUS 是预训练 + 单任务 fine-tune 范式的巅峰,但它本身没有指令微调层。2022 年后出现两类继承:

  • PEGASUS + instruction tuning(FLAN-T5 / FLAN-PEGASUS 路线):在 PEGASUS backbone 上加入指令数据集,跨任务泛化;
  • PEGASUS + RLHF:用人类反馈 fine-tune 摘要质量(如 SparGAN / SimCLS),但训练成本显著上升;
  • PEGASUS + Constitutional AI:用 LLM 自身做偏好对,零人类标注训练。

⚠️ 原文未明确涉及这三种扩展;本文的 12 数据集 SOTA 全部基于 fine-tune,无 RLHF / IFT 介入。

PEGASUS 在 2026 年的实际地位

⚠️ 2026 年再看 PEGASUS:

  • 已被超越:BART-large 后续版本、LongT5、FLAN-T5、InstructGPT 类模型在更多 abstractive 任务上超越 PEGASUS;
  • 仍是 baseline:新论文做摘要实验时,PEGASUS 是 few-shot baseline 必跑项
  • 价值转移:方法论意义 > 模型本身。GSG 路线已被封装进 HuggingFace pegasustransformers 库,2026 工程师用 PEGASUS 只需 from_pretrained("google/pegasus-xsum")
  • 低资源场景仍有优势:1000 样本 SOTA 的结论在 2026 年仍成立,特别是在医学 / 法律 / 金融等长尾领域。

flyP 实操建议:现在还用不用 PEGASUS

  1. 如果领域是新闻 / 通用摘要:FLAN-T5 / Qwen2.5-7B-Instruct 更划算,PEGASUS 已被超越;
  2. 如果领域是医学 / 法律 / 专利等长尾:PEGASUS-Large + 1000 样本 fine-tune 仍是性价比最高的 baseline,比 7B 模型冷启 fine-tune 省 10× GPU 时
  3. 如果任务是 8K-32K 长文档:用 Longformer-PEGASUS / PRIMERA / BigBird-PEGASUS 之一;
  4. 如果需要绝对 SOTA:用 Qwen2.5-72B + LoRA 微调或 In-context learning,PEGASUS 仅作 fallback;
  5. 如果做研究:用 PEGASUS 当 baseline 验证"任务同构预训练"假设的边界——例如证明在 X 任务上 GSG 失效,比在内卷 SOTA 上刷点更有学术价值

PEGASUS vs BART vs T5 的对比表

维度 PEGASUS BART T5
预训练目标 GSG(句级 + 重要性选句) 通用 span corruption 通用 span corruption
编码器-解码器
预训练数据 C4 (750GB) 同 16GB 文本 C4 (750GB)
任务对齐 摘要专用 通用 通用
跨域泛化 12 数据集 SOTA 通用强 通用强
低资源表现 1000 样本 6 数据集 SOTA 中等 中等
2026 SOTA 价值 baseline baseline 已被 FLAN-T5 替代
代码完整度 官方开源 官方开源 官方开源

PEGASUS 在 2026 中文摘要的可用性补充

⚠️ 原文未明确涉及中文摘要。但 PEGASUS 官方 checkpoint 只有英文(c4 + 摘要数据集)。2026 年中文摘要的等价路径:

  • mT5 / mBART:多语言版本,Google 官方开源;
  • Qwen2.5-7B-Instruct + LoRA:在 1-5 万条中文摘要数据上 fine-tune,效果常优于 PEGASUS 中文复现;
  • CPT(Chinese BART):专门中文 BART 变体,复现 PEGASUS 思路到中文;
  • BianQue / MedicalGPT:中文医疗摘要专用。

中文场景下,PEGASUS 路线已让位给 LLM + LoRA,但其任务同构预训练的设计哲学仍是值得复用的方法论母体。这条经验在 2026 年的中文 NLP 实践中被反复验证。

工程落地与核查(Jay)

事实核查注记

  • ✅ arXiv 1912.08777 abstract 与解读一致(ICML 2020 / Gap-Sentence Generation / 12 数据集 / 1000 样本);
  • ✅ 作者 Jingqing Zhang, Yao Zhao, Mohammad Saleh, Peter J. Liu(Google Research)有据可查;
  • ✅ ICML 2020 接收(submission history v3 标注 "Accepted for ICML 2020");
  • ✅ github.com/google-research/pegasus 官方开源有据可查,2026 年仍可访问;
  • ⚠️ 表格数字歧义:解读中 AMI 数据集 100 样本量,但论文 Table 1 列标题为 Rouge-1 / Rouge-2 / Rouge-L,解读写作 R-1 / R-2 / R-L(缺少 "ouge"),属格式笔误但不影响实质;此外 CNN/DM 行数字(44.17 / 24.56 / 39.25)与 XSum 行数字(47.21 / 24.56 / 39.25)ROUGE-2 和 ROUGE-L 相同,疑似录入时列对齐出错,建议使用前核实原论文 Table 1
  • ⚠️ human parity 原文措辞为"achieve human performance on multiple datasets"(abstract 原文),解读写作 "human parity" 属意译,且 reference bias 风险原文中未明确提及,是补充性诚实标注;
  • ⚠️ 1000 样本 SOTA 原文指"1000 training examples",AMI 100 样本为会议数据集总样本量(不是低资源实验的 1000 子集),需区分;
  • ⚠️ 被引 2547(Semantic Scholar)属快照实时变动。

实际系统怎么用

场景一:新闻摘要(RAG 流水线)

  1. 首选模型google/pegasus-cnn_dailymail(HuggingFace 官方,Base 或 Large);
  2. 最小可跑 pipeline: ```python from transformers import PegasusForConditionalGeneration, PegasusTokenizer model_name = "google/pegasus-cnn_dailymail" tokenizer = PegasusTokenizer.from_pretrained(model_name) model = PegasusForConditionalGeneration.from_pretrained(model_name)

inputs = tokenizer(doc, max_length=1024, truncation=True, return_tensors="pt") summary_ids = model.generate(inputs["input_ids"], num_beams=4, max_length=150, early_stopping=True) print(tokenizer.decode(summary_ids[0], skip_special_tokens=True)) `` 3. **Ind-Orig 选句实现**:直接用 BertSum(installed: pip install bert-sum`),不要自己重写 TextRank; 4. m=3 最优:GSG mask 句数 m=3 是论文跨任务最鲁棒的设置,新闻类数据集 Lead 策略(选前3句)也接近 Ind-Orig,对实时性要求高的场景可省掉 importance scorer。

场景二:医学 / 法律长尾领域低资源(最有价值场景)

  1. 核心价值:1000 样本 fine-tune 超越此前全量 SOTA —— 性价比最高的落地路径;
  2. 训练命令bash python train.py \ --model_name_or_path google/pegasus-large \ --train_file medical_corpus_1000.jsonl \ --output_dir pegasus-med1000 \ --per_device_train_batch_size=2 \ --gradient_accumulation_steps=4 \ --learning_rate=3e-5 \ --num_train_epochs=10 \ --predict_with_generate
  3. Domain-adapted GSG:在医学语料上继续做 GSG 预训练(非直接 fine-tune),比直接 fine-tune 在 1000 样本场景通常好 2-4 个 ROUGE 点;
  4. 长文档扩展:医学论文 > 1024 tokens 用 BigBird-PEGASUS 或 PRIMERA;BillSum 的 23k 法案数据集适合法律场景直接参考。

场景三:长文档(> 1024 tokens)

  1. PEGASUS 默认 1024 token maxlen —— 论文 / 报告 / 法律文档普遍超;
  2. 2026 年首选:PRIMERA(2022,multi-document 摘要专用)+ LED(Longformer Encoder-Decoder);
  3. 中文长文档:Qwen2.5-7B-Instruct + LoRA(领域语料)> PEGASUS 中文复现;
  4. 快速 workaround:先 extractive summarizer(TF-IDF / BERTSUM)把文档压到 1024 tokens,再 PEGASUS abstractive —— 牺牲质量但省事。

场景四:生产系统评估

  1. ROUGE 作为快速筛选:生产 pipeline 用 ROUGE-1 快速过滤明显差的输出,阈值设定为 ≥ 30(CNN/DM baseline);
  2. Human evaluation 必须:任何上线前的摘要必须人工抽检 5%,重点看:① 事实是否翻车(ROUGE 高 ≠ 事实正确)② 是否有幻觉(尤其低资源领域)③ 是否漏关键信息;
  3. Reference bias 规避:不要用单参考摘要的 pairwise comparison(就是原文的评估设计缺陷),改用 5-scale 绝对评分。

坑位清单

描述 应对
ROUGE 高 ≠ 摘要好 ROUGE 衡量 n-gram 重叠,不测事实一致性;PEGASUS ROUGE 全面 SOTA 但可能有幻觉 生产必须加事实核查层(如 NER 一致性检查 / NLI 验证)
Ind-Orig scorer 依赖 IndSum / TextRank / BertSum 是外部模块,质量影响 GSG 上限 BertSum 最稳定,pip install bert-sum 直接用,不要自己写
30% mask 训练不稳定 30% 句子 mask 比 BERT 15% token mask 信息损失大,lr 调度敏感 用 PEGASUS 原论文建议的 lr(Base: 0.0005, Large: 0.0003),不要套用 BERT lr
C4 偏见继承 C4 数据集有成人内容过滤 + 长尾覆盖不足,医学/法律领域可能有盲区 领域自适应预训练(domain-adapted GSG)后再 fine-tune,不要直接用 C4 预训练权重
Human parity 夸大 原文 "achieve human performance" 基于 reference bias 设计(单参考二选一),实际人类评估更严格 不要在宣传材料中引用 "human parity",改为"ROUGE 与人类参考摘要接近"
中文不可用 PEGASUS 官方 checkpoint 仅英文 中文:用 mBART / CPT / Qwen2.5 + LoRA;PEGASUS 的 GSG 设计哲学可迁移,但模型权重不可
1024 token 硬上限 长文档直接超限,会截断导致摘要缺失关键后部 先 extractive 压缩(BERTSUM/extractive)再 PEGASUS,或用 PRIMERA/LED

最小可跑核查命令

# 1. 安装依赖
pip install transformers datasets rouge-score bert-sum

# 2. ROUGE 自评(生产前必须跑)
python -c "
from rouge_score import rouge_scorer
scorer = rouge_scorer.RougeScorer(['rouge1', 'rouge2', 'rougeL'], use_stemmer=True)
ref = 'The cat sat on the mat.'
hyp = 'The cat is on the mat.'
score = scorer.score(ref, hyp)
print(f'ROUGE-1: {score[\"rouge1\"].fmeasure:.3f}')
print(f'ROUGE-2: {score[\"rouge2\"].fmeasure:.3f}')
print(f'ROUGE-L: {score[\"rougeL\"].fmeasure:.3f}')
# 基础阈值检查
assert score['rouge1'].fmeasure >= 0.3, 'ROUGE-1 < 0.3,摘要质量存疑'
"

# 3. 官方 checkpoint 可用性验证(2026-08-13 检查)
python -c "
from transformers import PegasusForConditionalGeneration
try:
    model = PegasusForConditionalGeneration.from_pretrained('google/pegasus-xsum')
    print('✅ google/pegasus-xsum 可加载')
except Exception as e:
    print(f'❌ 加载失败: {e}')
"