ankuro.dev
← ブログ一覧に戻る
【CCA Foundations対策 / Claude API編 #1】ClaudeのAPIを使い始める——モデル選択・環境構築・最初のリクエスト
2026-04-01#Claude#API#Python#生成AI#入門#Claude Certified Architect

【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キーが漏洩するリスクがあるため、必ず自分のサーバーを経由する。

テキスト生成の内部フロー

リクエストを送ってからレスポンスが返ってくるまで、内部では以下が起きている:

  1. トークン化 — 入力テキストを単語・記号などのトークン単位に分割
  2. 埋め込み — 各トークンを意味を表す数値ベクトルに変換
  3. 文脈化 — 前後のトークンを考慮して意味を精緻化
  4. 生成 — 次のトークンの確率分布を計算し、確率に基づいて選択 → 繰り返す

生成が止まるのは、max_tokens に達したか、モデルが自然な終了点を見つけたとき(stop_reason で確認できる)。


環境構築

必要なパッケージのインストール

pip install anthropic python-dotenv

APIキーの取得と保存

  1. console.anthropic.com でAPIキーを発行
  2. プロジェクトのルートに .env ファイルを作成
# .env
ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxxxxx
  1. .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を使って「キャラクターを持つチャットボット」を作れるようになる。


次回:マルチターン会話とシステムプロンプト——APIで対話アプリを作る