
【CCA Foundations対策 / Claude API編 #1】ClaudeのAPIを使い始める——モデル選択・環境構築・最初のリクエスト
Anthropic Academyの「Claude APIを使用した構築」コースをもとに解説しています。
Claude APIを使ってアプリを作りたい——そう思ったとき、最初に知っておくべきことが3つある。どのモデルを選ぶか、APIをどう呼び出すか、レスポンスをどう受け取るか。
この記事を読むと、PythonでClaude APIにリクエストを送り、レスポンスを受け取るところまで動かせるようになる。
Claudeのモデルを選ぶ
Claude APIには現在3つのモデルファミリーがある。用途に合わせて使い分けるのが基本。
| モデル | 特徴 | 向いているタスク |
|---|---|---|
| Opus | 最高の推論能力・最高コスト | 複雑な分析・長期的な計画・深い推論が必要なタスク |
| Sonnet | 能力・速度・コストのバランス | ほとんどの実用的なユースケース・コーディング |
| Haiku | 最速・最安 | リアルタイム応答・大量処理・シンプルな分類 |
選び方のシンプルな基準:
- とにかく賢さが必要 → Opus
- 速さ・コストを重視 → Haiku
- 迷ったら → Sonnet
実際のアプリでは、1つのモデルに固定するよりタスクに応じて使い分けるのが効率的。例えば、ユーザーの入力分類にHaikuを使い、詳細な回答生成にSonnetを使う、といった構成が多い。
APIの仕組みを理解する
まずアーキテクチャを整理しておく。
ユーザー
↓
自分のサーバー(Python / Node.js etc.)
↓ APIキーを使ってリクエスト
Anthropic API
↓
Claudeがテキストを生成して返す
重要:クライアント(ブラウザ・モバイルアプリ)から直接APIを叩かない。 APIキーが漏洩するリスクがあるため、必ず自分のサーバーを経由する。
テキスト生成の内部フロー
リクエストを送ってからレスポンスが返ってくるまで、内部では以下が起きている:
- トークン化 — 入力テキストを単語・記号などのトークン単位に分割
- 埋め込み — 各トークンを意味を表す数値ベクトルに変換
- 文脈化 — 前後のトークンを考慮して意味を精緻化
- 生成 — 次のトークンの確率分布を計算し、確率に基づいて選択 → 繰り返す
生成が止まるのは、max_tokens に達したか、モデルが自然な終了点を見つけたとき(stop_reason で確認できる)。
環境構築
必要なパッケージのインストール
pip install anthropic python-dotenv
APIキーの取得と保存
- console.anthropic.com でAPIキーを発行
- プロジェクトのルートに
.envファイルを作成
# .env
ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxxxxx
.gitignoreに.envを追加してバージョン管理から除外
# .gitignore
.env
クライアントの初期化
import anthropic
from dotenv import load_dotenv
load_dotenv() # .envファイルを読み込む
client = anthropic.Anthropic() # ANTHROPIC_API_KEYを自動で参照
Anthropic() は環境変数 ANTHROPIC_API_KEY を自動で読み込む。明示的に渡す場合は Anthropic(api_key="sk-ant-...") だが、コードにキーを直書きするのはNG。
最初のリクエストを送る
基本的なリクエスト構造
import anthropic
from dotenv import load_dotenv
load_dotenv()
client = anthropic.Anthropic()
message = client.messages.create(
model="claude-sonnet-4-6", # 使用するモデル
max_tokens=1024, # 生成の上限トークン数
messages=[
{"role": "user", "content": "Pythonでフィボナッチ数列を生成するコードを書いて"}
]
)
print(message.content[0].text)
パラメータの意味
model
使用するモデルのID。最新のモデルIDはAnthropicのドキュメントで確認する。
max_tokens
生成するトークン数の上限。目標値ではなく上限なので、短い回答でも上限まで生成されるわけではない。設定しないとエラーになるので必須。
messages
会話履歴をリストで渡す。各メッセージは role("user" または "assistant")と content を持つ辞書。
レスポンスの構造
# レスポンス全体(メタデータ含む)
print(message)
# Message(id='msg_...', content=[ContentBlock(text='...', type='text')],
# model='claude-sonnet-4-6', stop_reason='end_turn', usage=Usage(...))
# テキストだけ取り出す
print(message.content[0].text)
# トークン使用量を確認
print(f"入力: {message.usage.input_tokens} tokens")
print(f"出力: {message.usage.output_tokens} tokens")
stop_reason が "end_turn" なら正常に完了。"max_tokens" の場合は上限に達して途中で切れている。
動作確認コード
import anthropic
from dotenv import load_dotenv
load_dotenv()
client = anthropic.Anthropic()
def ask_claude(question: str, max_tokens: int = 1024) -> str:
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=max_tokens,
messages=[{"role": "user", "content": question}]
)
return message.content[0].text
# 動作確認
response = ask_claude("日本の首都はどこですか?")
print(response)
これが動けばAPIの基本設定は完了。
まとめ
- Claude APIにはOpus・Sonnet・Haikuの3モデル。迷ったらSonnetから始める
- クライアントから直接APIを叩かず、サーバーを経由する
- リクエストの必須パラメータは
model/max_tokens/messages - テキストは
message.content[0].textで取り出す max_tokensは目標値ではなく上限値
次回はマルチターン会話・システムプロンプト・Temperatureを扱う。APIを使って「キャラクターを持つチャットボット」を作れるようになる。