【初心者でもわかる!】Claude APIの新機能「Citations」を超徹底解説
「Citations(引用機能)」は、AIアシスタントであるClaudeが文章の元になった情報源を明確に示すための新機能です。これを使うことで、回答がどの部分の文書に基づいているのかを特定できるようになり、情報の正確性を自分で簡単に確認できるようになります。
この記事では、文系の大学生やエンジニアではない方にも分かるよう、できるだけ噛み砕いてCitationsの仕組み・使い方・メリットなどを「超徹底的に」詳しく解説していきます。
1. ClaudeのCitations(引用機能)ってなに?
Claudeは、ユーザーからの質問に答える際、「どの資料の、どの部分を元に回答したのか」を示すことができるAIアシスタントです。従来は「○○ページの△△行目にある情報によると…」のように手作業や工夫が必要でしたが、Citations機能を使うと、その「参照箇所」をAIが自動的にまとめて返してくれます。
1.1 なぜ引用機能が大事なの?
信頼性の向上
回答の根拠となる情報源が具体的にわかるため、「本当にこの回答は合っているのかな?」という不安を軽減できます。検証の手間を削減
出典がはっきり分かるため、必要に応じてオリジナルの文書に直接あたって確認することができます。
例:「大学のレポートで引用する際、どの文献のどのページを使えばいいかがすぐにわかる」コストの削減
Claudeが内部で引用文章を扱う際、引用元のテキストが「回答のトークン数」に含まれにくい(後述)メリットがあります。AIのAPIでは「やりとりしたテキストのトークン数」に応じて料金が発生することが多いため、引用機能を使ったほうが結果的に安く済むことがあります。
2. 具体的にどのように使うの?
Citations機能を利用するには、少しだけAPIの操作が必要です。ですが、ここでは「プログラミングが得意ではない人」でもざっくり全体像が掴めるように、ステップバイステップで説明します。
2.1 APIとは?
「API(エーピーアイ)」という言葉が出てきますが、難しく考える必要はありません。「アプリやサービス同士がやりとりをするための入り口・やり方」とイメージしてください。
Claudeの場合、いわゆる「チャットボット」にメッセージを送って回答を受け取る仕組みが「Messages API」という形で提供されており、これを使ってCitations機能も呼び出せるようになっています。
2.2 実際のリクエスト例
下記のようなリクエストをサーバーに送る(多くの場合はcURLやPythonなどを利用)と、Citationsを含んだ回答を受け取れます。
例:Shell(ターミナル)の場合
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-5-sonnet-20241022",
"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?"
}
]
}
]
}'
ここでは、
「The grass is green. The sky is blue.」という文章を「Document」として提供
「What color is the grass and sky?(草と空の色は何ですか?)」という質問を投げかける
"citations": {"enabled": true} で引用機能を有効にする
このリクエストを送ると、Claudeが引用を含んだ回答を返してきます。
3. Promptベースのアプローチと何が違うの?
引用や出典を提示してくれるAIアシスタントの仕組みは、従来も**「プロンプトベースのアプローチ」**と呼ばれる手法で実装されることが多くありました。たとえば「回答するときには必ず根拠文も書いてね」という指示をAIに与える、というやり方です。
しかし、Citations機能には以下のような利点があります。
コスト削減
Promptベースの場合、「引用箇所の全文」を回答として常に表示させると、その分トークン数がかかってしまう。
Citationsの場合、引用箇所(cited_text)が「出力トークン」にカウントされにくい仕組みがあるため、コストを抑えられる可能性があります。
信頼性の向上
Citationsは、回答をサポートする「具体的な文の位置情報(どの文字位置からどこまで)」や「ページ番号」を返します。
これにより、「本当にそこに書いてある?」と簡単に検証でき、誤引用を減らせるというメリットがあります。
引用の品質向上
独自の実験(evals)によると、Citations機能のほうがより正確に「関連性の高い引用文」を選んでくれる可能性が高いという結果が得られているそうです。
4. Citationsのしくみ:具体的な流れ
4.1 ステップ1:ドキュメントを用意し、Citationsを有効化する
ドキュメントを用意
Claudeに読ませたい文書(PDFやテキストなど)をAPIリクエストに含めます。citations.enabled=true を設定
各ドキュメントに対して「引用を有効にする」設定を行います。注意点:すべてのドキュメントで一斉に有効にする必要があり、片方だけ「true」にしてもう片方は「false」にする、という使い分けはできません。
4.2 ステップ2:ドキュメントの内容が「チャンク」に分割される
自動チャンク分割(Plain text / PDF)
Plain textの場合は文ごとに、PDFの場合はページからテキストを抽出し、やはり文ごとに分割されます。これを「チャンク(断片)」と呼びます。PDFでは現在、画像の内容は引用不可(OCRで文字が抽出できない画像は対象外)
Plain textは自動的に文章単位で分割
カスタムコンテンツ(Custom content)
独自にチャンクを区切りたい場合、contentの配列としてブロックを定義し、それを「まるごとひとまとまりの情報」として扱えます。こうすると自動分割はされません。
4.3 ステップ3:Claudeが引用を含む回答を生成
ユーザーの質問に答える際、Claudeが「該当文書のどの部分を参考にしたか」をメタデータ付きで返してくれます。たとえばPlain textの場合、
type: "char_location"
document_index: 0(どのドキュメントか、0番目から数える)
start_char_index: 0, end_char_index: 20(文書中の何文字目から何文字目までか)
といった情報が返り、さらに引用テキストの内容 (cited_text) も示されます。
引用の表現形式
PDFの場合: ページ番号(1ページ目を1として数える)で示される
Plain textの場合: 文字位置(0文字目から数える)
Custom contentの場合: ブロック番号で示される
5. 実際のレスポンス例
Citationsを有効にして質問をすると、次のように回答と引用情報が返ってきます。イメージとしては以下のJSON構造です。
{
"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
}]
}
]
}
"text"の中に回答が記述され、
"citations"キーの中で「どのドキュメントのどの範囲を引用したのか」を示します。
5.1 Streaming Support(ストリーミングサポート)
長めの回答を分割して配信する機能(ストリーミング)がある場合も、Citationsは「citations_delta」という形で部分的に追記されながら受け取れます。ここは実装上のお話なので、詳しくはエンジニアに任せてOKですが、「回答がリアルタイムに流れてきても引用情報をきちんと付けられるよ」ということだと理解してください。
6. どんな場面で役立つの?
大学のレポート作成
参考文献が多いとき、AIに要約や論述を手伝ってもらう場合でも、「根拠とした文献(ページ番号や箇所)」をすぐにチェックできる。引用漏れや誤引用を防ぎやすい。ビジネス文書のレビュー
社内文書や取扱説明書など、膨大なPDFをAIで参照させるときも、Citationsのおかげで「どのPDFの何ページか」がすぐ分かり、監査・レビューが容易になる。法務・契約書レビュー
長大な契約書を読ませて「この条文の内容は?」と問いかけると、「○○ページの○~○行目にこう書かれています」と返してくれるため、裏付けの確認に役立つ。
7. 追加で知っておくと便利なポイント
7.1 自動チャンク分割 vs カスタムコンテンツ
自動チャンク分割
Plain textやPDFをそのまま渡すと、AIが「文」単位に細かく区切って引用できるようにする。文章の途中で細かくチェックしたい場合に便利。
カスタムコンテンツ
あらかじめ自分で「ここからここまでは1ブロック」「ここからここまでは2ブロック」と決めて渡したい場合に使う。AI側では自動分割はせず、与えられたブロック単位で引用が生成される。箇条書きや、箇所ごとに意味が違う文章をまとめて管理したいときに便利。
7.2 title/contextは引用対象にはならない
titleやcontextは「補足情報」としてClaudeに伝えるフィールドです。
これらは「参考にはされる」が「引用の対象にはならない」点に注意しましょう。
例:context には「2023年版の公式データに基づく」などのメタデータを記載しておける。
7.3 トークンコストについて
入力トークンがわずかに増える
Citationsを有効にすると、背後で「システムプロンプトの追加」や「文章のチャンク化」によって入力するテキストが少し増えます。出力トークンを節約しやすい
引用の文面自体は、モデルが特別な形式で返してくれるため、多くの場合、従来のように「引用文ごとすべて回答文にカウントされる」よりもお得になることがあります。
7.4 対応モデルとその他の機能
Citations対応モデル
2025年1月時点では、主に「Claude 3.5 Sonnet (new)」や「Claude 3.5 Haiku」が対応。他の機能と併用も可
たとえば「プロンプトキャッシュ」や「バッチ処理」など、ほかのAPI機能とも問題なく使えます。
8. 実際に使うときの注意点
すべてのドキュメントでcitations.enabled=trueにする
一部だけtrueにしてほかをfalseにすることはできません。画像ベースのPDFは引用不可
テキスト抽出できるPDFであればOKですが、スキャン画像などは現状サポート外。引用の確認
実際に引用先が間違っていないかどうか、最終的には人間の目で検証するのがベスト。AIは完璧ではないので注意しましょう。
9. まとめ
ClaudeのCitations機能は「AIがどの情報源を参照して回答したのか」が分かりやすくなる画期的な仕組みです。文系の大学生であっても、以下のようなメリットは十分に活用できるはずです。
回答の根拠が明確
レポートの出典確認や参考文献の特定に役立つ。コスト削減の可能性
引用文をアウトプットし続ける手間や料金が減る。誤情報のチェックが簡単
「この情報、本当はどこに書いてあるの?」がすぐ分かるため、信頼性向上。
もし「詳しい導入やAPIの実装で手こずりそう…」と感じても、技術的には比較的シンプルな手順です。一度仕組みをセットアップすれば、あとはドキュメントを渡して質問するだけで、引用つきの回答が得られます。
興味があれば、先述のcURL例やPython用サンプルコードなどを使って試してみてください。Claudeが**“どの文脈を元に答えたのか”**を見える化してくれる感覚は、実際に体験するととても便利ですよ!
最後に
Citations機能は、AIからの回答をただ鵜呑みにするのではなく、「根拠をたどる」という良い習慣をサポートしてくれます。レポート作成や論文執筆、契約書レビューなどさまざまなシーンで活用できるでしょう。
引用:https://docs.anthropic.com/en/docs/build-with-claude/citations