Agent 的引用溯源机制:当模型输出自带来源标注
构建一个基于文档回答的 Agent 时最让人头疼的问题不是 Agent 答不出来而是它答出来的内容你没法验证。用户问根据这份合同违约金是多少Agent 返回了一个数字。用户信了。但你怎么知道它没看错条款你说我让它引用原文但靠 Prompt 要求模型输出引用结果要么是模型自己编造了原文citation hallucination要么是引用格式不统一前端没法渲染。这个问题在 RAG 应用中尤其突出。当 Agent 从多个文档中检索信息再组织成回答时用户看到的是模型整理后的文本而不是原始证据。你没法判断这个结论是来自文档还是模型自己推断的。企业级场景下这种不可验证性直接决定了 Agent 能不能上线。Anthropic 的 Citations 特性解决的就是这个具体问题让模型在回答时自动标注每条结论来自哪个文档的哪个位置并且返回原文片段。关键在于这不是靠 Prompt 提示模型请引用原文而是 API 层面的结构化机制——模型输出时API 自动解析出引用关系返回结构化的 citation 对象包含被引用的原文文本和文档中的精确位置。引用机制的技术拆解先看最基础的使用方式。在 API 请求中把文档以document类型的内容块传入并在文档上设置citations.enabled: trueresponse client.messages.create( modelclaude-opus-5, max_tokens1024, 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( modelclaude-opus-5, max_tokens1024, 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大模型商业化落地方案作为普通人入局大模型时代需要持续学习和实践不断提高自己的技能和认知水平同时也需要有责任感和伦理意识为人工智能的健康发展贡献力量。

相关新闻

滚动回测思想

滚动回测思想

滚动回测(Rolling / Walk-Forward Backtest) 是量化投资与时序建模中用于验证策略时效性的动态评估方法。它通过随时间推移不断滑动训练与测试窗口,真实模拟策略在实盘中定期重新训练、参数微调与再平衡的全过程。 与传统“一次性划分训练集与…

2026/8/6 17:50:38 阅读更多 →
题解:洛谷 P1421 小玉买文具

题解:洛谷 P1421 小玉买文具

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大家订阅我的专栏:算法…

2026/8/6 17:50:38 阅读更多 →
题解:洛谷 P5722 【深基4.例11】数列求和

题解:洛谷 P5722 【深基4.例11】数列求和

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大家订阅我的专栏:算法…

2026/8/6 17:49:38 阅读更多 →

最新新闻

3个关键步骤:如何在4MB ESP32设备上实现AI语音交互

3个关键步骤:如何在4MB ESP32设备上实现AI语音交互

3个关键步骤:如何在4MB ESP32设备上实现AI语音交互 【免费下载链接】xiaozhi-esp32 An MCP-based chatbot | 一个基于MCP的聊天机器人 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32 你是否曾梦想为低成本ESP32设备赋予智能语音能力&…

2026/8/6 18:50:05 阅读更多 →
Antigravity 和 Antigravity IDE 汉化教学

Antigravity 和 Antigravity IDE 汉化教学

前言 相信各位朋友平常在用一些海外的 Agents 和 IDE 的时候,由于大部分程序内置语言都是英语,而很少有中文的语言选项,而我们平常用的国内 Agents 和 IDE,大部分程序的内置语言都是中文,给我们的使用体验十分友好&am…

2026/8/6 18:50:05 阅读更多 →
Docker Compose常用命令

Docker Compose常用命令

Docker Compose常用命令安装docker-comosedocker-compose配置文件及常用指令yaml 文件级docker-compose.yml配置文件示例docker compose常用命令启动服务停止服务重启服务查看运行容器列表查看服务日志构建镜像docker-compose rm删除安装docker-comose docker20.10 之后的版本…

2026/8/6 18:50:05 阅读更多 →
屹晶微EG11722 150V/3A/110kHz降压DCDC电源芯片,内置功率MOS与使能保护,用于电动车/快充/工业电源

屹晶微EG11722 150V/3A/110kHz降压DCDC电源芯片,内置功率MOS与使能保护,用于电动车/快充/工业电源

在高压降压电源设计中,传统方案往往需要外置功率管和复杂的外围电路,增加了设计难度和BOM成本。屹晶微电子推出的EG11722是一款宽输入电压范围(10V至150V)的降压型DC-DC电源管理芯片,内部集成了150V/3A功率MOS管、使能…

2026/8/6 18:50:05 阅读更多 →
一个IP引发的“血案”:账号频繁异常,根源大多是IP环境不干净

一个IP引发的“血案”:账号频繁异常,根源大多是IP环境不干净

做跨境电商、海外内容运营,从业者最怕的并非选品失利、流量波动,而是账号毫无征兆地出现异常:登录反复触发安全验证、店铺流量持续下滑、曝光与订单锐减,严重时直接收到平台风控预警、功能限制甚至封禁处罚。 绝大多数运营者遇到这…

2026/8/6 18:50:05 阅读更多 →
LVS + Keepalived + Nginx 高可用集群部署 项目实战(后端使用(Spring Boot 3.3 + Java 17)

LVS + Keepalived + Nginx 高可用集群部署 项目实战(后端使用(Spring Boot 3.3 + Java 17)

效果图展示内网软件商店 (Software Store)企业内网 B/S 架构软件包管理系统,支持 x86 / ARM 双架构。目录结构software-store/ ├── backend/ # 后端源码 (Spring Boot 3.3 Java 17) │ ├── pom.xml # Maven 构建文件 │ …

2026/8/6 18:49:05 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →