この回のゴール
- Claude API を実際に呼び出して 動かす
- Messages API の構造 (system / user / assistant) を理解する
- ストリーミング と プロンプトキャッシング を体感する
- トークン使用量と料金 をリアルに把握する
- ここまで学んだ理論(トークン化・サンプリング・Transformer)を 実戦で使える形 にする
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 # キャッシュから読んだトークン数
- 2 回目以降 同じ
system+ 同じtools+ 同じモデル → 1/10 の料金 で読み込み - TTL(デフォルト 5 分)内に使えば効く
- RAG・エージェントで 毎回同じ指示を送る 場面で劇的に効く
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% 引き)。
まとめ
- Claude API は Messages API 1 本 で大半のことができる
system/user/assistantの 3 role でやり取りを構成、会話履歴は 自前管理- ストリーミング で UX 改善、プロンプトキャッシング で 90% コスト削減
- モデル選択(Haiku/Sonnet/Opus)で コスト×品質 をトレードオフ
第 3 章のクロージング → 次の章への接続
ここまでで: - トークン化、埋め込み、Attention、Transformer の中身を理解 - Claude API で実モデルを動かせるようになった
しかし LLM は テキストを返すだけ。実世界の情報(株価、最新ニュース、データベース)を取得したり、コードを実行したりはできません。 👉 次章「ツール付き LLM」で、LLM が 外部の関数を呼び出す Function Calling を学びます。
参考文献
- Anthropic 公式ドキュメント
anthropicPython SDK: GitHub