中学生にも分かるAIモデル自動切り替え機能の作り方 #5
◉ AI×ビジネス活用 / 2026年07月

中学生にも分かるAIモデル自動切り替え機能の作り方 #5

2026年07月25日 読了目安:約17分 著者:AIFRONTNEWS編集部 VS Code / エラーハンドリング / テスト

「実際の障害を起こさずに、モデル自動切り替えが本当に動くか試せたら?」という問いに答えます。

完成後は、小さなチャットUIに「通常/切り替え中/待機/エラー(再試行可)」の状態が表示され、開発モードでだけ疑似5xxや疑似タイムアウトを入れて、Claudeのバックアップモデルへの切り替え(Auto)を確認できます。

準備からVS CodeでのCodex利用、疑似障害の注入、動作確認、エラー時の見方までを一気通貫で扱います。

この回のゴール

  • できること:疑似エラーでAutoの切り替えを安全に検証し、利用者向けの状態表示とエラー案内をUIに追加する。
  • 用意するもの:VS Code、OpenAI Codex拡張、Claude APIアカウントとAPIキー、ブラウザ。
  • 大切な約束:APIキーを画面やコード例に書かない。疑似障害は開発中だけ有効。本番では自動切り替え対象を5xx/短いタイムアウトに限定する。
最初に知っておきたい用語
  • Claude API:文章を送ると返事をくれるAIの入り口。アプリの「頭脳」役。
  • OpenAI Codex:VS Code内でコードを書いてくれるAIの相棒。アプリを作る「手伝い」役。
  • stop_reason:Claudeの返答がどの理由で止まったかを示す印。続ける/やめる/別ルートを決める材料。
  • フェイルオーバー:主役が動かないときに代役へ切り替えること。電球が切れたら予備に替えるイメージ。
  • 疑似エラー:本物の事故を起こさずに、わざと失敗を装う仕組み。テスト用の消しゴム判子のようなもの。
  • 環境変数:秘密の設定を隠して入れておく箱。コードや画面に出さないための方法。
  • Auto:利用者が「自動」を選ぶと、短時間で応答しない/5xxのときだけ予備モデルへ1回切り替える動作。

1. この記事でできること

今回は、実障害を起こさずに「自動切り替え(Auto)」が正しく働くかを安全に試します。
たとえば、交通訓練用の模擬コースのように、本物の道路を止めずに練習します。

2. 完成イメージ

チャットUIでstatus uiとfailoverの状態表示を確認する完成イメージ
Photo by Emiliano Vittoriosi on Unsplash

3. 最初に知っておきたいこと

信号で「黄→赤」になったら安全に止まるように、アプリも危ないときは落ち着いて止まり、短い案内を出す必要があります。
ここで大事なのがClaudeのstop_reasonです。これは「どんな理由で返答を終えたか」の札で、続ける/やめる/再試行/フォールバック(予備へ切り替え)を決める材料になります。
これを見ないと、例えるなら先生の「今日はここまで」を聞き逃してノートを書き続けるようなものです。

なぜ必要か。
本番の事故を避けつつ、ユーザー体験と信頼性の両立をねらうためです。適切に止まり、必要なら控え選手へ交代します。

4. 対象読者

初心者向けにfailoverとstatus uiを学ぶ対象読者イメージ
Photo by Thomas Park on Unsplash

5. 必要なものと入れ方

まず役割をはっきり分けます。
Claude APIは完成するアプリの頭脳。
OpenAI Codexは、そのアプリを作る手伝いです。家庭科の授業で、レシピ(設計)は自分が決め、手伝いの人に切ったり混ぜたりをお願いするイメージです。

VS Code

  1. これは何?:ノートのようにファイルを並べて編集できる作業机。
  2. 用意するもの:インターネット、PC、メールで使えるアカウント。
  3. 入れ方・開き方:公式サイトからインストーラーを取得し、案内に従って入れ、アプリを開きます。Windowsは.exe、macOSは.dmgを開きます。
  4. 最初の設定:左の人型アイコンからサインインを行い、同期を有効にします。
  5. できたか確認:左下に自分のアカウント名が表示されます。

