3.0 KiB
3.0 KiB
字段抽取编排Skill 设计
1. Skill 定位
字段抽取编排Skill 是第三步工作流的总入口 Skill,负责组织字段抽取范围确认、字段 schema 加载、规则抽取、表格抽取、长文本归纳、字段标准化、统一字段池写入和报告生成。
英文实现标识建议使用 FieldExtractionOrchestrateSkill。
本 Skill 不直接完成每一种抽取细节,而是负责执行顺序和结果合并。
2. 输入
@dataclass
class FieldExtractionOrchestrateInput:
batch_id: int
scenario_id: str = "registration_field_extraction"
field_schema_id: str = "ivd_registration_fields_v1"
selected_document_ids: list[int] = field(default_factory=list)
target_field_keys: list[str] = field(default_factory=list)
enable_llm_fallback: bool = True
enable_rag_context: bool = True
3. 输出
@dataclass
class FieldExtractionOrchestrateOutput:
report_type: str
batch_id: int
field_schema_id: str
summary: dict
field_pool_items: list[dict]
manual_review_fields: list[dict]
evidence_refs: list[dict]
audit_id: int | None = None
4. 依赖 Skill
字段抽取范围确认Skill字段Schema加载Skill规则字段抽取Skill表格字段抽取Skill长文本字段归纳Skill字段标准化Skill统一字段池写入Skill字段抽取报告生成Skill
5. 核心方法
5.1 run(input) -> FieldExtractionOrchestrateOutput
主入口方法。
执行顺序:
- 加载执行上下文。
- 调用
字段抽取范围确认Skill。 - 调用
字段Schema加载Skill。 - 调用
规则字段抽取Skill。 - 调用
表格字段抽取Skill。 - 按需调用
长文本字段归纳Skill。 - 调用
字段标准化Skill。 - 调用
统一字段池写入Skill。 - 调用
字段抽取报告生成Skill。 - 写入审计记录。
5.2 load_execution_context(input) -> FieldExtractionContext
加载批次、文档、完整性检查报告和已有字段池状态。
5.3 merge_field_candidates(*candidate_groups) -> list[FieldCandidate]
合并规则抽取、表格抽取和长文本归纳结果。
5.4 filter_target_fields(schema, target_field_keys) -> list[FieldDefinition]
筛选本次需要抽取的字段。
6. 技术实现
使用技术:
- Python dataclass 或 Pydantic
- Tool Registry
- LLM Provider
- Django 服务层
- Audit 服务
建议注册名:
tool_registry.register(
name="field_extraction_orchestrate",
handler=FieldExtractionOrchestrateSkill().run,
)
7. 异常处理
- 无可抽取文档:返回业务提示。
- 字段 schema 不存在:任务失败并写审计。
- LLM 不可用:跳过 LLM,保留规则和表格结果。
- 所有抽取方式均失败:返回待人工复核报告。
8. 测试要点
- 能按顺序调用依赖 Skill。
- LLM 关闭时仍可执行规则抽取。
- 无文档时返回清晰错误。
- 输出报告结构稳定。