84 lines
1.8 KiB
Markdown
84 lines
1.8 KiB
Markdown
# 长文本字段归纳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 关闭时主流程仍可完成。
|
|
|