当前位置: 首页 > news >正文

Agent 的引用溯源机制:当模型输出自带来源标注

构建一个基于文档回答的 Agent 时,最让人头疼的问题不是 Agent 答不出来,而是它答出来的内容你没法验证。用户问"根据这份合同,违约金是多少",Agent 返回了一个数字。用户信了。但你怎么知道它没看错条款?你说"我让它引用原文",但靠 Prompt 要求模型输出引用,结果要么是模型自己编造了原文(citation hallucination),要么是引用格式不统一,前端没法渲染。

这个问题在 RAG 应用中尤其突出。当 Agent 从多个文档中检索信息,再组织成回答时,用户看到的是模型整理后的文本,而不是原始证据。你没法判断"这个结论是来自文档,还是模型自己推断的"。企业级场景下,这种不可验证性直接决定了 Agent 能不能上线。

Anthropic 的 Citations 特性解决的就是这个具体问题:让模型在回答时,自动标注每条结论来自哪个文档的哪个位置,并且返回原文片段。关键在于,这不是靠 Prompt 提示模型"请引用原文",而是 API 层面的结构化机制——模型输出时,API 自动解析出引用关系,返回结构化的 citation 对象,包含被引用的原文文本和文档中的精确位置。

引用机制的技术拆解

先看最基础的使用方式。在 API 请求中,把文档以document类型的内容块传入,并在文档上设置citations.enabled: true

response = client.messages.create( model="claude-opus-5", max_tokens=1024, messages=[ { "role": "user", "content": [ { "type": "document", "source": { "type": "text", "media_type": "text/plain", "data": "The grass is green. The sky is blue.", }, "title": "My Document", "context": "This is a trustworthy document.", "citations": {"enabled": True}, }, {"type": "text", "text": "What color is the grass and sky?"}, ], } ], )

关键点在于:citations.enabled是设置在文档上的,不是全局参数。这意味着你可以同时传入需要引用的文档和不需要引用的文档,但当前版本要求同一个请求中要么全部启用,要么全部禁用。

响应结构是理解这个特性的核心。模型返回的content不再是一个完整的文本块,而是被拆分成多个文本块,每块可能附带一组citations

{ "content": [ {"type": "text", "text": "According to the document, "}, { "type": "text", "text": "the grass is green", "citations": [ { "type": "char_location", "cited_text": "The grass is green.", "document_index": 0, "document_title": "Example Document", "start_char_index": 0, "end_char_index": 20, } ], }, {"type": "text", "text": " and "}, { "type": "text", "text": "the sky is blue", "citations": [ { "type": "char_location", "cited_text": "The sky is blue.", "document_index": 0, "document_title": "Example Document", "start_char_index": 20, "end_char_index": 36, } ], } ] }

每个citation对象包含:被引用的原文片段(cited_text)、所属文档的索引(document_index)、文档标题(document_title),以及根据文档类型不同的位置信息。对于纯文本文档,位置信息是字符索引范围;对于 PDF,是页码范围;对于自定义内容文档,是内容块索引范围。

cited_text不计入输出 Token——这是需要特别注意的工程细节。如果你的应用之前靠 Prompt 让模型输出引用,每次引用都会消耗输出 Token 和对应的费用。使用 Citations 特性后,cited_text由 API 直接从文档中提取,不产生额外 Token 消耗。

三种文档类型的选择策略

Anthropic 支持三种文档类型,每种有不同的分块策略和引用格式:

文档类型

分块方式

引用格式

适用场景

纯文本

按句子分块

字符索引范围

标准文档、文章

PDF

按句子分块

页码范围

扫描件、正式报告

自定义内容

不额外分块

内容块索引范围

列表、转录、RAG 分块

纯文本和 PDF 文档会被自动按句子分块,模型可以引用单个句子或多个连续句子。自定义内容文档则让你自己控制分块粒度——你把内容按你的逻辑切好,模型直接引用你提供的块。

这个选择对 RAG 场景有直接影响。如果你的 RAG 系统已经对文档做了分块处理,每个块是一个独立的检索单元,那么使用自定义内容文档类型,把每个 RAG 块作为一个独立的内容块传入,可以避免 API 再次分块带来的不确定性。反之,如果想让 API 自动处理分块,使用纯文本类型即可。

流式场景下的引用处理

Citations 在流式响应中以citations_delta事件类型到达。当使用 Server-Sent Events 流式接收响应时,引用数据会以独立的 delta 事件发送:

event: content_block_delta data: {"type": "content_block_delta", "index": 0, "delta": {"type": "citations_delta", "citation": { "type": "char_location", "cited_text": "...", "document_index": 0, }}}

这意味着前端需要处理两种 delta 类型:text_delta用于渲染文本,citations_delta用于在对应文本块上附加引用信息。如果前端已经在处理流式文本渲染,需要额外处理citations_delta事件来更新引用标注。

与 Prompt Caching 的配合

Citations 和 Prompt Caching 可以同时使用。文档内容可以被缓存,而引用结果不会缓存——每次请求都会重新生成引用。在文档上设置cache_control即可:

response = client.messages.create( model="claude-opus-5", max_tokens=1024, messages=[ { "role": "user", "content": [ { "type": "document", "source": { "type": "text", "media_type": "text/plain", "data": long_document, }, "citations": {"enabled": True}, "cache_control": {"type": "ephemeral"}, }, {"type": "text", "text": "What does this document say?"}, ], } ], )