OpenAI Codex拡張

  1. これは何?:VS Code内で「こうして」と頼むとコードを提案する相棒。
  2. 用意するもの:OpenAIのアカウント、またはAPIキー。
  3. 入れ方・開き方:左の四角いアイコン(拡張機能)を押し、検索欄に「Codex」と入力。OpenAIのCodex拡張を選んで「インストール」。完了後、サイドバーのCodexアイコンを押してチャットを開きます。
  4. 最初の設定:拡張の案内に従ってサインイン。チャット欄に「こんにちは」と送って応答を確認。
  5. できたか確認:エディタ右側にCodexのチャットが開き、メッセージが往復します。公式ドキュメントはOpenAI Codex documentationで確認できます。

Anthropic Console(Claude API)

  1. これは何?:Claudeを使うための管理画面。鍵(APIキー)を発行します。
  2. 用意するもの:Anthropicのアカウント、支払い方法(必要な地域・プランに応じて)。
  3. 入れ方・開き方:ブラウザでAnthropic Consoleを開き、サインインしてAPIキーを作成します。
  4. 最初の設定:どのモデルが使えるかをコンソールと公式情報で確認します。最新の候補はIntro to Claudeを参照。
  5. できたか確認:キーが表示されますが、ここでは画面に見せるだけ。実値はどこにも貼り付けません。

Node.js(今回必要な道具)

  1. これは何?:サーバーを動かすためのエンジン。料理でいうコンロ。
  2. 用意するもの:公式サイトからインストーラーを取得できるPC。
  3. 入れ方・開き方:公式サイトからLTS版をダウンロードしてインストール。アプリ一覧にNode.jsが追加されます。
  4. 最初の設定:今回の作業フォルダをVS Codeで開き、Codexに初期セットアップを依頼します。
  5. できたか確認:後の手順で、Codexが作ったサーバーが起動し、ブラウザでUIが開けます。

6. エージェントと作るものの全体像

フロントエンドとバックエンドと状態管理の全体像
Photo by Hanna Morris on Unsplash

家づくりで、まず間取り図を確認するように、作る部品の関係を先に決めます。

7. 手順1: ツールを準備する

目的と全体の流れ

ここでは開発机(VS Code)と手伝い役(Codex)、頭脳(Claude)の3者をつなぎます。作業は画面操作とCodexへの依頼だけで進めます。

読者がする操作

成功の見分け方

8. 手順2: APIキーを安全に用意する

環境変数とdotenvで安全にAPIキーを扱う方法
Photo by Mick Haupt on Unsplash

なぜ必要か

環境変数は、金庫に鍵をしまうイメージ。画面やコードに生の鍵を出さないために使います。

読者がする操作

成功の見分け方

9. 手順3: エージェントにアプリを作ってもらう

このボックスをコピーして、VS Code内のCodexチャットに送ります。

Codexに送るプロンプト

目的:前回までの小さなWebアプリを壊さずに、第5回の機能を追加してください。Claude APIはアプリの頭脳、あなた(Codex)は実装の手伝いです。私はコードやコマンドを手入力しません。

作るもの:
- 最小のチャットUIに「通常/切り替え中/待機/エラー(再試行可)」の状態ラベルを追加。
- サーバー側でClaude API呼び出しを行い、stop_reasonを見て挙動を分岐。
- 切り替え戦略:「Auto」のときだけ、(1)短いタイムアウト未応答、(2)HTTP 5xx のときに限り、バックアップモデルへ1回だけフォールバック。2回目以降は停止して安全なエラー表示に。
- 「速さ重視」「品質重視」選択時は、どんな失敗でも別モデルへは自動切り替えない。
- 画面には「選択肢(モード)/実際に回答したモデルの表示名/切り替えが起きた場合だけ短い理由」を表示。APIキー、内部のモデルID、リクエストID、詳細エラーは一切表示しない。

