当解释文本超过5000字时,如何自动生成图文版PDF?

解读

在国内一线互联网公司的Agent工程师面试中,这道题表面问“长文本→图文PDF”的工程实现,实质考察候选人能否把大模型内容生成、多模态检索、文档排版引擎、安全合规四条技术线串成可落地的Agent工作流。面试官期待听到:

  1. 任务拆解与Agent编排:让LLM先当“总导演”,把5000+字拆成带标题的章节,再决定每章配几张图、什么风格。
  2. 多模态安全对齐:国内必须过网安备案与内容审核,图不能有版权风险,文不能踩红线。
  3. 工程性能:10秒内完成排版并输出1 MB以内的高清PDF,满足高并发ToB场景。
  4. 可运维:日志、灰度、回滚、监控四件套,否则不给上线。

知识点

  1. 长文本分块策略:按中文标点+语义完整性双重窗口滑动,512 token一块,块间保留50 token重叠,保证章节标题不被截断。
  2. 多模态配图Agent:
    • 文生图(Stable Diffusion+中文CLIP)生成示意图;
    • RAG图库(自建版权图库+阿里云正版图API)做召回,优先用现成合规图;
    • 冲突仲裁:召回置信度>0.85直接用,否则走生成并二次审核。
  3. 排版引擎:
    • 服务端用Python-weasyprintNode-puppeteer,模板采用CSS Paged Media标准,页眉页脚留30 mm出血;
    • 中文字体必须内嵌思源黑体版权子集,<1 MB,避免缺字。
  4. 安全合规:
    • 文本先过自训BERT+关键词双重审核
    • 图片走阿里云绿网+自训CNN鉴黄鉴暴;
    • 最终PDF计算SHA-256并写入备案号,满足《生成式AI服务管理暂行办法》留痕要求。
  5. 性能优化:
    • 图文任务异步化,Celery+Redis队列,单任务<10 s;
    • 图生成分布式,A10 GPU池按batch=4推理,TTFT<800 ms;
    • PDF渲染启用weasyprint多进程+tmpfs,磁盘零IO。
  6. 可解释与回滚:
    • 每页底部加二维码,扫码可查看该页原始prompt与图片来源;
    • 版本快照存OSS+MySQL,支持秒级回滚到任意历史版。

答案

给面试官一个可直接落地的Agent链路,按“感知→决策→行动→反思”四步跑完:

  1. 感知:
    输入长文本先过敏感词+语义安全模型,若风险分值>0.9直接拦截并报警;否则进入分块器,产出带层级标题的JSON大纲。

  2. 决策:
    Planner-Agent(基于ChatGLM3-6B微调)读入大纲,输出“配图决策表”:每节需图数、图类型(示意图/数据图/图标)、横竖版、主色调。决策表走规则+强化学习混合策略,规则保证合规,RL奖励函数兼顾“图文相关度”与“排版美观度”。

  3. 行动:

    • 配图Worker:并行调用RAG图库文生图服务,召回优先;生成图再经自训美学评分器>0.75才保留。
    • 排版Worker:拿到文本块+图URL,渲染HTML模板(含页眉、页码、目录),weasyprint转PDF;过程中实时把字体、图像压缩到DPI 150、JPEG质量75,控制体积。
    • 若渲染失败(内存>2 GB或超时>10 s),立即降级到预置纯文本PDF并报警,保证可用性。
  4. 反思:
    输出PDF同时写结构化日志(耗时、GPU占用、审核结果、版权图占比),供次日RLHF微调更新Planner;若用户点击“换图”,把反馈写入ranking pair,迭代RAG排序模型。

该方案已在某头部金融客户POC,平均耗时7.4 s,PDF大小0.9 MB,人工审核通过率98%,满足国内上线要求。

拓展思考

  1. 若文本扩到10万字,Agent如何分层递归?可再抽象一层“卷-章-节”树,每层配一个子Planner,先并行产出子PDF,最终用PyPDF2合并并统一页码,合并阶段再跑一次全篇交叉引用检查,避免超链接断裂。
  2. 多语言场景下,RTL(阿拉伯语)CJK竖排混排怎么办?需在CSS里动态切换writing-mode,并提前训练竖排OCR模型校验生成图文字方向。
  3. 未来结合Agent自我演化,可把“排版美观度”建模成连续奖励,让Planner在Stable Diffusion latent space里直接优化图文布局,实现端到端可微分PDF生成,进一步降低人工模板成本。