>100 Views
October 18, 26
スライド概要
はじめまして、yukikoと申します。 IT教育支援や、DX推進が可能です。 ◆ スキル LPIC レベル2 AI / Python Splunk BI(データ可視化・分析) ◆ その他 新卒・未経験の学生向けに、エンジニア転職を応援する資料を趣味で作成しています。 もしよろしければご活用ください。
Claude API入門 8段階スロープ Claude Codeと一緒に、はじめてのAPIアプリを作る 受講生用 初心者向け| Windows × VSCode|公式ドキュメント準拠(確認日 2026-10-16) うさうさ研修工房 面白きこともなき世を面白く 🐰
この講座で作るもの・できるようになること 作るもの Claudeと会話して、ツールも使える 「AI質問ボット」(コマンドライン)。8段 階で少しずつ育てます。 できるようになること APIキーを安全に扱い、Messages API を呼び、会話・エラー処理・ツール使 用まで自分で書ける。 Claude Codeの役割 コードを書く・直す相棒。ただし、仕組 みと確認は自分で。一緒に作って、 理解して、検証します。 対象:Claude Codeを少し触ったことがあり、 APIは初めての人。 Pythonの基本(変数・関数・ if)が分かれば大丈夫です。 出典:公式 Docs「Get started with Claude」(Claude Console アカウントと APIキーが必要) うさうさ研修工房|Claude API入門 8段階スロープ(受講生用) 2
8段階スロープ:少しずつ難しく、最後は達成感 ★ Lv3で最初の成功(早めの「できた!」) ▲ Lv7が山場(やや苦しい) ツール 使用 エラー 対応 会話に する 仕上げ 中身を 読む はじめて の呼び出し API とは 準備 Lv1 Lv2 Lv3 Lv4 Lv5 Lv6 Lv7 Lv8 10分 10分 10分 10分 10分 10分 10分 10分 各Lvの終わりに「ミニチェック」。できたら次へ。計 80分。 うさうさ研修工房|Claude API入門 8段階スロープ(受講生用) 3
前提:用意するもの Python 3 と VSCode Claude Codeが起動できる python --version で確認。コードはVSCodeで開く。 ターミナルで claude と入力して起動できればOK。 Claude Console アカウント 練習用フォルダ APIキーを作るために必要。API利用は従量課金なので、料金 の仕組みはLv8で。 python --version claude --version うさうさ研修工房|Claude API入門 8段階スロープ(受講生用) 新しい空のフォルダ(例:claude-api-bot)。本番のコードは使わ ない。 ※APIの利用料金と、 claude.ai/Claude Codeの料金は別のものです。 4
Claude Codeと一緒に進めるコツ あなた:決める 何を作るか、どのモデル・どの設定に するかを決める。 Claude Code:書く あなた:確かめる コードやコマンドを書く・直す。「公式 の例に合わせて」と頼む。 実行して結果を見る。公式ドキュメン トと照らす。 ひとつ大事な注意:モデル IDは自分で確認 Claudeが学習した時点より新しいモデルがあるため、古いモデル名を書くことがあります。モデル IDは公式の Models overview で確認し、「このモデルIDを使って」と指定しましょう。 出典:公式 Docs「Models overview」 うさうさ研修工房|Claude API入門 8段階スロープ(受講生用) 5
Lv1/8 難易度 ●○○○○○○○ APIとは Lv1|APIは「お店の注文窓口」 あなたのプログラム = お客さん 3つの違い claude.ai:チャットで使うアプリ API(HTTPのリクエスト) = 注文窓口 Claudeのモデル = 厨房 APIキー = 会員証(誰が注文したか) Claude Code:コードを書く相棒 Claude API:自分のプログラムから Claudeを呼ぶ窓口 今日の目標:Claude Codeに手伝ってもらいながら、自分のプログラムから Claudeに「注文」できるようになる。 うさうさ研修工房|Claude API入門 8段階スロープ(受講生用) 6
Lv1/8 難易度 ●○○○○○○○ APIとは Lv1|ミニチェック Q1 APIキーにあたるものは? Q2 自分のプログラムから Claudeを呼ぶ入口は? A. 厨房 B. 会員証(誰が注文したか) C. 料理 A. claude.ai B. Claude Code C. Claude API 答え合わせ(隠して先に挑戦): Q1:B うさうさ研修工房|Claude API入門 8段階スロープ(受講生用) Q2:C 7
Lv2/8 難易度 ●●○○○○○○ 準備 Lv2|APIキーを作る・守る ① Consoleにログイン ② Create key ③ 一度だけ表示 Claude Console の API keys ページ (platform.claude.com/settings/keys)を 開く。 名前をつけ、有効期限(expiration)を 選ぶ。練習用は短めがおすすめ。 キーを安全な場所に保管。人に見せな い。 守るルール(公式) ・キーは秘密情報管理(シークレットマネージャー)などに保管し、定期的に更新する ・漏れたと思ったら、無効化(Disable)または削除する ・コードに直書きしない/Gitにコミットしない(環境変数で渡す) 出典:公式 Docs「Authentication」 うさうさ研修工房|Claude API入門 8段階スロープ(受講生用) 8
Lv2/8 難易度 ●●○○○○○○ 準備 Lv2|環境変数と仮想環境 PowerShell(Windows) mkdir claude-api-bot; cd claude-api-bot python -m venv .venv .venv\Scripts\Activate.ps1 pip install anthropic $env:ANTHROPIC_API_KEY = "(ここに自分のキー)" ポイント SDKは ANTHROPIC_API_KEY という環境変数を自 動で読む。上の書き方はこの端末だけ有効。 Claude Codeに頼むなら claude-api-bot フォルダに Python の仮想環境を作って、 anthropic をインストールして。 APIキーは環境変数 ANTHROPIC_API_KEY から読む前提で。キー自体はコードに書かないで。 確認: pip show anthropic で入っていれば OK。.env を使うなら .gitignore に入れる。 出典:公式 Docs「Get started with Claude」(SDKはANTHROPIC_API_KEYを自動で読む/ venvとpip install anthropic) うさうさ研修工房|Claude API入門 8段階スロープ(受講生用) 9
Lv3/8
難易度 ●●●○○○○○ はじめての呼び出し
Lv3|はじめて、 Claudeを呼ぶ
import anthropic
client = anthropic.Anthropic()
1
# ANTHROPIC_API_KEY
model
どのClaudeを使うか(Lv4で選び方)
を自動で読む
message = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=1000,
messages=[
{"role": "user", "content": "API とは何か、小学生にも分かる
ように説明して "}
],
)
2
3
for block in message.content:
if block.type == "text":
print(block.text)
4
max_tokens
返事の最大の長さ
messages
あなたの発言のリスト
content
返事は「ブロック」のリスト
出典:公式 Docs「Get started with Claude」のコードをもとに、モデル IDを変更
うさうさ研修工房|Claude API入門 8段階スロープ(受講生用)
10
Lv3/8 難易度 ●●●○○○○○ はじめての呼び出し Lv3|実行して、うまくいかないとき 実行 症状 原因 直し方 authentication_error (401) APIキーの問題(未設定・誤り・ 失効・期限切れ) 環境変数とキーを確認。新し いキーを作る ModuleNotFoundError 仮想環境が有効でない/未イ ンストール Activate してから pip install anthropic model が見つからない (404系) モデルIDの綴り・古い名前 Models overview のIDを確 認 python quickstart.py 説明の文章が表示されれば成功。これが最初の「できた!」で す。 Claude Codeに頼む 「quickstart.py を実行してエラーが出たら、原因を説明し て直して。ただし APIキーは表示しないで」 ミニチェック: model・max_tokens・messages の3つを、自分の言葉で言えますか? 出典:公式 Docs「Claude API errors」(401 authentication_error) うさうさ研修工房|Claude API入門 8段階スロープ(受講生用) 11
Lv4/8 難易度 ●●●●○○○○ 中身を読む Lv4|モデルの選び方と、リクエストの部品 モデル APIのID 価格(入力/出力 百万トークン) 得意 Claude Fable 5.1 claude-fable-5-1 $10/$50 難しい推論・長い作業 Claude Opus 5.5 claude-opus-5-5 $4/$20 長い実装・知的作業(公式の最初の目 安) Claude Sonnet 5.5 claude-sonnet-5-5 $2/$10 速さと賢さのバランス Claude Haiku 5.5 claude-haiku-5-5 $0.10〜/$0.50〜 分類・抽出など大量・低遅延 この講座では 必須の部品 Sonnet 5.5 を使います(速く、料金も控えめ)。公式のクイックスター トはOpus 5.5。IDを差し替えるだけで試せます。 model/max_tokens/messages。会話の最初に効く指示は、トッ プレベルの system に書く(Lv5)。 出典:公式 Docs「Models overview」(価格は変わるので、必ず最新を確認) うさうさ研修工房|Claude API入門 8段階スロープ(受講生用) 12
Lv4/8
難易度 ●●●●○○○○ 中身を読む
Lv4|返事(レスポンス)を読む
content
{
"id": "msg_01XFDUDYJgAACzvnptvVoYEL",
"type": "message",
"role": "assistant",
"content": [{"type": "text", "text": "Hello!"}],
"model": "claude-opus-5-5",
"stop_reason": "end_turn",
"usage": {"input_tokens": 12, "output_tokens": 6}
}
返事の本体。ブロックのリストで、text以外の種類もある
stop_reason
なぜ止まったか(end_turn=普通に終わり)
usage
使ったトークン数。料金の元になる(Lv8)
request-id
問い合わせ用の番号。message._request_id で見られる
ミニチェック:返事の「文字」だけを取り出すには、 content の中の type が text のブロックを選ぶ。
出典:公式 Docs「Using the Messages API」「Claude API errors」
うさうさ研修工房|Claude API入門 8段階スロープ(受講生用)
13
Lv5/8
難易度 ●●●●●○○○ 会話にする
Lv5|APIは会話を「覚えない」
1回目
[あなた]
2回目
[あなた1][Claude1][あなた2]
3回目
[…全部…][あなた3]
Messages APIはステートレス( stateless)。毎回、これまでの会話を全部送る必要があります。
history = []
while True:
q = input("あなた: ")
if q in ("exit", "quit"):
break
history.append({"role": "user", "content": q})
msg = client.messages.create(model="claude-sonnet-5-5", max_tokens=1000, messages=history)
text = "".join(b.text for b in msg.content if b.type == "text")
history.append({"role": "assistant", "content": text})
print("Claude:", text)
出典:公式 Docs「Using the Messages API」Multiple conversational turns
うさうさ研修工房|Claude API入門 8段階スロープ(受講生用)
14
Lv5/8 難易度 ●●●●●○○○ 会話にする Lv5|systemで役割を決める/使えないもの msg = client.messages.create( model="claude-sonnet-5-5", max_tokens=1000, system="あなたは親切なITメンターです。初心者に、短く、例を使って答えてください。", messages=history, ) 初めから効かせたい指示は system 会話の最初から効く指示は、トップレベルの system フィールド に書く。messages には会話の中身だけ。 新しいモデルで 400になる設定 ・temperature/top_p/top_k:Claude 4.7以降は非対応(変更する と400) ・assistantの先頭埋め込み( prefill):4.6以降は非対応 → プロンプトの書き方で調整する 出典:公式 Docs「Using the Messages API」「Claude API errors」 うさうさ研修工房|Claude API入門 8段階スロープ(受講生用) 15
Lv6/8 難易度 ●●●●●●○○ エラー対応 Lv6|エラーは「番号」で読む 番号 type 主な意味 まず確認 400 invalid_request_error リクエストの形・内容が不正 メッセージ本文。非対応パラメータ 401 authentication_error APIキーの問題 環境変数・失効・期限 402/403 billing/permission 請求の問題/権限なし Console の支払い・権限 404 not_found_error リソースが見つからない URLやモデルID 413 request_too_large リクエストが大きすぎる サイズ(Messages APIは32MB) 429 rate_limit_error レート制限・利用上限 待つ/頻度を下げる 500/529 api_error/overloaded_error サーバー側の障害・混雑 少し待って再試行 どの返事にも request-id が付く。問い合わせの時はこれを伝える。 出典:公式 Docs「Claude API errors」 うさうさ研修工房|Claude API入門 8段階スロープ(受講生用) 16
Lv6/8
難易度 ●●●●●●○○ エラー対応
Lv6|SDKの自動リトライと、例外の受け方
SDKが自動でやること
接続エラー・レート制限・ 5xxは、指数バックオフで自動リトライ(既
定2回、retry-afterを尊重)。max_retries で変更できる。
あなたがやること
それでも失敗したときに、番号と request-id を記録して、利用者に
分かる言葉で伝える。
client = anthropic.Anthropic(max_retries=2)
try:
msg = client.messages.create(model="claude-sonnet-5-5", max_tokens=1000, messages=history)
except anthropic.APIStatusError as e:
print(f"API エラー {e.status_code}: {e.message}")
except anthropic.APIConnectionError:
print(" ネットワークに接続できませんでした ")
例外クラス名はSDKごとに違う。公式の SDKページで確認し、 Claude Codeにも「公式の例外階層に合わせて」と頼む。
出典:公式 Docs「Claude API errors」(SDKの自動リトライ・型付き例外)
うさうさ研修工房|Claude API入門 8段階スロープ(受講生用)
17
Lv7/8 難易度 ●●●●●●●● ツール使用 Lv7|ツール使用: Claudeが「道具を使いたい」と頼む ① 質問 「東京の天気は?」 ② Claude tool_use を返す ③ あなたのコード 天気を調べる 大事な点 Claude自身は天気を調べない。「この道具をこの引数で使っ て」と返し、実行するのはあなたのコード。結果を tool_result で 返すと、Claudeが答えにまとめる。 ④ tool_result を送り返す ⑤ Claude 答えを作る stop_reason で見分ける stop_reason が tool_use のときは、道具の呼び出し待ち。 end_turn なら、そのまま答えが完成。 出典:公式 Docs「Tool use with Claude」How tool use works うさうさ研修工房|Claude API入門 8段階スロープ(受講生用) 18
Lv7/8
難易度 ●●●●●●●● ツール使用
Lv7|道具を定義して、往復する
tools = [{
"name": "get_weather",
"description": "指定した場所の現在の天気を返す",
"input_schema": {
"type": "object",
"properties": {"location": {"type": "string", "description": "都市名"}},
"required": ["location"],
},
}]
messages = [{"role": "user", "content": "東京の天気は?"}]
resp = client.messages.create(model="claude-sonnet-5-5", max_tokens=1024, tools=tools, messages=messages)
if resp.stop_reason == "tool_use":
tu = next(b for b in resp.content if b.type == "tool_use")
result = "晴れ、20度" # ← ここで本物の天気を調べる
messages += [
{"role": "assistant", "content": resp.content},
{"role": "user", "content": [{"type": "tool_result", "tool_use_id": tu.id, "content": result}]},
]
resp = client.messages.create(model="claude-sonnet-5-5", max_tokens=1024, tools=tools, messages=messages)
print(next(b.text for b in resp.content if b.type == "text"))
出典:公式 Docs「Tool use with Claude」のコードをもとに構成
うさうさ研修工房|Claude API入門 8段階スロープ(受講生用)
19
Lv7/8 難易度 ●●●●●●●● ツール使用 Lv7|つまずきポイント tool_use_id を合わせる tool_result の tool_use_id は、返ってきた tool_use の id と同じにす る。 説明文が命 description に「いつ使う道具か」を書く。 Claudeはこの説明で呼ぶ か決める。 道具の呼び出しを強制できない Opus 5.5・Sonnet 5.5 などでは tool_choice の any/tool は400。既 定の auto を使う。 引数が足りないとき 足りない必須の引数は、 Claudeが聞き返したり推測したりする。厳 密にしたいなら strict tool use。 出典:公式 Docs「Tool use with Claude」「Claude API errors」Forced tool use not supported うさうさ研修工房|Claude API入門 8段階スロープ(受講生用) 20
Lv8/8
難易度 ●●●●●○○○ 仕上げ
Lv8|長い出力と、待ち時間
stop_reason を見る
end_turn:普通に終わり
max_tokens:上限で途中で切れた → 上限を上げる/分けて頼む
tool_use:道具の呼び出し待ち
長い処理はストリーミング
max_tokens を大きくするときは、ストリーミングか Batch APIを使う。
ネットワークが長い無通信を切ることがあるため。
with client.messages.stream(
max_tokens=4000,
messages=[{"role": "user", "content": " 詳しい分析を書いて ..."}],
model="claude-sonnet-5-5",
) as stream:
message = stream.get_final_message()
print(next(b.text for b in message.content if b.type == "text"))
出典:公式 Docs「Claude API errors」Long requests/「Using the Messages API」
うさうさ研修工房|Claude API入門 8段階スロープ(受講生用)
21
Lv8/8 難易度 ●●●●●○○○ 仕上げ Lv8|コストを読む・キーを守る 料金のしくみ 料金=入力トークン ×入力単価+出力トークン ×出力単価(百万トー クン単位)。 例(Sonnet 5.5):入力12,000+出力2,000なら 12,000×$2/百万+2,000×$10/百万=約$0.044(計算例) 料金を抑えるコツ ・まずSonnet/Haikuで試す ・会話履歴が長くなるほど入力が増える ・tools の定義もトークンになる ・usage を記録して確認する キーの安全(最終チェック) 環境変数で渡す/ Gitに入れない/漏れたら無効化・削除/期限を設定する/共有・自動化には、個人キーではなく専用のサービスアカウン トのキーを使う。 出典:公式 Docs「Models overview」「Tool use with Claude」Pricing「Authentication」 うさうさ研修工房|Claude API入門 8段階スロープ(受講生用) 22
Lv8/8 難易度 ●●●●●○○○ 仕上げ Lv8|完成! AI質問ボットの全体図 準備 Lv2 環境変数・仮想環境 呼び出し Lv3〜4 messages.create 会話 Lv5 history+system 守り Lv6 例外・リトライ 道具 Lv7 tool_use の往復 仕上げ Lv8 stop_reason・料金・キー 最終ハンズオン( 10分) bot.py にここまでを組み立てる。Claude Codeに「Lv5〜7の内容を1つのファイルにまとめて、公式の例外処理も入れて」と頼み、動かし て確認。 うさうさ研修工房|Claude API入門 8段階スロープ(受講生用) 23
修了クイズ( 6問) Q1 Messages APIは会話を覚えている? Q2 APIキーの置き場所として適切なの は? Q3 401 authentication_error の原因 は? A. 覚えている A. コードに直書き A. キーの問題 B. 覚えない(毎回全履歴を送る) B. 環境変数やシークレット管理 B. 混雑 C. 一部だけ C. 公開リポジトリ C. リクエストが大きすぎる Q4 529 overloaded_error が出たら? Q5 stop_reason が tool_use のとき、次 にやることは? Q6 stop_reason が max_tokens だった意 味は? A. キーを作り直す A. 何もしない A. 返事が上限で途中で切れた B. 少し待って再試行 B. 自分のコードで道具を実行し、tool_result を返す B. 正常終了 C. モデルを変えるしかない C. キーが失効 C. 最初からやり直す 答え合わせ: Q1 B/Q2 B/Q3 A/Q4 B/Q5 B/Q6 A(5問以上で合格の目安) うさうさ研修工房|Claude API入門 8段階スロープ(受講生用) 24
まとめ&次の一歩 1 APIは「注文窓口」。キーは会員証。環境変数で守る(Lv1〜2)。 2 messages.create は、model・max_tokens・messages。会話は毎回全履歴を送る(Lv3〜5)。 3 エラーは番号で読み、道具は tool_use→tool_result の往復。最後に stop_reason・料金・キーを確認(Lv6〜8)。 次の一歩 セルフチェック ・Structured outputs(JSONで返す) ・Prompt caching・Batch処理 ・Claude Code を部品として使う Agent SDK □ キーを環境変数で渡せる □ 会話ボットを動かした □ エラー番号の意味を言える □ tool_use の往復を説明できる
参考:公式ドキュメント(確認日 2026-10-16) Claude Platform Docs(platform.claude.com/docs) Get started with Claude(クイックスタート) Using the Messages API/Models overview/Authentication Claude API errors/Tool use with Claude Claude Code Docs(code.claude.com/docs) Overview/Best practices/Error reference モデル名・価格・対応パラメータは更新されます。コードを書く前に、必ず公式の最新版を確認してください。 うさうさ研修工房|Claude API入門 8段階スロープ(受講生用) 26