【第1回】Claude API Python 実践入門 Season2 — Claude Sonnet 4 をPythonから呼び出す最初の一歩

AI

Season2、はじめます。

Season1ではClaude APIの基礎をざっくり触ってみたんですが、気づいたら自分の周りのAI環境がけっこう変わっていて。モデルのラインナップも一新されて、Claudeも「claude-sonnet-4」という世代になっているし、SDKの使い方もちょっとずつ変わってたりする。

というわけで、Season2では「実際に使う」ことにフォーカスして書いていこうと思います。全4回の予定で、大まかな流れはこんな感じ。

  • 第1回(今回):環境構築とClaude Sonnet 4を呼び出す基本
  • 第2回:マルチターン会話・システムプロンプトの使い方
  • 第3回:Tool Use(関数呼び出し)を実装する
  • 第4回:Streaming + 実践的なユースケースをまとめる

まず今回は「Hello, Claude」から始めて、レスポンスの構造を把握するところまでやっていきます。

この記事でわかること

  • APIキーを取得して環境変数として設定する方法
  • PythonからClaude Sonnet 4を呼び出す最小限のコード
  • レスポンスオブジェクトの主要フィールドと意味
  • systemプロンプトの効果的な使い方
  • max_tokensとコストの関係

Claude Sonnet 4 ってどんなモデルか

軽くおさらい。Claude Sonnet 4(モデルID: claude-sonnet-4-20250514)は2025年5月にリリースされたモデルで、Anthropicの「Claude 4」ファミリーのミドルティアに位置します。

特徴をざっくり挙げると:

  • コンテキストウィンドウ:200,000トークン
  • 入力:テキスト・画像対応
  • Extended Thinking(拡張思考モード)対応
  • コーディング系タスクに強い設計

Opusほど重くなく、Haikuほど割り切ってもない。日常的なAPI利用のメインどころとして使いやすいモデルという印象です。ちなみに現在(2026年5月時点)ではSonnet 4.5や4.6も登場していますが、基礎を押さえておくことが後続の理解にも直結するので、まずSonnet 4からスタートします。

環境構築

APIキーの取得

まずAnthropic Consoleでアカウントを作り、APIキーを発行します。無料枠でも試せますが、量が多いと課金が走るので注意。

キーは環境変数として管理するのが無難です。

# .envに書いておく
ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxxxxxxxxx

本番コードにハードコードしてうっかりGitHubに上げる、という事故は定番中の定番なので、最初から環境変数の習慣をつけておくといいです(自分も一回やりました)。

Pythonライブラリのインストール

pip install anthropic

またはuv派の人は:

uv add anthropic

最近uvを使い始めたんですが、ローカル環境が整理されてとても快適です。まだpipでいいかなという人も、一度試してみる価値あり。

python-dotenvも入れておくと環境変数の読み込みが楽です。

pip install python-dotenv

最初のAPI呼び出し

ではさっそく動かしてみます。

import os
from dotenv import load_dotenv
from anthropic import Anthropic

load_dotenv()

client = Anthropic()  # ANTHROPIC_API_KEYを自動で読んでくれる

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

print(message.content[0].text)

client = Anthropic()は環境変数ANTHROPIC_API_KEYを自動で読み取ってくれるので、明示的に渡す必要はありません。明示的に渡したいならapi_key=os.environ.get("ANTHROPIC_API_KEY")と書けばOK。

実行するとこんな感じのレスポンスが返ってきます。

def fibonacci(n):
    if n <= 0:
        return []
    elif n == 1:
        return [0]

    fib = [0, 1]
    for i in range(2, n):
        fib.append(fib[-1] + fib[-2])
    return fib

ちゃんと動く。当たり前ですが毎回感動します。

レスポンスオブジェクトの構造を把握する

テキストを取り出すだけならmessage.content[0].textで十分ですが、レスポンス全体の構造を知っておくと後で困りません。

print(message)
# Message(
#   id='msg_01...',
#   content=[TextBlock(text='...', type='text')],
#   model='claude-sonnet-4-20250514',
#   role='assistant',
#   stop_reason='end_turn',
#   stop_sequence=None,
#   type='message',
#   usage=Usage(
#     cache_creation_input_tokens=0,
#     cache_read_input_tokens=0,
#     input_tokens=23,
#     output_tokens=87
#   )
# )

主要なフィールドを整理するとこんな感じ。

  • content:レスポンス本文のリスト。通常はTextBlockが1つ
  • stop_reasonend_turnは正常終了。max_tokensなら出力が途中で切れてる
  • usage.input_tokens / usage.output_tokens:トークン数。コスト計算のときに使う

stop_reasonのチェックは地味に大事で、max_tokensで切れていた場合はレスポンスが不完全なので、そのまま使うとまずいことがあります。

if message.stop_reason == "max_tokens":
    print("⚠️ 出力が途中で切れています。max_tokensを増やすか、入力を短くしてください")
else:
    print(message.content[0].text)

systemプロンプトを付けてみる

Claude APIにはsystemパラメータがあって、AIの役割や振る舞いを事前に指定できます。messagesの中ではなく、トップレベルのパラメータとして渡す点が少し独特です(OpenAI APIと使い方が違うのでたまに混乱する)。

message = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=512,
    system="あなたはPythonの技術書を書くプロのエンジニアです。コードは常にPEP8に準拠し、型ヒントを付けてください。",
    messages=[
        {"role": "user", "content": "リストの最大値を返す関数を書いてください"}
    ]
)

print(message.content[0].text)

systemプロンプトをちゃんと書くだけで、アウトプットの質がかなり変わります。「〇〇のエキスパートとして回答してください」くらいのシンプルな一文でも効果があるので、入れない手はないです。

max_tokensとコストの考え方

Claude Sonnet 4の価格は、入力が$3/MTok、出力が$15/MTokです(1MTok = 100万トークン)。Extended Thinkingを使う場合はthinking tokensなどが出力トークンとして扱われるため、課金・トークンの見え方がややこしくなることがあります。注意が必要です。

max_tokensは「最大でここまで出力してよい」という上限であり、この数値が大きいほど課金されるわけではありません。実際の課金はusage.output_tokensベース。なので基本的には大きめに設定しておいて問題ありません。

ただし1リクエストで大量に生成させると当然コストも上がるので、用途に合わせて調整する必要はあります。自動化バッチで大量に回すときはusageをログに残しておくと後で確認しやすいです。

※この記事にはプロモーションが含まれます

ちなみに、Aiarty Image Enhancer(AI画像高画質化ツール。ノイズ除去・8倍拡大に対応)も気になっています。Aiarty Image Enhancer

まとめ

今回は環境構築から基本的なClaude Sonnet 4 APIの呼び出し、レスポンス構造の確認、systemプロンプトの付け方、そしてコストの考え方まで触れました。コード量は少ないけど、ここの理解がゆるいと後で詰まることが多いので、しっかり手を動かしておくと良いと思います。

次回は「マルチターン会話」と「systemプロンプトのより実践的な使い方」をやります。

📚 シリーズ「Claude API Python 実践入門 Season2」(第1回 / 全4回)

→ 次回の記事: 公開後にリンクが追加されます

参考になったらクリックしてもらえると嬉しいです!

Blogmura AIAI Ranking
タイトルとURLをコピーしました