未分類

Anthropic Claude API 入門ガイド|Python で始める LLM アプリ開発

更新 AI Beat編集部

Anthropic Claude API 入門ガイド Python で始める LLM アプリ開発
目次
  1. Claude API とは
  2. Anthropic と OpenAI の違い
  3. API の主な用途
  4. API キー取得手順
  5. API キーの安全な管理
  6. Python SDK インストール
  7. インストール手順
  8. 動作確認
  9. 最初の API 呼び出し
  10. シンプルなテキスト生成
  11. システムプロンプトとマルチターン会話
  12. レスポンスの構造を理解する
  13. 主要モデルの選択(Sonnet / Opus / Haiku)
  14. モデル選択の実践的な判断基準
  15. モデル ID の指定方法
  16. Tool Use(Function Calling)
  17. ツールの定義とリクエスト
  18. ツール呼び出しの完全フロー
  19. プロンプトキャッシング活用
  20. キャッシュの実装方法
  21. キャッシュが効果的な場面
  22. コスト管理・課金
  23. トークン数の見積もりと使用量監視
  24. コスト削減の 5 つのアプローチ
  25. OpenAI API との比較
  26. コードの書き方の違い
  27. 機能・特性の比較表
  28. よくある質問(FAQ)
  29. Q. Claude API の無料枠はありますか?
  30. Q. 日本語のプロンプトでも精度は高いですか?
  31. Q. OpenAI API からの移行は難しいですか?
  32. Q. ストリーミング(逐次出力)は使えますか?
  33. Q. Tool Use は複数のツールを同時に呼び出せますか?
  34. Q. rate limit エラーが出たらどうすればいいですか?
  35. まとめ

AI Beat(エーアイビート)編集部です。

「Claude を API 経由で使いたいが、どこから手をつければいいのかわからない」——この記事を開いたあなたは、おそらくそんな状況にいると思います。Anthropic の Claude API は、GPT-4 系と並ぶ高性能 LLM として開発者の間で注目度が急上昇しています。

編集部でも実際に Claude API を Python から呼び出し、チャットボット・文書要約・Tool Use を試してきました。結論として、Python SDK の整備が進んでおり、OpenAI SDK の経験があれば 1 時間以内に動かせるという印象です。

この記事では、以下の内容をコードサンプル付きで解説します。

  • API キー取得〜最初のリクエストまでの最短ルート
  • Sonnet / Opus / Haiku のモデル選択基準
  • Tool Use・プロンプトキャッシングの実装方法
  • コスト計算と上限設定のベストプラクティス
  • OpenAI API との比較と移行ポイント

2026 年 4 月時点の情報です。API 仕様・料金はアップデートにより変更される場合があります。最新情報はAnthropic 公式ドキュメントをご確認ください。

Claude API とは

Claude API の概要図

Claude API とは、Anthropic が提供する大規模言語モデル(LLM)を HTTP リクエストで呼び出せる開発者向け API です。

Anthropic は、OpenAI 元メンバーが 2021 年に創業した AI 安全性研究企業です。「Constitutional AI(憲法 AI)」と呼ばれる独自の学習手法を採用しており、モデルの安全性・信頼性・長文処理能力に強みがあります。

Claude API の主な特徴を整理すると、次のようになります。

  • 最大 200K トークンのコンテキストウィンドウ(Claude 3.5 Sonnet 以降。長文 PDF・コードベース全体を一度に処理可能)
  • マルチモーダル対応(テキスト・画像の入力に対応)
  • Tool Use(Function Calling)(外部 API・データベース連携)
  • Prompt Caching(繰り返しの長文プロンプトをキャッシュしてコスト削減)
  • Batch API(大量リクエストを 50% 割引で非同期処理)

Anthropic と OpenAI の違い

Claude API を語る上で欠かせないのが、OpenAI との位置付けの違いです。Anthropic は「AI の安全性を最優先にした開発」を明示的に掲げており、モデルの振る舞いがより保守的な傾向があります。一方、長文を扱う業務アプリや、正確さが求められるコード生成では Claude を採用する企業が増えています。

編集部で実際に同じプロンプトを Claude Sonnet と GPT-4o に投げたとき、Claude の方が指示の細部まで忠実に守る印象を受けました。特に「〇〇は含めないこと」という否定的な制約の遵守率が高い点は、プロダクト組み込みで使う場合に大きなメリットです。

API の主な用途

Claude API が活用されている主な場面は次の通りです。

  • チャットボット・カスタマーサポート自動化
  • 文書要約・レポート生成
  • コードレビュー・補完
  • 多言語翻訳・コンテンツ生成
  • RAG(Retrieval-Augmented Generation)システムの LLM コンポーネント

API キー取得手順

API キー取得手順のフロー

Claude API を使うには、Anthropic コンソールでのアカウント登録と API キーの発行が必要です。手順は 5 ステップです。

  1. Anthropic コンソールにアクセス。console.anthropic.com を開く
  2. アカウント作成。メールアドレスでサインアップ(Google アカウント連携も可)
  3. 電話番号認証。SMS 認証を完了させる
  4. クレジット購入またはフリートライアル確認。新規登録時は一定のフリートライアルクレジットが付与される(金額は変動するため公式サイト参照)
  5. API Keys ページから新規キーを作成。Settings → API Keys → Create Key

発行されたキーは一度しか表示されないため、すぐにパスワードマネージャーや `.env` ファイルに保存してください。

API キーの安全な管理

API キーをコードに直書きすると、GitHub 等への誤プッシュで漏洩するリスクがあります。Python プロジェクトでは以下の方法で管理します。

# .env ファイル(プロジェクトルートに作成、.gitignore に追加)
ANTHROPIC_API_KEY=sk-ant-api03-xxxxxxxx
# Python コードでの読み込み
import os
from dotenv import load_dotenv

load_dotenv()
api_key = os.environ.get("ANTHROPIC_API_KEY")

.gitignore への追加も必ず行ってください。

# .gitignore
.env
.env.local
*.env
  • API キーは発行後すぐに保存する(再表示不可)
  • コードへの直書きは禁止、.env ファイルで管理する
  • .gitignore に .env を追加してリポジトリに含めない

Python SDK インストール

Python SDK インストール手順

Anthropic は公式 Python SDK を提供しています。GitHub(anthropics/anthropic-sdk-python)でソースコードが公開されています。

インストール手順

pip install anthropic

仮想環境を使う場合(推奨)は、以下の手順でセットアップします。

# 仮想環境の作成と有効化
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate

# SDK インストール
pip install anthropic python-dotenv

動作確認

import anthropic
print(anthropic.__version__)  # 例: 0.26.0

SDK は定期的にアップデートされます。pip install --upgrade anthropic で最新版に更新できます。

項目内容
最低 Python バージョンPython 3.8 以上
パッケージ名anthropic
依存パッケージhttpx, pydantic など(自動インストール)
非同期対応AsyncAnthropic クラスで asyncio 対応

最初の API 呼び出し

最初の API 呼び出し手順

SDK のインストールが完了したら、最初のリクエストを送ってみましょう。

シンプルなテキスト生成

import anthropic

client = anthropic.Anthropic()
# ANTHROPIC_API_KEY 環境変数が自動で読まれる

message = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Python でフィボナッチ数列を生成する関数を書いてください。"}
    ]
)

print(message.content[0].text)

システムプロンプトとマルチターン会話

ロールや振る舞いを指定する場合は system パラメータを追加します。会話履歴を保持する場合は messages リストに追加していきます。

message = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=2048,
    system="あなたはシニアバックエンドエンジニアです。コードには必ずコメントを付けてください。",
    messages=[
        {"role": "user", "content": "FastAPI で JWT 認証を実装する方法を教えてください。"}
    ]
)
conversation = []

def chat(user_input: str) -> str:
    conversation.append({"role": "user", "content": user_input})

    response = client.messages.create(
        model="claude-sonnet-4-5",
        max_tokens=1024,
        messages=conversation
    )

    assistant_message = response.content[0].text
    conversation.append({"role": "assistant", "content": assistant_message})
    return assistant_message

# 使用例
reply1 = chat("Python の async/await を簡単に説明してください。")
reply2 = chat("それを使った HTTP リクエストの例を見せてください。")

レスポンスの構造を理解する

response = client.messages.create(...)

print(response.id)              # リクエスト ID
print(response.model)           # 使用モデル
print(response.content[0].text) # 生成テキスト
print(response.usage.input_tokens)  # 入力トークン数
print(response.usage.output_tokens) # 出力トークン数
print(response.stop_reason)     # 終了理由 (end_turn, max_tokens, etc.)
? ワンポイント max_tokens は Anthropic API では必須パラメータです。OpenAI API からの移行時に忘れやすいポイントなので注意してください。指定しないと ValidationError が発生します。

主要モデルの選択(Sonnet / Opus / Haiku)

Claude モデル比較:Opus/Sonnet/Haiku

Anthropic は 3 ティアのモデルラインナップを提供しています。2026 年 4 月時点の主要モデルは次の通りです。

モデル特徴入力料金(1M トークン)向いている用途
Claude Opus 4最高精度・長文思考$15複雑な推論、戦略立案、高品質コード生成
Claude Sonnet 4精度とコストのバランス$3一般的なチャット、コード補完、文書処理
Claude Haiku 3.5高速・低コスト$0.80分類、要約、シンプルな Q&A

※ 料金は変更される場合があります。最新の価格はAnthropic 公式料金ページをご確認ください。

モデル選択の実践的な判断基準

編集部でいくつかの用途を試した結果、以下の判断軸が使いやすいと感じています。

  • 精度が最優先の場合(提案書生成、法令解釈、複雑なコード設計): Opus
  • コストと品質のバランスが必要な場合(日常的な API 呼び出し、プロトタイプ開発): Sonnet
  • 大量処理・リアルタイム性が必要な場合(ストリーミングチャット、バッチ分類): Haiku

最初は Sonnet でプロトタイプを作り、品質に不満があれば Opus に切り替え、コスト最適化フェーズで Haiku に移行する流れが現実的です。

モデル ID の指定方法

API リクエストでは完全なモデル ID を指定します。エイリアス(claude-sonnet-latest 等)も利用可能ですが、本番環境では特定バージョンの ID を使うことでバージョンアップによる挙動変化を防げます。

Tool Use(Function Calling)

Tool Use(Function Calling)の仕組み

Tool Use は、LLM が外部の関数や API を呼び出せる仕組みです。単なるテキスト生成を超えて、データベース検索・計算・外部サービス連携が可能になります。

ツールの定義とリクエスト

import anthropic
import json

client = anthropic.Anthropic()

# ツールの定義
tools = [
    {
        "name": "get_weather",
        "description": "指定した都市の現在の天気を取得します",
        "input_schema": {
            "type": "object",
            "properties": {
                "city": {
                    "type": "string",
                    "description": "都市名(例: Tokyo, Osaka)"
                },
                "unit": {
                    "type": "string",
                    "enum": ["celsius", "fahrenheit"],
                    "description": "温度の単位"
                }
            },
            "required": ["city"]
        }
    }
]

# ツールを使ったリクエスト
response = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    tools=tools,
    messages=[
        {"role": "user", "content": "東京の今の天気を教えてください。"}
    ]
)

# ツール呼び出しの確認
if response.stop_reason == "tool_use":
    for block in response.content:
        if block.type == "tool_use":
            print(f"ツール: {block.name}")
            print(f"引数: {json.dumps(block.input, ensure_ascii=False)}")

ツール呼び出しの完全フロー

実際のプロダクトでは、ツール呼び出し → 実行 → 結果を返す → 最終回答生成という 4 ステップを実装します。

def execute_tool(tool_name: str, tool_input: dict) -> str:
    """ツールの実際の実行ロジック"""
    if tool_name == "get_weather":
        city = tool_input["city"]
        # 実際には天気 API を呼ぶ
        return json.dumps({"city": city, "temperature": 22, "condition": "晴れ"})
    return "{}"

