A
AIエージェントの仕組み
ch3-s5 · Claude API Basics

Claude API の基礎

約 15 分

この回のゴール

1. なぜ API 経由で使うのか

前回までで、LLM の中身(Transformer、次トークン予測)はわかりました。では自分で Claude 相当のモデルを学習できるか?

自前学習 API 経由
必要な GPU 数千〜数万台 0 台
学習データ 数兆トークン 不要
学習期間 数週間〜数ヶ月 不要
費用 数千億円 トークン単価

👉 API を使うのが現実解。Anthropic や OpenAI がモデル学習の重労働を引き受けてくれます。

2. Claude API の全体像

Claude API (anthropic SDK) で最もよく使うのは Messages API の 1 本だけ:

POST https://api.anthropic.com/v1/messages

これだけで: - 普通のチャット - 画像入力(Vision) - ツール呼び出し(第 4 章のテーマ) - 構造化出力(JSON) - ストリーミング - ...ほぼ何でもできる

3. Messages API のリクエスト構造

from anthropic import Anthropic
client = Anthropic()

response = client.messages.create(
    model="claude-haiku-4-5",
    max_tokens=1024,
    system="あなたは日本の歴史に詳しいアシスタントです。",  # 役割を指示
    messages=[
        {"role": "user",      "content": "桃太郎について教えて"},
        {"role": "assistant", "content": "桃太郎は日本の昔話の主人公です。"},
        {"role": "user",      "content": "続きを話して"},
    ],
)

役割(role)は 3 種類

Role 意味
system あなた(開発者)から AI への永続的な指示(性格・制約・ルール)
user ユーザーからの入力
assistant AI の過去の発言(文脈として与える)

会話履歴は 自分で管理

Claude API はステートレス。毎回 全履歴 を送る必要があります。

4. レスポンスの構造

response.content                       # [ContentBlock(type="text", text="...")]
response.stop_reason                   # "end_turn" / "max_tokens" / "tool_use" ...
response.usage.input_tokens            # 入力トークン数
response.usage.output_tokens           # 出力トークン数
response.usage.cache_read_input_tokens # キャッシュ読み取り

contentリスト になっているのは、1 レスポンスに複数のブロック(text + tool_use など)が来るため。

5. ストリーミング — 体感が変わる

ChatGPT のように トークンが出るそばから表示 される方式:

with client.messages.stream(
    model="claude-haiku-4-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "長い文章を書いて"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

レスポンス全体を待つ必要がないため UX が激変 します。長い出力ほどメリット大。

6. プロンプトキャッシング — コストを 90% 削減できる

長いシステムプロンプトや文書 を毎回送ると料金が嵩みます。Claude には:

response = client.messages.create(
    model="claude-haiku-4-5",
    max_tokens=1024,
    system=[{
        "type": "text",
        "text": "<<非常に長い文脈>>",
        "cache_control": {"type": "ephemeral"}  # 👈 キャッシュマーカー
    }],
    messages=[{"role": "user", "content": question}],
)

response.usage.cache_read_input_tokens  # キャッシュから読んだトークン数

7. パラメータ一覧(よく使うもの)

パラメータ 意味 おすすめ値
model 使用モデル ID claude-haiku-4-5(安い) / claude-sonnet-4-6(バランス) / claude-opus-4-7(最高性能)
max_tokens 最大 出力トークン 用途による
temperature サンプリングの「温度」(第 2 章) 通常 1.0、コードは 0.2
system システムプロンプト タスクの性質・口調指示
messages 会話履歴 user/assistant 交互
stream ストリーミング 長文なら推奨

⚠️ 注意: Claude Opus 4.7 では temperature / top_p / top_k がサポートされていません。指定すると 400 エラーになります。サンプリング調整したいときは Haiku 4.5 / Sonnet 4.6 を使ってください。

8. 料金の計算

費用 = 入力トークン × 入力単価 + 出力トークン × 出力単価
モデル 入力 (USD/1M tok) 出力 (USD/1M tok)
Haiku 4.5 $1.00 $5.00
Sonnet 4.6 $3.00 $15.00
Opus 4.7 $5.00 $25.00

キャッシュ読み取りは通常価格の 0.1 倍(= 90% 引き)。


まとめ

第 3 章のクロージング → 次の章への接続

ここまでで: - トークン化、埋め込み、Attention、Transformer の中身を理解 - Claude API で実モデルを動かせるようになった

しかし LLM は テキストを返すだけ。実世界の情報(株価、最新ニュース、データベース)を取得したり、コードを実行したりはできません。 👉 次章「ツール付き LLM」で、LLM が 外部の関数を呼び出す Function Calling を学びます。

参考文献

📝 理解度クイズ (3 問) 💡 ログインすると進捗が保存されます

💬 このサブステップの Q&A

まだ質問はありません。最初の質問を投稿してみましょう。

質問の投稿にはログインが必要です。