简历审查Agent工程化收尾:模型坑位、线程安全、超时兜底与RAG预告

0. 上下文衔接

Day 6 完成了简历审查Agent的API层骨架:上传返回202、后台create_task+GC保护、轮询查询、图编排。但代码跑通和能上线之间还有一段距离,今天收尾处理一批工程化问题:

  1. DeepSeek V4模型的思考模式坑:换模型后结构化输出全部报错
  2. 图实例的线程安全:全局单例图在并发下State互相污染
  3. 临时文件清理:审查完PDF不删,磁盘迟早撑爆
  4. 轮询超时兜底:后台任务挂死时前端不能永远轮询
  5. DELETE和列表接口:补齐CRUD的最后两个接口
  6. 开发效率技巧:中间结果缓存避免每次调LLM
  7. 问题诊断节点完整实现:CoT+优先级排序+降级
  8. 第五章RAG预告:从线性Agent到带分支的检索增强系统

Day 8+ 第五章 RAG

Day 7 工程化收尾 能上线

Day 5-6 已完成 能跑

PDF提取

结构化提取

六维并行gather

upload+poll接口

create_task后台

DeepSeek V4
关闭思考模式

Thread-Local
图实例

临时文件清理

轮询15分钟超时

DELETE+列表接口

中间结果JSON缓存

意图识别分支

向量检索

多路径问答


1. DeepSeek V4思考模式:换模型必踩的坑

1.1 问题现象

之前用的是deepseek-chat(V3),一切正常。当尝试切换到V4 Flash或V4 Pro时,结构化输出全部报错,with_structured_output返回的不是Pydantic对象而是字符串,retry两次都失败,最后走兜底。

1.2 根本原因

DeepSeek V4系列默认开启了"思考模式"(类似o1的推理链),模型在正式回答前会先输出一段<think>...</think>推理过程。这段推理文本不在Pydantic schema里,导致结构化输出解析失败: