コンテンツにスキップ

Claude API基礎

Claude APIを使ってプログラムからClaudeを呼び出す方法を学びます。


セットアップ

APIキーの取得

  1. Anthropic Console でアカウント作成
  2. API Keys セクションでキーを生成
  3. 環境変数に設定:
export ANTHROPIC_API_KEY="sk-ant-..."

SDKのインストール

pip install anthropic
npm install @anthropic-ai/sdk

最初のAPI呼び出し

Messages API — 基本形

import anthropic

client = anthropic.Anthropic()  # ANTHROPIC_API_KEY環境変数を自動読み込み

message = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "日本の首都はどこですか?"}
    ]
)

print(message.content[0].text)
# => "日本の首都は東京です。"

レスポンス構造

{
  "id": "msg_01XFDUDYJgAACzvnptvVoYEL",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "日本の首都は東京です。"
    }
  ],
  "model": "claude-sonnet-4-20250514",
  "stop_reason": "end_turn",
  "usage": {
    "input_tokens": 15,
    "output_tokens": 12
  }
}

主要フィールド:

  • content — 応答の本体。テキスト以外にtool_useブロックも入る
  • stop_reasonend_turn(正常終了)、max_tokens(トークン上限)、tool_use(ツール呼び出し)
  • usage — トークン消費量。料金計算に使う

モデル一覧と選び方

モデル モデルID 特徴 用途
Opus 4 claude-opus-4-20250514 最高性能、深い推論 複雑な分析、コード生成
Sonnet 4 claude-sonnet-4-20250514 性能とコストのバランス 一般的な業務、チャット
Haiku 3.5 claude-haiku-4-5-20251001 高速・低コスト 分類、要約、大量処理

モデル選択の指針

迷ったら Sonnet から始める。性能が足りなければOpus、コスト重視ならHaikuに切り替える。


主要パラメータ

必須パラメータ

パラメータ 説明
model string 使用するモデルID
max_tokens int 生成する最大トークン数
messages array 会話履歴(rolecontentのペア)

よく使うオプション

message = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=2048,
    system="あなたはPythonの専門家です。簡潔に回答してください。",
    temperature=0.0,     # 0.0=決定的、1.0=創造的
    messages=[
        {"role": "user", "content": "リスト内包表記の使い方を教えて"},
    ]
)
パラメータ デフォルト 説明
system string なし システムプロンプト(Claudeの役割・制約を指定)
temperature float 1.0 出力のランダム性。コード生成は0.0推奨
top_p float temperatureの代替。通常はtemperatureだけでOK
stop_sequences array この文字列が出たら生成を停止

会話の管理(マルチターン)

Claudeはステートレス。会話を続けるには全履歴をmessagesに含める必要がある。

messages = [
    {"role": "user", "content": "Pythonでフィボナッチ数列を書いて"},
    {"role": "assistant", "content": "def fib(n):\n    ..."},
    {"role": "user", "content": "メモ化を使って最適化して"},
]

message = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    messages=messages,
)

トークンとコスト

会話が長くなるとinput_tokensが増え、コストが上がる。 不要な履歴は削る、または要約して圧縮するのが実践的。


エラーハンドリング

主要なHTTPステータスコード

コード 意味 対処
400 リクエスト不正 パラメータを確認
401 認証エラー APIキーを確認
429 レート制限 リトライ(指数バックオフ)
500 サーバーエラー リトライ
529 API過負荷 時間を空けてリトライ

リトライの実装

import anthropic

client = anthropic.Anthropic()

# SDKが429/500/529を自動リトライしてくれる(デフォルト2回)
# カスタマイズする場合:
client = anthropic.Anthropic(
    max_retries=3,
)

料金の考え方

Claudeの料金は input tokens(入力)output tokens(出力) の従量制。

モデル 入力 (MTok) 出力 (MTok)
Opus 4 $15 $75
Sonnet 4 $3 $15
Haiku 3.5 $0.80 $4

コスト最適化のコツ

  • 不要な会話履歴を削る(input tokensを削減)
  • max_tokensを必要最小限に設定
  • 分類・ルーティングにはHaikuを使い、複雑な処理だけSonnet/Opusを使う

参考リンク