def run_with_tools(user_message: str) -> str:
    messages = [{"role": "user", "content": user_message}]

    while True:
        response = client.messages.create(
            model="claude-sonnet-4-5",
            max_tokens=1024,
            tools=tools,
            messages=messages
        )

        if response.stop_reason == "end_turn":
            return response.content[0].text

        if response.stop_reason == "tool_use":
            messages.append({"role": "assistant", "content": response.content})

            tool_results = []
            for block in response.content:
                if block.type == "tool_use":
                    result = execute_tool(block.name, block.input)
                    tool_results.append({
                        "type": "tool_result",
                        "tool_use_id": block.id,
                        "content": result
                    })

            messages.append({"role": "user", "content": tool_results})

Tool Use は、Claude の MCP(Model Context Protocol)と組み合わせることで、さらに強力なエージェントを構築できます。

プロンプトキャッシング活用

プロンプトキャッシングの効果

プロンプトキャッシングは、毎回のリクエストで同じ長文プロンプト(システムプロンプト、ドキュメント全文など)を再処理するコストを削減する機能です。初回のみフルレートで処理され、2 回目以降はキャッシュヒットで最大 90% 割引になります。

キャッシュの実装方法

response = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": "あなたはシニアエンジニアです。以下はプロジェクトの全コードベースです。\n\n" + long_codebase,
            "cache_control": {"type": "ephemeral"}  # キャッシュを有効化
        }
    ],
    messages=[
        {"role": "user", "content": "このコードのバグを探してください。"}
    ]
)

# キャッシュヒット数を確認
print(response.usage.cache_read_input_tokens)   # キャッシュから読んだトークン
print(response.usage.cache_creation_input_tokens)  # キャッシュ作成に使ったトークン

キャッシュが効果的な場面

ユースケースキャッシュ対象期待効果
コードレビューボットコードベース全体(数万行)繰り返し質問のコスト 90% 削減
ドキュメント Q&Aマニュアル・仕様書全文複数ユーザーからの質問に対してキャッシュが共有
長い Few-Shot プロンプト例示セクション例示が毎回課金されない

キャッシュの有効期間は最大 5 分です。詳細はAnthropic のプロンプトキャッシング公式ドキュメントを参照してください。

コスト管理・課金

Claude API コスト管理方法

Claude API の課金はトークン使用量ベースです。プロダクトに組み込む前に、コスト計算と上限設定を理解しておくことが重要です。

トークン数の見積もりと使用量監視

# トークン数を事前にカウント(API キーを使わない)
response = client.messages.count_tokens(
    model="claude-sonnet-4-5",
    system="あなたは有能なアシスタントです。",
    messages=[
        {"role": "user", "content": "こんにちは、今日の天気を教えてください。"}
    ]
)
print(f"入力トークン数: {response.input_tokens}")
import logging

logger = logging.getLogger(__name__)

def tracked_request(client, **kwargs):
    """トークン使用量を記録するラッパー"""
    response = client.messages.create(**kwargs)

    logger.info(
        "API request completed",
        extra={
            "model": kwargs.get("model"),
            "input_tokens": response.usage.input_tokens,
            "output_tokens": response.usage.output_tokens,
            "total_tokens": response.usage.input_tokens + response.usage.output_tokens,
        }
    )
    return response

コスト削減の 5 つのアプローチ

  1. max_tokens を適切に設定する。デフォルトのまま使うと必要以上のトークンを消費することがある
  2. プロンプトキャッシングを活用する。同じシステムプロンプトを繰り返す場面で効果が大きい
  3. Batch API を使う。非同期でよい大量処理は 50% 割引になる
  4. Haiku で十分な用途はモデルを切り替える。分類・フィルタリングは Haiku で十分なことが多い
  5. プロンプトを短縮する。冗長な説明を削るだけで入力トークンを 30% 削減できる場合がある
? ワンポイント Anthropic コンソールの「Usage」ページでは、日別・モデル別のトークン使用量と推定コストを確認できます。月次予算に対してアラートを設定する機能も用意されています。本番導入前に必ず上限アラートを設定しましょう。

