# 通用问答-文档总结-Summarize

## 适用场景

当 query 包含“总结一下、概括、提炼、分析这个、这篇文章、这个网页、这个文档、屏幕上的内容”等表达时，容易在 `文档总结`、`Summarize()`、`QA()`、`文本创作`、`图片问答` 之间混淆。

## 候选集合

- `文档总结`：旧 tag 或 Agent 包装候选。
- `Summarize()`：function program，适合已经确认有文档、URL 或资源对象时。
- `QA()`：泛知识问答，没有可总结资源，或用户问的是开放知识。
- `文本创作` / `Generate(object=Text)`：用户不是要求总结已有内容，而是要求生成新文本、评论、文案、文章。
- `VisionQA()`：用户问题依赖图片、屏幕、拍照或视觉指代，且不是明确文档/URL 总结。

## 决策顺序

1. 先判断是否存在可总结资源：
   - 明确文档、网页、URL、附件、屏幕文章、图片形式的文档。
   - 多轮上下文里上一轮刚上传或打开了资源。
2. 如果有资源，再判断资源类型：
   - 文档：`x0=Resource(type="DOC")` + `Summarize(object=x0)`。
   - URL/网页：`x0=Resource(type="URL")` + `Summarize(object=x0)`。
   - 未知资源但明确“总结一下”：可以使用 `Summarize()`，并在结果中标注资源待系统补全。
3. 如果没有资源，只是问知识：
   - “总结一下红楼梦”：通常是 `QA()`，不是文档总结。
   - “介绍一下孔乙己”：通常是 `QA()`。
4. 如果用户要求基于已有内容生成新文本：
   - “根据这篇文章写一段评论”：需要区分任务是否要求总结，还是创作。可以先总结资源，再进入文本创作，但最终 target 需按当前任务定义确认。
5. 如果 query 依赖视觉内容：
   - “屏幕上这段话是什么意思”：如果屏幕内容是文档/文章，偏 `Summarize()`；如果是图片、图标、题目或视觉指代，偏 `VisionQA()`。

## 正例

| query | 推荐 |
| --- | --- |
| 总结一下这个文档 | `x0=Resource(type="DOC")` + `Summarize(object=x0)` |
| 这个网页讲了什么 | `x0=Resource(type="URL")` + `Summarize(object=x0)` |
| 总结一下 | `Summarize()`，资源由上下文或系统补全 |
| 总结一下这篇论文的核心观点 | `Summarize()`，如果已知是文档则补 `Resource(type="DOC")` |

## 反例

| query | 不应给 | 推荐 |
| --- | --- | --- |
| 总结一下红楼梦 | `Summarize()` | `QA()` |
| 孔乙己这篇文章主要讲什么 | 无上下文资源时不要强行文档总结 | `QA()` |
| 写一段关于这篇文章的朋友圈文案 | 单纯 `Summarize()` | 需要确认是否文本创作，或先总结再生成 |
| 这个图标是什么意思 | `Summarize()` | `VisionQA()` 或图片问答 |

## 输出建议

- 如果当前任务使用 function program，优先输出 `Summarize()` 或 object + `Summarize(object=x0)`。
- 如果当前任务仍使用旧 tag，使用 `Agent(tag="文档总结")` 前必须确认这批数据要求 Agent 包装。
- 如果只是“总结一下某个知识实体”，不要因为出现“总结”两个字就给 `Summarize()`。

## 仍需确认

- 资源是否真实存在，还是用户只是问一个知识实体。
- 当前数据集 target 要求是 function program、intent，还是 `Agent(tag="xxx")`。