对于长度超过缓存阈值的文档,这个组合能显著降低重复请求的输入 Token 成本。需要注意:引用结果本身不缓存,但文档内容是缓存的有效部分。

重要边界:与结构化输出的不兼容

Citations 不能和结构化输出(Structured Outputs)一起使用。如果在文档上启用citations.enabled,同时在请求中设置了output_config.format参数,API 会返回 400 错误。原因是引用需要在文本输出中穿插 citation 块,这与严格 JSON Schema 约束的结构化输出不兼容。

这个限制在实际工程中意味着:如果你的 Agent 需要同时做两件事——从文档中提取信息(需要引用)和输出结构化数据(需要结构化输出)——你需要拆成两轮调用。第一轮用 Citations 获取带引用的文本回答,第二轮用结构化输出提取关键字段。或者放弃引用,直接用结构化输出提取数据。

工程落地建议

如果团队已经在用 Prompt 方式让模型输出引用,迁移到 Citations 特性后有几个直接收益:Token 成本降低(cited_text 不计入输出 Token)、引用可靠性提升(API 保证引用指向真实文档位置)、引用质量改善(官方评估表明 Citations 特性比纯 Prompt 方式更倾向于引用最相关的原文)。

但 Citations 特性不是万能的。它只适用于在请求中直接传入文档的场景,对 Agent 工具调用返回的结果不生效。如果 Agent 通过工具从外部系统获取数据,这些数据需要先以document类型传回给模型才能启用引用。这意味着你需要调整 Agent 的调用链:工具返回的数据→以document类型传给模型→模型回答时自动引用。

另一个需要注意的点是,当前版本要求所有文档要么全部启用引用,要么全部禁用。如果某些文档不需要引用但又不想被排除,可以考虑把这些文档以普通文本类型传入,而不是作为document类型。

对于生产环境,建议在用户侧或管理后台展示引用来源。cited_text可以直接渲染为可点击的高亮文本,document_title和位置信息可以作为 tooltip 或脚注展示。这比纯文本回答多了一层交互,但用户对 Agent 回答的信任度会显著提升。

Citations 特性解决的不是模型能力问题,而是可信度问题。当模型回答可以追溯到具体原文时,Agent 从"黑盒生成器"变成了"可验证的信息整理器"。对于企业级 RAG 应用、合同审查 Agent、合规问答系统等场景,这种可验证性可能是能否上线的分水岭。

学习资源推荐

如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!​

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示

​因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

四、AI大模型商业化落地方案

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

http://www.jsqmd.com/news/1341199/

相关文章:

  • 暗黑破坏神2存档修改终极指南:d2s-editor让你掌控单机游戏命运
  • 2026云南公考培训机构发布:七家主流机构实力横评与选报指南 - 资讯在线
  • 2026秦皇岛装修公司靠谱名单|正规资质半包全包家装口碑汇总 - 装修新知
  • 从零构建技术栈:终极编程学习指南与实战项目大全
  • 乌鲁木齐公司注销代办选型指南:避开低价陷阱,看清税务清算、周期和责任边界 - 中国品牌企业观察网
  • OpenClaw智能体集成Cloudflare AI Gateway:统一管理、降本增效实战指南
  • 登录之后还不够:企业 RAG 知识库怎么防止用户越权访问?
  • PHP7 数组的实现
  • 如何快速配置PUBG-Logitech:3步实现智能游戏辅助工具的零文件修改压枪
  • 图解RAG,一张图理解检索增强生成
  • 推荐2026年广受好评的4款RFID资产管理系统 - 全域品牌推荐
  • 高温高速超大构件皆可测!DIC攻克多尺度全场应变
  • 青浦徐泾配镜亲测!国展旁这家眼镜店,配儿童防控镜真的靠谱 - 林州鸿途网络
  • 双栈兼容IP离线库:IPv6时代风控与运维的“无感升级”最优解
  • 实用Blender插件大全:一站式提升3D创作效率的终极指南
  • 中国学历证书公证怎么认证?涉外模板+认证全透明! - 指上通
  • 推荐几家国内靠谱的GEO服务商? - 产品评测官
  • 半年自研144个应用!郑州一建益企联 从数据孤岛到智能管控!!
  • Python基础-基础语法(五)
  • Siri AI升级:从平淡体验到智能助手的工程挑战与实用指南
  • 「APP软件开发」与微服务 / 云原生结合的工程实践
  • Horos医学影像软件:macOS上的免费专业级DICOM查看器终极指南
  • 助贷风控效率革命:昆仲AI如何通过征信报告解读、流水解析与法诉查询工具终结人工核查三大顽疾? - 甄选测评官
  • Thor 上手第一天 Checklist
  • 凌晨两点,OpenCode 优先级队列把我的上下文截断了:回灌策略如何吃掉 40% 的关键结果
  • 生成式引擎优化哪家好?不同预算和需求对应的服务商盘点 - 全域品牌推荐
  • 兴义房屋漏水怎么办?超人防水补漏深耕全城,专注解决兴义各类季节性渗漏难题2026.8月新 - 超人防水
  • 终极免费绘图神器:draw.io桌面版完全使用指南
  • 别只看最终答案:多模态 RAG 需要一套文档解析评测包
  • 5分钟快速上手FanControl中文版:Windows风扇控制终极指南