開發 Claude 應用
引用
Claude 能夠在回答關於文件的問題時提供詳細的引用,幫助您追蹤和驗證回應中的信息來源。
引用功能目前可用於 Claude 3.7 Sonnet、Claude 3.5 Sonnet (新版)和 3.5 Haiku。
請使用此表單分享您對引用功能的反饋和建議。
以下是如何使用 Messages API 進行引用的示例:
與基於提示的方法比較
與基於提示的引用解決方案相比,引用功能具有以下優勢:
- 成本節省: 如果您的基於提示的方法要求 Claude 輸出直接引用,由於
cited_text
不計入輸出標記,您可能會看到成本節省。 - 更可靠的引用: 因為我們將引用解析為上述相應的回應格式並提取
cited_text
,引用保證包含對所提供文件的有效指針。 - 改進的引用質量: 在我們的評估中,我們發現引用功能比純粹基於提示的方法更有可能引用文件中最相關的引用。
引用功能如何工作
通過以下步驟將引用功能與 Claude 整合:
1
2
文件處理過程
- 文件內容被「分塊」以定義可能引用的最小粒度。例如,句子分塊將允許 Claude 引用單個句子或連接多個連續句子以引用一個段落(或更長內容)!
- 對於 PDF: 按照PDF 支持中描述的方式提取文本,內容被分成句子。目前不支持從 PDF 引用圖像。
- 對於純文本文件: 內容被分成可以引用的句子。
- 對於自定義內容文件: 您提供的內容塊按原樣使用,不進行進一步分塊。
3
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 功能一起工作,包括提示緩存、標記計數和批處理。
文件類型
選擇文件類型
我們支持三種文件類型進行引用:
類型 | 最適合 | 分塊 | 引用格式 |
---|---|---|---|
純文本 | 簡單文本文件、散文 | 句子 | 字符索引(從 0 開始) |
帶有文本內容的 PDF 文件 | 句子 | 頁碼(從 1 開始) | |
自定義內容 | 列表、文字記錄、特殊格式、更細粒度的引用 | 無額外分塊 | 塊索引(從 0 開始) |
純文本文件
純文本文件會自動分成句子:
PDF 文件
PDF 文件以 base64 編碼的數據提供。PDF 文本被提取並分成句子。由於目前不支持圖像引用,作為文檔掃描的 PDF 如果不包含可提取的文本將無法被引用。
自定義內容文件
自定義內容文件讓您控制引用粒度。不進行額外的分塊,塊按照提供的內容塊提供給模型。
回應結構
啟用引用後,回應包括帶有引用的多個文本塊:
流式支持
對於流式回應,我們添加了一個 citations_delta
類型,其中包含一個要添加到當前 text
內容塊的 citations
列表中的單個引用。