课程大纲 › 领域 5:上下文管理与可靠性
5.6 在整合多个信息源时保留出处并处理不确定性
タスクステートメント5.6:複数の情報源の統合において情報の出所を保持し不確実性に対処する
官方大纲原文(日文):知识 4 条 · 技能 5 条
需要掌握的知识
- 主張と情報源の対応付けを保持せずに発見事項が圧縮されると、要約のステップで情報源の帰属が失われる仕組み
- 発見事項を統合する際に統合エージェントが保持しマージしなければならない、構造化された主張と情報源の対応付けの重要性
- 信頼できる情報源の間で矛盾する統計の扱い方:一方の値を恣意的に選ぶのではなく、情報源の帰属を付けて矛盾に注記すること
- 時間に関するデータ:時間的な差異が矛盾として誤って解釈されるのを防ぐために、構造化出力に公開日や収集日を要求すること
需要能做到的事
- サブエージェントに対して、下流のエージェントが統合を通じて保持する、構造化された主張と情報源の対応付け(情報源のURL、文書名、関連する抜粋)を出力することを要求する
- 十分に確立された発見事項と異論のある発見事項を区別する明示的なセクションでレポートを構造化し、元の情報源での特徴付けと方法論上のコンテキストを保持する
- 矛盾する値を含めて明示的に注記したうえで文書の分析を完了し、統合に渡す前にどのように整合させるかをコーディネーターに判断させる
- 時間的に正しい解釈を可能にするために、サブエージェントに対して構造化出力に公開日またはデータ収集日を含めることを要求する
- すべてを画一的な形式に変換するのではなく、統合の出力においてコンテンツの種類ごとに適切な表現を用いる(財務データは表、ニュースは文章、技術的な発見事項は構造化されたリスト)
课程讲解 · AI 草稿,未经人工审核 以官方文档为准
这一条考什么
这一条考你在多 Agent 研究或整合流水线中,怎么让"每条结论来自哪里"一路保留到最终报告。你要会要求子 Agent 输出结构化的"主张—来源"映射,会处理可信来源之间互相矛盾的数据,会用发布日期和采集日期避免把时间差异误判成矛盾,还要会按内容类型选用合适的呈现方式。
核心概念
出处为什么会在摘要环节丢失
典型流水线是:搜索 Agent 找到来源,分析 Agent 抽出要点,整合 Agent 写叙述,报告 Agent 成文。每一步如果都只传"压缩后的文字",主张和来源之间的对应关系就会在压缩中被抹掉。到了报告阶段,你只能看到"市场规模约 120 亿美元",却不知道这个数字是谁说的、在第几页。
事后再补救(让报告 Agent 回去搜来源、用语义相似度去匹配原文、在文字里插来源前缀再解析)都不可靠。根本办法是把出处当作数据契约的一部分,从一开始就结构化地传递。
结构化的"主张—来源"映射
要求每个子 Agent 输出的每条发现都带上来源记录:
{
"claim_id": "C-07",
"claim": "2024 年欧洲热泵销量同比下降约 21%",
"sources": [
{"url": "https://example.org/ehpa-2025", "doc_title": "EHPA Market Report 2025",
"location": "p.12", "excerpt": "sales fell by 21% compared to 2023",
"published": "2025-03-10", "data_period": "2024-01..2024-12",
"method": "17 国销售数据汇总"}
]
}整合 Agent 在合并发现时必须保留并合并这些映射:多个来源支持同一主张时合并 sources,改写措辞时保留 claim_id。交给报告 Agent 的也不是"一段摘要",而是"叙述草稿 + 结构化的来源索引"(claim_id → URL、摘录),这样报告阶段每句话都能找到出处,又不需要重新传入全部原始材料。
可信来源之间数据矛盾:标注,而不是挑一个
两个都可信的来源给出不同的数字,比如行业协会估计 35%,同行评审研究估计 28%(附 95% 置信区间),正确做法是:
- 两个值都保留,各自标注来源;
- 说明差异可能的原因(方法、样本、口径不同),保留原来源对结论的表述和方法背景;
- 不要任意取一个,不要取平均,也不要把它们包装成一个自信的单一结论。
对于文档分析类的子 Agent:遇到矛盾值时,应该照常完成分析,把冲突值都写进输出并显式标注(比如 conflict: true),然后交给协调者决定怎么调和,而不是自己悄悄选一个或者因此中断。
在报告结构上,用明确的分节区分"证据充分的结论"和"存在争议的结论",既不把争议抹平成一句肯定的话,也不对所有内容都过度加限定语。
时间数据:要求发布日期和采集日期
搜索 Agent 返回"2024 年采用率 35%",文档 Agent 从 2021 年的内部报告里抽出"18%"。如果没有日期,整合 Agent 很可能把它当作矛盾,或者随便选一个。其实它们是不同时间点的观测,合在一起说明了增长趋势。
所以要在结构化输出里强制要求 published(发布日期)和 data_period(数据采集或观测期间)。两者要分开:2025 年发布的报告可能用的是 2023 年的数据。不能简单地"丢掉旧数据"或"只搜最近 6 个月",因为历史数据对趋势分析同样有价值。
按内容类型选择呈现方式
整合输出不要把所有内容都塞进同一种格式:
- 财务数据:用表格,因为它们有可对比的字段、单位和报告期;
- 新闻动态:用连贯的文字,保留事件之间的因果和时间线;
- 技术发现(专利、漏洞、架构评估):用结构化列表,便于逐项核对。
把全部内容统一成文字摘要,或者加一层转换把所有输出变成同一种中间格式,都会丢失每类信息本身的结构优势。
正确做法与反模式
- 正确:要求子 Agent 输出主张—来源映射(URL、文档名、位置、相关摘录)。反模式:子 Agent 只返回带内联引用的文字摘要,整合时引用逐渐丢失。
- 正确:整合 Agent 保留并合并映射,交给报告阶段的是"草稿 + 来源索引"。反模式:报告阶段回头搜索来源,或者用语义相似度重建出处。
- 正确:可信来源数据冲突时两值并列,标注来源和方法差异。反模式:任意取一个、取平均,或者只保留至少两个来源互相印证的主张,结果把有价值的分歧删掉了。
- 正确:子 Agent 遇到冲突值时照常完成分析,标注冲突,交给协调者决定。反模式:子 Agent 自行选择一个值,或者因冲突而终止。
- 正确:输出中强制包含发布日期和数据采集期间。反模式:只保留最新数据,或者自动丢弃旧值。
- 正确:报告分节区分"证据充分"和"有争议",按内容类型选择表格、文字或列表。反模式:全部转换成统一格式。
常见陷阱
- "跳过摘要,把全部原始输出直接交给报告 Agent":能保留出处,但上下文会爆掉,信噪比也很低。正确做法是结构化地分离内容和来源元数据。
- "让报告 Agent 重新查询搜索 Agent 来找来源"或"事后用相似度匹配":属于事后重建,不可靠,还会额外增加调用。
- "在文字里插入来源前缀,再解析":脆弱,措辞一改就可能失效。出处应该作为结构化字段传递。
- "取较新的值 / 取平均 / 加一个冲突裁决 Agent 自动丢弃旧数据":都在凭空制造确定性。正确选项是两值并列并注明来源和方法。
- "只搜索最近 6 个月":解决不了时间口径问题,还丢了趋势数据。正确选项是要求发布日期和采集期间。
- "统一所有子 Agent 的输出为文字(或统一 JSON)":看起来整齐,但丢掉了各类信息的结构。正确选项是按内容类型呈现。
实操练习
目标:模拟两个子 Agent 的结构化输出(包含一处时间差异、一处真正的矛盾),让整合 Agent 生成保留出处的报告。
- 构造子 Agent 输出:每条发现都包含
claim_id、claim、sources(URL、摘录、published、data_period、method)。 - 让整合 Agent 输出报告,要求分为"证据充分"、"存在争议"、"时间序列"三节,每句话后面用
[C-xx]引用。 - 用代码检查报告里的
[C-xx]是否都能在来源索引里找到。
import json
import re
import anthropic
client = anthropic.Anthropic()
findings = [
{"claim_id": "C-01", "claim": "可再生能源采用率 35%", "sources": [{"url": "https://example.org/web-2024",
"excerpt": "adoption reached 35%", "published": "2025-02-01", "data_period": "2024", "method": "全国抽样调查"}]},
{"claim_id": "C-02", "claim": "可再生能源采用率 18%", "sources": [{"url": "https://example.org/internal-2021",
"excerpt": "18% of sites", "published": "2021-11-15", "data_period": "2021", "method": "内部站点统计"}]},
{"claim_id": "C-03", "claim": "2024 年储能装机增长 40%", "sources": [{"url": "https://example.org/assoc",
"excerpt": "+40% YoY", "published": "2025-01-20", "data_period": "2024", "method": "行业协会估算,方法未公开"}]},
{"claim_id": "C-04", "claim": "2024 年储能装机增长 26%(95% CI 22-30%)", "sources": [{"url": "https://example.org/peer",
"excerpt": "26% (95% CI 22-30)", "published": "2025-04-02", "data_period": "2024", "method": "同行评审,项目级数据"}]},
]
prompt = f"""以下是子 Agent 的结构化发现(含来源):
{json.dumps(findings, ensure_ascii=False, indent=1)}
写一份简短报告,分三节:## 证据充分 / ## 存在争议 / ## 时间序列。
规则:每个事实句末用 [C-xx] 引用;不同时间点的数据不是矛盾,放进时间序列;同一时期的冲突值并列呈现并说明方法差异,不要任选其一或取平均。"""
r = client.messages.create(model="claude-sonnet-4-5", max_tokens=1200,
messages=[{"role": "user", "content": prompt}])
report = r.content[0].text
print(report)
known = {f["claim_id"] for f in findings}
cited = set(re.findall(r"C-\d{2}", report))
print("未知引用:", cited - known, " 未被引用:", known - cited)要检查的结果:C-01 和 C-02 应该出现在"时间序列"一节,表述为从 2021 年到 2024 年的增长,而不是矛盾;C-03 和 C-04 应该在"存在争议"一节并列出现,并说明协会估算和同行评审在方法上的差异,保留置信区间;最后打印的"未知引用"应该为空集。
自测清单
- 出处为什么会在摘要步骤中丢失?为什么事后重建不可靠?
- 一条结构化的"主张—来源"记录应该包含哪些字段?整合 Agent 应该怎么处理它?
- 两个可信来源给出冲突的统计数据时,报告应该怎么写?子 Agent 又应该怎么做?
- 为什么要同时要求发布日期和数据采集期间?举一个时间差异被误判成矛盾的例子。
- 财务数据、新闻、技术发现分别适合什么呈现方式?为什么不应该统一格式?
对应题目(9)
题目归类由 AI 判断,仅供参考。
练习这 9 道题