docs(详细设计): 新增字段抽取与字段池设计
This commit is contained in:
83
docs/详细设计/skill/长文本字段归纳Skill.md
Normal file
83
docs/详细设计/skill/长文本字段归纳Skill.md
Normal file
@@ -0,0 +1,83 @@
|
||||
# 长文本字段归纳Skill 设计
|
||||
|
||||
## 1. Skill 定位
|
||||
|
||||
`长文本字段归纳Skill` 负责对规则和表格无法稳定抽取的长文本字段进行证据限定后的 LLM 归纳。
|
||||
|
||||
英文实现标识建议使用 `LongTextFieldSummarizeSkill`。
|
||||
|
||||
本 Skill 必须通过 LLM Provider 调用模型,并支持 Mock Provider。
|
||||
|
||||
## 2. 输入
|
||||
|
||||
```python
|
||||
@dataclass
|
||||
class LongTextFieldSummarizeInput:
|
||||
documents: list[DocumentContent]
|
||||
field_definitions: list[FieldDefinition]
|
||||
enable_rag_context: bool = True
|
||||
```
|
||||
|
||||
## 3. 输出
|
||||
|
||||
```python
|
||||
@dataclass
|
||||
class LongTextFieldSummarizeOutput:
|
||||
candidates: list[FieldCandidate]
|
||||
evidence_refs: list[EvidenceRef]
|
||||
tool_calls: list[dict]
|
||||
failed_fields: list[dict]
|
||||
```
|
||||
|
||||
## 4. 处理字段
|
||||
|
||||
1. 检测靶标。
|
||||
2. 适用范围 / 预期用途。
|
||||
3. 性能指标。
|
||||
4. 临床评价路径。
|
||||
|
||||
## 5. 核心方法
|
||||
|
||||
### 5.1 `run(input) -> LongTextFieldSummarizeOutput`
|
||||
|
||||
主入口方法。
|
||||
|
||||
### 5.2 `locate_field_context(document, field_definition) -> list[EvidenceChunk]`
|
||||
|
||||
通过 RAG 或关键词定位候选片段。
|
||||
|
||||
### 5.3 `build_llm_prompt(field_definition, chunks) -> str`
|
||||
|
||||
构造限定上下文提示词。
|
||||
|
||||
### 5.4 `call_provider(prompt, output_schema) -> dict`
|
||||
|
||||
调用 LLM Provider。
|
||||
|
||||
### 5.5 `validate_output(output) -> FieldCandidate`
|
||||
|
||||
校验结构化输出。
|
||||
|
||||
## 6. 技术实现
|
||||
|
||||
使用技术:
|
||||
|
||||
1. RAG fallback / Chroma
|
||||
2. LLM Provider
|
||||
3. JSON schema
|
||||
4. Mock Provider
|
||||
|
||||
## 7. 异常处理
|
||||
|
||||
1. 找不到候选片段:字段标记待人工复核。
|
||||
2. Provider 不可用:跳过 LLM。
|
||||
3. 输出 JSON 非法:丢弃结果。
|
||||
4. 输出没有来源片段:标记低可信。
|
||||
|
||||
## 8. 测试要点
|
||||
|
||||
1. Mock Provider 可返回固定字段。
|
||||
2. 找不到上下文时不会编造字段。
|
||||
3. 非法 JSON 被拦截。
|
||||
4. LLM 关闭时主流程仍可完成。
|
||||
|
||||
Reference in New Issue
Block a user