引用
Claude能够在回答关于文档的问题时提供详细的引用,帮助您跟踪和验证回复中的信息来源。
引用功能目前在Claude Opus 4、Claude Sonnet 4、Claude Sonnet 3.7、Claude Sonnet 3.5(新版)和Haiku 3.5上可用。
使用Claude Sonnet 3.7的引用功能
与其他Claude模型相比,如果没有用户更明确的指示,Claude Sonnet 3.7可能不太会进行引用。当使用Claude Sonnet 3.7的引用功能时,我们建议在user
回合中包含额外的指示,例如"使用引用来支持你的回答。"
我们还观察到,当要求模型构建特定格式的回答时,除非明确指示在该格式内使用引用,否则它不太可能使用引用。例如,如果要求模型在回答中使用
请使用此表单分享您对引用功能的反馈和建议。
以下是如何使用Messages API进行引用的示例:
与基于提示的方法比较
与基于提示的引用解决方案相比,引用功能具有以下优势:
- 成本节约: 如果您的基于提示的方法要求Claude输出直接引用,由于
cited_text
不计入输出令牌,您可能会看到成本节约。 - 更可靠的引用: 因为我们将引用解析为上述相应的响应格式并提取
cited_text
,引用保证包含对所提供文档的有效指针。 - 改进的引用质量: 在我们的评估中,我们发现引用功能与纯粹基于提示的方法相比,更有可能引用文档中最相关的引述。
引用功能的工作原理
通过以下步骤将引用与Claude集成:
文档处理过程
- 文档内容被”分块”以定义可能引用的最小粒度。例如,句子分块将允许Claude引用单个句子或将多个连续句子链接在一起以引用段落(或更长内容)!
- 对于PDF: 文本提取如PDF支持中所述,内容被分成句子。目前不支持从PDF中引用图像。
- 对于纯文本文档: 内容被分成可以引用的句子。
- 对于自定义内容文档: 您提供的内容块按原样使用,不进行进一步分块。
Claude提供带引用的回答
- 回答现在可能包含多个文本块,每个文本块可以包含Claude做出的声明和支持该声明的引用列表。
- 引用参考源文档中的特定位置。这些引用的格式取决于被引用的文档类型。
- 对于PDF: 引用将包括页码范围(从1开始索引)。
- 对于纯文本文档: 引用将包括字符索引范围(从0开始索引)。
- 对于自定义内容文档: 引用将包括内容块索引范围(从0开始索引),对应于原始提供的内容列表。
- 提供文档索引以指示参考源,并根据原始请求中所有文档的列表从0开始索引。
自动分块与自定义内容
默认情况下,纯文本和PDF文档会自动分成句子。如果您需要对引用粒度有更多控制(例如,对于项目符号或转录),请改用自定义内容文档。有关更多详细信息,请参阅文档类型。
例如,如果您希望Claude能够引用RAG块中的特定句子,您应该将每个RAG块放入纯文本文档中。否则,如果您不希望进行任何进一步分块,或者如果您想自定义任何额外分块,可以将RAG块放入自定义内容文档中。
可引用与不可引用内容
- 文档
source
内容中的文本可以被引用。 title
和context
是可选字段,将传递给模型但不用于引用内容。title
的长度有限,因此您可能会发现context
字段对于存储任何文档元数据(如文本或字符串化的json)很有用。
引用索引
- 文档索引是从请求中所有文档内容块列表(跨所有消息)从0开始索引的。
- 字符索引是从0开始索引,结束索引是排他的。
- 页码是从1开始索引,结束页码是排他的。
- 内容块索引是从自定义内容文档中提供的
content
列表中从0开始索引,结束索引是排他的。
令牌成本
- 启用引用会因系统提示添加和文档分块而导致输入令牌略微增加。
- 然而,引用功能对输出令牌非常高效。在底层,模型以标准化格式输出引用,然后解析为引用文本和文档位置索引。
cited_text
字段是为了方便而提供的,不计入输出令牌。 - 在后续对话轮次中传递回来的
cited_text
也不计入输入令牌。
功能兼容性
引用功能与其他API功能一起工作,包括提示缓存、令牌计数和批处理。
将提示缓存与引用一起使用
引用和提示缓存可以有效地一起使用。
响应中生成的引用块不能直接缓存,但它们引用的源文档可以缓存。为了优化性能,将cache_control
应用于顶级文档内容块。
在此示例中:
- 文档内容使用文档块上的
cache_control
进行缓存 - 在文档上启用了引用
- Claude可以生成带有引用的响应,同时受益于缓存的文档内容
- 使用相同文档的后续请求将受益于缓存的内容
文档类型
选择文档类型
我们支持三种用于引用的文档类型。文档可以直接在消息中提供(base64、文本或URL)或通过Files API上传并通过file_id
引用:
类型 | 最适合 | 分块 | 引用格式 |
---|---|---|---|
纯文本 | 简单文本文档、散文 | 句子 | 字符索引(从0开始索引) |
包含文本内容的PDF文件 | 句子 | 页码(从1开始索引) | |
自定义内容 | 列表、转录、特殊格式、更精细的引用 | 无额外分块 | 块索引(从0开始索引) |
纯文本文档
纯文本文档会自动分成句子。您可以内联提供它们或通过其file_id
引用:
PDF文档
PDF文档可以作为base64编码数据提供或通过file_id
提供。PDF文本被提取并分成句子。由于尚不支持图像引用,作为文档扫描的PDF如果不包含可提取的文本将无法引用。
自定义内容文档
自定义内容文档让您控制引用粒度。不进行额外分块,根据提供的内容块向模型提供块。
响应结构
启用引用时,响应包括带有引用的多个文本块:
流式传输支持
对于流式响应,我们添加了一个citations_delta
类型,其中包含要添加到当前text
内容块的citations
列表中的单个引用。