Claude 能够在回答关于文档的问题时提供详细的引用,帮助您追踪和验证回答中的信息来源。

引用功能目前在 Claude 3.7 Sonnet、Claude 3.5 Sonnet(新版)和 3.5 Haiku 上可用。

使用 Claude 3.7 Sonnet 的引用功能

与其他 Claude 模型相比,如果没有用户更明确的指示,Claude 3.7 Sonnet 可能不太倾向于进行引用。在使用 Claude 3.7 Sonnet 的引用功能时,我们建议在 user 回合中包含额外的指示,例如 "使用引用来支持你的回答。"

我们还观察到,当要求模型构建特定格式的回答时,除非明确要求在该格式中使用引用,否则它不太可能使用引用。例如,如果要求模型在回答中使用 标签,你应该添加类似”即使在 中也要始终使用引用。“的指示。

请使用此表单分享您对引用功能的反馈和建议。

以下是如何在 Messages API 中使用引用的示例:

curl https://api.anthropic.com/v1/messages \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "claude-3-7-sonnet-20250219",
    "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?"
          }
        ]
      }
    ]
  }'

与基于提示的方法比较

与基于提示的引用解决方案相比,引用功能具有以下优势:

  • 成本节省: 如果您的基于提示的方法要求 Claude 输出直接引用,由于 cited_text 不计入输出令牌数,您可能会看到成本节省。
  • 更好的引用可靠性: 因为我们将引用解析为上述相应的响应格式并提取 cited_text,引用保证包含对所提供文档的有效指向。
  • 改进的引用质量: 在我们的评估中,与纯粹基于提示的方法相比,引用功能在从文档中引用最相关的引文方面明显更有效。

引用功能的工作原理

按照以下步骤将引用功能与 Claude 集成:

1

提供文档并启用引用

  • 以任何支持的格式包含文档:PDF纯文本自定义内容文档
  • 在每个文档上设置 citations.enabled=true。目前,必须在请求中的所有文档上启用或禁用引用功能。
  • 请注意,目前仅支持文本引用,尚不支持图像引用。
2

文档处理

  • 文档内容被”分块”以定义可能引用的最小粒度。例如,句子分块将允许 Claude 引用单个句子或将多个连续句子链接在一起以引用段落(或更长的内容)!
    • 对于 PDF: 按照 PDF 支持 中的描述提取文本,并将内容分成句子。目前不支持从 PDF 中引用图像。
    • 对于纯文本文档: 内容被分成可以引用的句子。
    • 对于自定义内容文档: 您提供的内容块将按原样使用,不进行进一步分块。
3

Claude 提供带引用的回答

  • 回答现在可能包含多个文本块,每个文本块可以包含 Claude 做出的声明和支持该声明的引用列表。
  • 引用指向源文档中的特定位置。这些引用的格式取决于被引用文档的类型。
    • 对于 PDF: 引用将包含页码范围(从 1 开始)。
    • 对于纯文本文档: 引用将包含字符索引范围(从 0 开始)。
    • 对于自定义内容文档: 引用将包含内容块索引范围(从 0 开始),对应于原始提供的内容列表。
  • 提供文档索引以指示参考源,根据原始请求中所有文档的列表从 0 开始编号。

自动分块与自定义内容

默认情况下,纯文本和 PDF 文档会自动被分成句子。如果您需要更多控制引用粒度(例如,对于项目符号或转录),请改用自定义内容文档。有关详细信息,请参阅文档类型

例如,如果您希望 Claude 能够引用 RAG 块中的特定句子,您应该将每个 RAG 块放入一个纯文本文档中。否则,如果您不想进行任何进一步的分块,或者如果您想自定义任何额外的分块,您可以将 RAG 块放入自定义内容文档中。

可引用与不可引用的内容

  • 可以引用文档 source 内容中的文本。
  • titlecontext 是可选字段,将传递给模型但不用于引用内容。
  • title 的长度有限,因此您可能会发现 context 字段在存储任何文档元数据(作为文本或字符串化的 json)时很有用。

引用索引

  • 文档索引从请求中所有文档内容块的列表(跨所有消息)从 0 开始编号。
  • 字符索引从 0 开始,结束索引是排他的。
  • 页码从 1 开始,结束页码是排他的。
  • 内容块索引从自定义内容文档中提供的 content 列表中从 0 开始编号,结束索引是排他的。

令牌成本

  • 启用引用会因系统提示添加和文档分块而略微增加输入令牌。
  • 但是,引用功能在输出令牌方面非常高效。在底层,模型以标准格式输出引用,然后解析为引用文本和文档位置索引。提供 cited_text 字段是为了方便,不计入输出令牌。
  • 在后续对话轮次中传递时,cited_text 也不计入输入令牌。

功能兼容性

引用功能可以与其他 API 功能一起使用,包括提示缓存令牌计数批处理


文档类型

选择文档类型

我们支持三种引用的文档类型:

类型最适用于分块引用格式
纯文本简单文本文档、散文句子字符索引(从 0 开始)
PDF包含文本内容的 PDF 文件句子页码(从 1 开始)
自定义内容列表、转录、特殊格式、更细粒度的引用无额外分块块索引(从 0 开始)

纯文本文档

纯文本文档会自动被分成句子:

{
    "type": "document",
    "source": {
        "type": "text",
        "media_type": "text/plain",
        "data": "纯文本内容..."
    },
    "title": "文档标题", # 可选
    "context": "关于文档的上下文,不会被引用", # 可选
    "citations": {"enabled": True}
}

PDF 文档

PDF 文档以 base64 编码数据提供。PDF 文本被提取并分成句子。由于目前不支持图像引用,扫描文档的 PDF 如果不包含可提取的文本将无法被引用。

{
    "type": "document",
    "source": {
        "type": "base64",
        "media_type": "application/pdf",
        "data": base64_encoded_pdf_data
    },
    "title": "文档标题", # 可选
    "context": "关于文档的上下文,不会被引用", # 可选
    "citations": {"enabled": True}
}

自定义内容文档

自定义内容文档让您可以控制引用粒度。不进行额外分块,块按照提供的内容块提供给模型。

{
    "type": "document",
    "source": {
        "type": "content",
        "content": [
            {"type": "text", "text": "第一个块"},
            {"type": "text", "text": "第二个块"}
        ]
    },
    "title": "文档标题", # 可选
    "context": "关于文档的上下文,不会被引用", # 可选
    "citations": {"enabled": True}
}

响应结构

启用引用时,响应包含多个带有引用的文本块:

{
    "content": [
        {
            "type": "text",
            "text": "根据文档,"
        },
        {
            "type": "text",
            "text": "草是绿色的",
            "citations": [{
                "type": "char_location",
                "cited_text": "The grass is green.",
                "document_index": 0,
                "document_title": "示例文档",
                "start_char_index": 0,
                "end_char_index": 20
            }]
        },
        {
            "type": "text",
            "text": "而且"
        },
        {
            "type": "text",
            "text": "天空是蓝色的",
            "citations": [{
                "type": "char_location",
                "cited_text": "The sky is blue.",
                "document_index": 0,
                "document_title": "示例文档",
                "start_char_index": 20,
                "end_char_index": 36
            }]
        }
    ]
}

流式传输支持

对于流式响应,我们添加了 citations_delta 类型,其中包含要添加到当前 text 内容块的 citations 列表中的单个引用。

Was this page helpful?