Files
DEMO-AGENT/docs/需求分析/6.agent_core模块需求分析.md

444 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Agent Core 模块需求分析
## 1. 模块定位
`agent_core` 是整套系统的能力中枢。在本题中,它不应再被描述为“一个通用 Prompt + RAG + Tool 的抽象核心”,而应被明确定位为:
> 注册申报资料审核编排引擎
它负责把法规规则、文档解析结果、字段抽取逻辑、一致性核查逻辑、风险输出模板和大模型能力组织成一个可执行的审核流程。
## 2. 模块总目标
本模块需要完成以下目标:
1. 基于题面要求完成文件目录汇总、完整性核查、字段抽取、回填准备、一致性检查和风险预警。
2. 形成规则优先、模型辅助的审核框架,而不是完全依赖自由生成。
3. 提供结构化、可追溯、可测试的输出。
4. 保持与 Django 页面层和数据层的边界清晰。
## 3. 为什么 Agent Core 是本题真正的“答题核心”
本题的难点不在“接个大模型接口”,而在于以下几点如何落到一个统一编排里:
1. 资料目录与法规目录如何比对。
2. 产品说明书、申请表、产品列表、声明文件之间如何抽取统一字段。
3. 不同字段的“一致”与“不一致”如何定义。
4. 风险预警如何从规则结果和模型解释中生成。
这些都属于 `agent_core` 的职责范围。
## 4. 核心能力拆分
建议将 `agent_core` 的能力拆成以下几个子域理解。
### 4.1 任务编排
根据不同任务入口,组织不同处理链路。例如:
- 目录汇总链路
- 完整性检查链路
- 字段抽取链路
- 一致性核查链路
- 综合风险链路
### 4.2 规则引擎
对以下事项优先使用规则处理:
- 章节点完整性
- 必交文件判断
- 文件归类
- 固定字段抽取
- 强一致字段比对
### 4.3 LLM 辅助推理
对以下事项由 LLM 作为辅助:
- 长段文本中的字段归纳
- 语义等价判断
- 风险说明文案生成
- 处理建议生成
- 无法通过简单规则覆盖的异常解释
### 4.4 RAG 检索
用于在文档较长、规则或用户问题较细时,从已入库资料中定位证据片段,为回答和审计提供支撑。
### 4.5 结构化输出
将每类任务输出为明确 schema而不是一段随意文本。
## 5. 按题面要求拆解的能力需求
## 5.1 文件目录汇总能力
### 目标
自动汇总注册申报文件夹中的所有文件及页数。
### 需要的输入
- Documents 模块提供的文档记录
- 文件页数
- 文档归类信息
### 处理逻辑
1. 遍历当前项目 / 批次所有资料。
2. 汇总文件名、章节点、页数、状态。
3. 识别目录类文档与普通文档。
4. 输出目录总表。
### 输出要求
结构化输出中至少包含:
- 文件清单
- 文件数量
- 总页数
- 已识别章节点
- 待确认文档
## 5.2 法规完整性核查能力
### 目标
对照 NMPA 法规要求,检查所需资料是否齐全,并识别缺失项。
### 规则依据
当前材料已明确可用依据包括:
- `附件 4 体外诊断试剂注册申报资料要求及说明`
- `CH1.2 监管信息目录`
- 题面中提及的 NMPA / CMDE 法规来源
### 处理逻辑
1. 装载法规目录模板。
2. 装载当前资料实际清单。
3. 以章节点和资料名称进行匹配。
4. 区分:
- 已提供
- 缺失
- 疑似已提供但命名不规范
- 需人工判断
5. 生成缺失项清单和建议动作。
### 关键难点
不是所有缺失都等价。需要区分:
- 监管强制项缺失
- 目录中声明有但实际文件找不到
- 文件存在但内容不符合该章节点用途
### 输出要求
- 命中项列表
- 缺失项列表
- 风险等级
- 建议补充动作
- 规则依据
## 5.3 产品关键信息抽取能力
### 目标
从产品文件中提取关键信息并自动填写到目标文件或结构化结果中。
### 目标字段建议
至少包括题面点名字段:
- 产品名称
- 检测靶标
- 适用范围 / 预期用途
- 储存条件
- 性能指标
结合样例材料,建议进一步扩展:
- 包装规格
- 适用样本类型
- 适用仪器
- 分类编码
- 临床评价路径
- 申请人名称
- 生产地址
- 标准清单
- 申报日期
### 字段来源优先级
需要明确来源优先级,例如:
1. 申请表
2. 产品说明书
3. 产品列表
4. 声明类文件
5. 其他说明材料
或根据字段类型分别设定优先级。
### 抽取逻辑
1. 规则抽取显式字段。
2. 表格抽取规格、组分、标准清单等。
3. 对长文本字段使用 LLM 归纳。
4. 将结果写入统一字段池。
5. 标记字段来源和置信状态。
### 输出要求
- 字段名
- 字段值
- 来源文档
- 来源片段
- 是否冲突
- 是否可直接回填
## 5.4 自动回填准备能力
### 目标
将抽取得到的信息填入目标文件或目标字段。
### 首版建议范围
首版不必以“完整保真写回 Word 模板”为核心验收,而可以先实现:
- 申请表字段回填数据集
- 对照清单字段回填数据集
- 页面可视化回填预览
### 处理逻辑
1. 根据目标模板定义字段映射。
2. 从统一字段池读取值。
3. 对冲突字段进行拦截或提示。
4. 生成回填预览结果。
### 后续扩展
如需求方确认需要真实文档导出,再增加 Word 模板写回。
## 5.5 一致性核查能力
### 目标
核查不同文档间相同信息是否一致,检测章节结构和规范性问题。
### 强一致字段
建议首版按强一致处理的字段包括:
- 产品名称
- 申请人名称
- 规格型号 / 包装规格
- 分类编码
- 申报产品名称对应的章节点标题
### 语义一致字段
可按语义一致或近似一致处理的字段包括:
- 预期用途 / 适用范围
- 储存条件描述
- 适用样本类型
### 结构核查
除字段一致性外,还应检查:
- 说明书是否包含关键章节
- 目录页是否覆盖当前章节点
- 文档标题是否规范
- 是否存在不属于本产品的资料混入
### 典型异常示例
根据当前样例,系统应能识别:
- 说明书产品是“2019-nCoV”申请表和产品列表是“呼吸道合胞病毒、肺炎支原体”。
- 这类冲突应被直接标记为高风险或至少中高风险。
### 输出要求
- 一致字段列表
- 冲突字段列表
- 冲突明细
- 风险等级
- 处理建议
## 5.6 合规风险预警能力
### 目标
把完整性检查、字段抽取和一致性核查的结果汇总成可执行的风险清单。
### 风险类型建议
- 缺失风险
- 混档风险
- 字段冲突风险
- 章节不规范风险
- 历史申报事项风险
- 资料真实性 / 版本一致性风险
### 风险分级建议
首版可采用:
- 高风险
- 中风险
- 低风险
- 待人工确认
### 处理建议生成逻辑
规则部分负责给出基础动作,例如:
- “补充缺失文件”
- “核对产品名称”
- “重新确认临床资料版本”
LLM 负责把这些动作组织成自然语言建议,但不能改变底层规则结论。
## 6. 统一字段池设计需求
为支撑抽取、回填和一致性核查,建议在 `agent_core` 内形成统一字段池概念。
字段池至少记录:
- 字段名
- 标准化字段值
- 原始字段值
- 来源文档
- 来源位置
- 置信度
- 冲突状态
- 最终推荐值
这是本题从“简单聊天 Demo”走向“资料审核系统”的关键能力之一。
## 7. 规则体系需求
### 7.1 完整性规则
用于判断:
- 某章节点是否必交
- 当前资料是否命中
- 缺失是否构成高风险
### 7.2 抽取规则
用于:
- 标题识别
- 表格字段映射
- 固定格式声明提取
### 7.3 一致性规则
用于定义:
- 哪些字段必须完全一致
- 哪些字段允许近似匹配
- 如何判断冲突严重度
### 7.4 风险映射规则
用于把缺失、冲突、不确定结果映射为风险级别和处理建议。
## 8. 工具体系需求
题面附加要求提到需要展示实际调用的关键工具/库。因此 `agent_core.tools` 中应逐步沉淀出与本题强相关的工具,而不是只保留通用样例工具。
建议工具方向包括:
1. 文档页数统计工具
2. 章节点识别工具
3. 必交项检查工具
4. 字段抽取工具
5. 字段一致性比对工具
6. 风险汇总工具
这些工具都应通过 Tool Registry 注册,符合项目既有边界要求。
## 9. LLM Provider 需求
### 9.1 不允许业务代码散落模型调用
所有模型调用继续通过 Provider 统一处理。
### 9.2 模型在本题中的使用原则
本题应坚持:
1. 规则优先
2. 证据优先
3. 模型负责解释、补充和归纳
4. 模型不应凭空判断法规完整性
### 9.3 测试要求
所有核心编排逻辑应继续支持 Mock Provider以保证回归测试离线可跑。
## 10. 结构化输出 Schema 需求
建议至少定义以下输出类型:
1. `registration_overview_report`
2. `registration_completeness_report`
3. `registration_field_extraction_report`
4. `registration_consistency_report`
5. `registration_risk_report`
每种输出都应有稳定字段,便于页面展示与测试覆盖。
## 11. 与其他模块的边界
### 11.1 与 Documents 模块
Documents 负责提供资料事实Agent Core 负责把这些事实转化为审核结论。
### 11.2 与 Chat 模块
Chat 负责接收用户意图和展示结果Agent Core 负责执行任务链路。
### 11.3 与 Audit 模块
Audit 负责记录过程和结果Agent Core 负责产出可记录的结构化执行信息。
## 12. 当前代码基线下的重构建议
### 12.1 建议保留
- Prompt 编排机制
- 结构化结果对象
- Tool Registry
- RAG fallback / Chroma 双路径思路
- Mock Provider 测试策略
### 12.2 建议增强
1. 从通用场景输出转向注册审核专用输出 schema。
2. 增加法规完整性规则和目录模板匹配逻辑。
3. 增加统一字段池。
4. 增加一致性核查与风险汇总工具。
5. 将“回填准备结果”纳入正式输出结构。
## 13. 验收标准
本模块完成后,应至少满足:
1. 能支持目录汇总、完整性检查、字段抽取、一致性核查、风险预警五类核心任务。
2. 核心结论有结构化输出,不依赖随意文本。
3. 规则和模型分工清晰,法规判断不完全依赖大模型生成。
4. 输出能关联到具体文档和证据片段。
5. 测试环境下可以通过 Mock Provider 验证主要编排逻辑。