疑似障害(開発モード限定):
- 環境変数(例:APP_ENV=development)のときだけ有効。
- サーバーに、(A)疑似5xx、(B)疑似タイムアウトを注入できるトグルを実装。UIからも分かるように簡単なスイッチかクエリで切替可能に。
- 本番(APP_ENV=production)では常に無効。

安全なキー管理:
- .envからサーバーだけがAPIキーを読み、.gitignoreに.envを含める。
- .env.sampleを用意し、必要なキー名のみ記載。実値は書かない。
- ログや画面にキーや詳細エラーを出さない。

必要なファイル:
- サーバー(例:Node/Express)のエントリ、Claude呼び出しモジュール、状態管理、フロントのHTML/CSS/JS、.env.sample、README(動かし方)。

stop_reasonの扱い:
- ClaudeのMessages API応答で、stop_reasonに従って「採用/続行/再試行/フォールバック/中断」を分岐。
- 参考:Anthropic公式「Handling stop reasons」。拒否や安全上の中断は自動切替の対象外とし、ユーザーに短い案内を表示。

動作確認:
- 通常:メインモデルで応答→ラベル「通常」。
- 疑似5xx:Auto選択時のみバックアップへ切替→「切り替え中→通常」に戻る。
- 疑似タイムアウト:一定時間を超えたら1回だけ再試行かフォールバック→状態に反映。
- Auto以外:疑似障害でも切替しない。

質問:
- 取りかかる前に、前回までの構成(ファイル名/起動方法)を私に質問してください。不明点は作業前に確認してください。
- 途中で不明点があれば必ず質問してから進めてください。

Codexが作るものと、あなたが確認する点

10. 手順4: 動かして確認する

疑似エラーでモデル自動切り替えの挙動を検証する手順
Photo by David Pupăză on Unsplash

通常時

目的:平常運転を確かめます。
操作:Codexの案内でサーバーを起動→ブラウザでUIを開く→モード「Auto」で送信。
成功:状態「待機→通常」、応答の下に実際に使ったモデルの「表示名」だけが出る。

疑似5xx

目的:一時的なサーバー障害の切替を確認。
操作:開発モードで疑似5xxをON→Autoで送信。
成功:「待機→切り替え中→通常」。理由に短く「一時的なエラーにより予備を使用」と表示。

疑似タイムアウト

目的:応答遅延での再試行/フォールバックを確認。
操作:疑似タイムアウトをON→Autoで送信。
成功:「待機→切り替え中/再試行→通常」。2回目以降は停止し、短い案内で終わる。

Auto以外

目的:「速さ重視」「品質重視」を選んだときに勝手に切替しないことを確認。
操作:同じ疑似障害をONにして送信。
成功:切替は起きず、分かるエラー表示で止まる。

11. 手順5: エージェントと直す

UI文言と配色

目的:読みやすさの改善。Codexに、色弱に配慮した配色と短い文言提案を依頼します。

ログ最小化とPII排除

目的:個人情報を残さない。Codexに「ユーザー入力を原文で保存しない」設定の見直しを依頼。

再試行ポリシー

目的:待ち時間と回数の調整。Codexに「最大1回/待機表示を明確に」の条件で調整を依頼。

12. よくあるエラー

APIキーやstop_reason分岐などのよくあるエラー対処
Photo by Mohammad Rahmani on Unsplash

APIキー未設定/読み込み失敗

stop_reason未考慮で誤判定

疑似障害が本番で有効のまま

CORS/ポート衝突/依存不整合

自動切替の対象外エラーなのに切替を期待してしまう

13. 次に試すこと

14. まとめ

今回の学びをまとめた要点とリンク
Photo by Glenn Carstens-Peters on Unsplash

疑似障害で安全に検証し、ユーザーには必要十分な状態だけを見せる。
stop_reasonに基づく分岐で堅牢化し、Auto/手動の切替を明確にしました。
シリーズの前回は中学生にも分かるAIモデル自動切り替え機能の作り方 #4です。必要な準備がまだの人は先に確認してください。

出典