Claudeは、文書に関する質問に回答する際に詳細な引用を提供することができ、回答における情報源の追跡と検証を支援します。

引用機能は現在、Claude 3.7 Sonnet、Claude 3.5 Sonnet(新)、および3.5 Haikuで利用可能です。

Claude 3.7 Sonnetでの引用

Claude 3.7 Sonnetは、ユーザーからのより明示的な指示がない場合、他のClaudeモデルと比較して引用を行う可能性が低くなることがあります。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は1つの文を引用したり、複数の連続した文を連結してパラグラフ(またはそれ以上)を引用したりすることができます!
    • PDFの場合: テキストはPDFサポートで説明されているように抽出され、内容は文に分割されます。PDFからの画像の引用は現在サポートされていません。
    • プレーンテキスト文書の場合: 内容は引用可能な文に分割されます。
    • カスタムコンテンツ文書の場合: 提供されたコンテンツブロックがそのまま使用され、それ以上のチャンク分割は行われません。
3

Claudeが引用付きの回答を提供

  • 回答には、各テキストブロックがClaudeの主張とその主張を裏付ける引用のリストを含む複数のテキストブロックが含まれる場合があります。
  • 引用はソース文書内の特定の場所を参照します。これらの引用の形式は、引用元の文書の種類によって異なります。
    • PDFの場合: 引用にはページ番号の範囲(1から始まる)が含まれます。
    • プレーンテキスト文書の場合: 引用には文字インデックスの範囲(0から始まる)が含まれます。
    • カスタムコンテンツ文書の場合: 引用には、提供された元のコンテンツリストに対応するコンテンツブロックインデックスの範囲(0から始まる)が含まれます。
  • 文書インデックスは参照元を示すために提供され、元のリクエストのすべての文書のリストに従って0から始まります。

自動チャンク分割とカスタムコンテンツ

デフォルトでは、プレーンテキストとPDF文書は自動的に文に分割されます。引用の粒度をより細かく制御する必要がある場合(箇条書きや書き起こしなど)は、代わりにカスタムコンテンツ文書を使用してください。詳細については文書タイプを参照してください。

例えば、RAGチャンクから特定の文を引用できるようにしたい場合は、各RAGチャンクをプレーンテキスト文書に入れる必要があります。それ以外の場合、さらなるチャンク分割を行いたくない場合や、追加のチャンク分割をカスタマイズしたい場合は、RAGチャンクをカスタムコンテンツ文書に入れることができます。

引用可能なコンテンツと引用不可能なコンテンツ

  • 文書のsourceコンテンツ内のテキストは引用可能です。
  • titlecontextはオプションのフィールドで、モデルに渡されますが引用コンテンツとしては使用されません。
  • titleは長さが制限されているため、contextフィールドはテキストまたは文字列化されたJSONとして文書のメタデータを保存するのに便利です。

引用インデックス

  • 文書インデックスは、リクエスト内のすべての文書コンテンツブロックのリスト(すべてのメッセージにまたがる)から0から始まります。
  • 文字インデックスは0から始まり、終了インデックスは排他的です。
  • ページ番号は1から始まり、終了ページ番号は排他的です。
  • コンテンツブロックインデックスは、カスタムコンテンツ文書で提供されたcontentリストから0から始まり、終了インデックスは排他的です。

トークンコスト

  • 引用を有効にすると、システムプロンプトの追加と文書のチャンク分割により、入力トークンがわずかに増加します。
  • ただし、引用機能は出力トークンの使用が非常に効率的です。内部的には、モデルは標準化された形式で引用を出力し、それが引用テキストと文書位置インデックスに解析されます。cited_textフィールドは利便性のために提供され、出力トークンとしてカウントされません。
  • 後続の会話ターンで渡される場合、cited_textも入力トークンとしてカウントされません。

機能の互換性

引用は、プロンプトキャッシングトークンカウントバッチ処理を含む他のAPI機能と連携して動作します。


文書タイプ

文書タイプの選択

引用には3つの文書タイプをサポートしています:

タイプ最適な用途チャンク分割引用形式
プレーンテキストシンプルなテキスト文書、散文文字インデックス(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": "2番目のチャンク"}
        ]
    },
    "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": "Example Document",
                "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": "Example Document",
                "start_char_index": 20,
                "end_char_index": 36
            }]
        }
    ]
}

ストリーミングサポート

ストリーミングレスポンスでは、現在のtextコンテンツブロックのcitationsリストに追加される単一の引用を含むcitations_deltaタイプを追加しました。