OpenAI API との比較

Claude API vs OpenAI API 比較

Python でどちらかの API を選ぶ場面は多いため、主要な観点で比較します。

コードの書き方の違い

インターフェースは非常に似ていますが、いくつか差異があります。

# OpenAI API(参考)
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "こんにちは"}]
)
print(response.choices[0].message.content)
# Anthropic API
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,  # 必須パラメータ(OpenAI と違う点)
    messages=[{"role": "user", "content": "こんにちは"}]
)
print(response.content[0].text)  # アクセス方法も異なる

機能・特性の比較表

項目Claude API(Anthropic)OpenAI API
最大コンテキスト長200K トークン(Sonnet/Opus)128K トークン(GPT-4o)
プロンプトキャッシングあり(90% 割引)あり(Prompt Caching、50% 割引)
Batch APIあり(50% 割引)あり
Function CallingTool UseFunction Calling / Tools
ファインチューニング対応(Haiku)GPT-4o mini 等で対応
画像入力対応(Vision)対応(GPT-4o Vision)
日本語品質指示遵守率が高い事実性が高い

どちらを選ぶかは用途次第です。長文処理・指示の厳密な遵守が必要なら Claude、エコシステムの広さや画像生成との統合が必要なら OpenAI が有利な場面が多いです。ChatGPT のモデル比較も参考にしてください。

Claude Codeのような開発者ツールとの統合を重視するなら、Claude API の選択が自然な流れになります。

よくある質問(FAQ)

Q. Claude API の無料枠はありますか?

A. 新規登録時に一定のフリートライアルクレジットが付与されますが、その後は従量課金になります。クレジットが切れる前にコンソールで使用量を確認しながら進めることをおすすめします。具体的なクレジット額は変動するため、Anthropic コンソールの最新情報をご確認ください。

Q. 日本語のプロンプトでも精度は高いですか?

A. はい、Claude は日本語品質が高いモデルの一つです。特に長い日本語文書の要約・分析、日本語での指示遵守において高い精度を発揮します。英語プロンプトと比べて若干トークン数が多くなる点は意識しておくとよいでしょう。

Q. OpenAI API からの移行は難しいですか?

A. API の構造が似ているため、比較的スムーズに移行できます。主な変更点は、client.chat.completions.create → client.messages.create、レスポンスアクセスの変更、max_tokens が必須になる点です。ChatGPT のモデル比較記事も参考にしてください。

Q. ストリーミング(逐次出力)は使えますか?

A. 使えます。client.messages.stream() を使うとトークンが生成されるたびに逐次取得できます。

with client.messages.stream(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "長い物語を書いてください。"}]
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

Q. Tool Use は複数のツールを同時に呼び出せますか?

A. はい、Claude は 1 回の応答で複数のツールを並列に呼び出すことができます(Parallel Tool Use)。例えば「東京と大阪の天気を同時に取得する」といった用途で活用できます。

Q. rate limit エラーが出たらどうすればいいですか?

A. RateLimitError が発生した場合は、指数バックオフで再試行するのが一般的です。Anthropic SDK には max_retries パラメータがあり、anthropic.Anthropic(max_retries=3) で自動リトライを設定できます。本番環境では必ず実装してください。

まとめ

Claude API 入門まとめ

この記事では、Claude API を Python で使い始めるための全体像を解説しました。

  • API キーは Anthropic コンソールで発行し、.env ファイルで安全に管理する
  • Python SDK は pip install anthropic で即座に使い始められる
  • モデルは Sonnet(バランス)/ Opus(高精度)/ Haiku(高速・低コスト)の 3 ティアを用途に応じて選ぶ
  • Tool Use でデータベース・外部 API と連携したエージェントが作れる
  • プロンプトキャッシングで繰り返しの長文プロンプトのコストを最大 90% 削減できる

まずは Sonnet でシンプルなチャットを動かし、実際のプロダクト要件に合わせて段階的に機能を追加していくのがおすすめです。Claude MCP やDify のような LLM アプリ開発プラットフォームと組み合わせることで、より本格的なシステム構築もできます。