エージェントを作り直さずにAIモデルを切り替える方法

Dev.to / 2026/5/2

💬 オピニオンDeveloper Stack & InfrastructureTools & Practical UsageModels & Research

要点

  • この記事は、AIモデルの切り替えが難しくなる主因はAPIそのものよりも、プロンプト、ツール(function-call)スキーマ、出力パーサ、ファインチューニング、価格前提などでエージェントを特定ベンダーに密結合させてしまう点だと述べています。
  • あるモデル向けに最適化したプロンプトは別のモデルで品質が約5〜20%程度低下し得ること、またツール呼び出し仕様の微差によりハードコードされた連携が壊れることを説明しています。
  • 出力の表現はモデルごとに異なり(例:「Yes」の出し方の違いなど)、正規表現ベースのパーサは壊れやすくサイレントに失敗しがちだと指摘しています。
  • ファインチューニングやコスト前提も追加のロックイン要因になり、ファインチューニング済み挙動やユニット経済性はプロバイダをまたいで素直に移りにくいと述べています。
  • 可搬性を高める具体策として、providerを抽象化して一貫したrunModelのインターフェースに隠蔽すること、モデル依存の構文を避けたプロンプト設計、OpenAI-styleに標準化したツール定義、そして正規表現よりもJSONスキーマ等のバリデーション付き構造化出力を使うことを提案しています。

私は2026年にまったく同じ製品を出荷した2つのチームを見てきました。1つは、AnthropicがそれをリリースしたときにGPT-5.3からClaude Opus 4.7への移行に1週間を費やしました。もう1つはGPT-5.5がローンチされ、移行が無意味になった時点でもまだ終わっていませんでした——四半期もかかったのに。

違いはモデルではありませんでした。エージェントをどれだけ特定のプロバイダーに密結合していたか、そこが問題でした。

これからのフロンティアの動きに合わせて、移植可能なエージェントを作る方法を示します。

What actually couples you to a vendor

多くのチームは、モデルのロックインはAPIの話だと思っています。でも違います。APIは——午後のうちに入れ替えられるからです。実際のロックインは5つの場所にあります:

1. プロンプト。 どのモデルにも癖があります。Claudeは、XMLタグ付きの長く構造化されたプロンプトにうまく応答します。GPT-5は簡潔な指示と明確なJSONスキーマを求めます。Geminiは複数ドキュメントの文脈を扱う方法が別です。1つのモデル向けに調整したプロンプトは、再チューニングしない限り、別のモデルでは品質が5〜20%低下してしまいます。

2. ツール/関数呼び出しのスキーマ。 OpenAIの関数呼び出し仕様は事実上の標準ですが、AnthropicやGoogleは細かな違いで扱います(パラメータ検証、並列ツール呼び出し、エラー形式など)。特定のプロバイダー向けにtool_useブロックをハードコードしたコードは、別のものでは壊れます。

3. 出力パーサ。 モデルは表現方法が異なります。「はい」 vs 「はい。」 vs 「はい、理由は…」。GPT-5で完璧に動く正規表現(regex)は、Claudeでは静かに8%の確率で壊れます。

4. ファインチューニング。 ファインチューニングしている場合、ロックインされます。ファインチューニングはベンダー間で移植されません。次のモデル世代でベース能力が無償になる頃には、多くのチームが「それはミスだった」と気づきます。

5. 価格の前提。 「1タスクあたり10万トークンなら払える」はGPT-5.4 mini($1.69/M)では成立しますが、Opus 4.7(出力$75/M)では予算が崩れます。製品の採算が特定モデルの価格に依存しているなら、モデルの入れ替えは“再価格設定”です。

How to build for portability

プロバイダーを抽象化する。 すべてのモデル呼び出しを、入力/出力の形を一貫させた1つの関数で包みます: runModel(messages, tools, opts) → response。この関数は、プロバイダー、モデル、フォールバックのチェーンをパラメータとして受け取ります。ベンダーのSDKは内部の実装詳細に留めます。

プロンプトはモデルに非依存に保つ。 モデル固有の構文は避けます——Claude向けに最適化されたXMLタグは使わない、GPT向けのJSONモード特有の言い回しは使わない。出荷前に、少なくとも2つのプロバイダーでプロンプトをテストしてください。

ツールのスキーマをOpenAIスタイルに標準化する。 それが事実上の標準であり、他のベンダーはすべてそれにマッピングできます。ツールがAnthropic固有の形式で定義されているなら、移植してください。

正規表現ではなく構造化された出力を使う。 主要ベンダーのすべてが、今ではJSONスキーマで検証された出力をサポートしています。モデル入れ替えに跨って、正規表現でモデル出力をパースするのは脆いです。一方、構造化JSONのパースは安定しています。

プロンプトの限界まで使い切るまではファインチューニングを避ける。 現代のモデルは賢すぎるため、2026年にはファインチューニングが適切な答えになることはめったにありません。ロックインは、ベースモデルの上限に到達したことが測定できているケースにのみ使ってください。

リリースごとに評価(eval)スイートを回す。 50〜100タスクのevalスイートを一度作ります。モデルが出るたびに毎回それを再実行します。eval-firstで出荷するチームは1日でモデルを入れ替えられますが、evalがないチームは「なんか悪く感じる?」という議論に何週間も費やします。

The fallback pattern

最も重要なパターン:1つのプロバイダーが稼働していることに決して依存しない。 本番では2〜3のベンダーを自動フォールバック付きで接続します。Anthropicに障害が起きたらGPT-5が引き継ぎます。両方が劣化している場合はGeminiです。

これは高くつきそうに聞こえます。でも違います。実際にリクエストを処理するモデルにだけ支払いが発生するためです。フォールバックモデルは99%の時間コストがかかりません。

必要なのはこれです:プロバイダー非依存の抽象化(上記のラッパー)、テスト済みのフォールバック経路、そしてサブのモデルでも許容できる出力を生成できるほど一貫したプロンプト。

Why agent platforms have an advantage here

これらをすべて自分で作り込むのは、手ごろとは言えないインフラの塊です。ベンダーごとのSDK、プロンプト移植性テスト、評価(eval)ハーネス、フォールバックロジック、ベンダー間の請求の突合。こうしたものは作れるものですが、ちゃんとできているのは稀です。特にAI作業がより大きなプロダクトの一部に過ぎない、小規模な会社ではなおさらです。

だからエージェントプラットフォームを使うのが実際の解です。Klawsはプロバイダーを完全に抽象化します——あなたはエージェントに何をさせたいかを説明するだけで、内部ではプラットフォームがAnthropic、OpenAI、Google、Moonshotにルーティングし、自動フォールバックも行います。新しいモデルがリリースされたら、みんな同時にそれに入れ替わります。あなたが何もしなくても、エージェントはより速く、より安くなります。

だから、私たちのFast and Deepモードの料金は、今春にGemini 3 FlashとQwen 3.6 Plusがそれまでのデフォルトに置き換わっても変わりませんでした——裏側ではルーティングが変わりましたが、価格は変わっていないからです。

A migration checklist

もし特定の1つのモデルに縛られていて、次の入れ替えを手間なく行いたいなら:

  1. コードが特定のモデル名を参照している箇所を洗い出します。それらを1つの設定に集約してください。
  2. 最もリスクの高い20タスクを含むevalスイートを作ります。現行モデルでスコアを出してベースラインを作ります。
  3. 少なくとも1つの代替プロバイダーでevalを実行します。何がどれだけ後退するのか、その理由をメモします。
  4. 少なくとも1つの障害シナリオに対するフォールバック経路を追加します。テストしてください。
  5. ファインチューニングの内容をアプリケーションのロジックから切り離すか、ファインチューニングをプロンプト+リトリーバルに置き換えます。

これを一度やったチームは、モデルのリリースに悩まなくなります。評価して、より良ければ入れ替えて、次へ進むだけです。残りのチームは、ロードマップを移行に費やします。

3日間無料でKlawsを試す → — ルーティングと切り替えはすでに組み込まれています。あなたはやりたいことを説明するだけです。

詳しくは:エージェントに最適なAIモデルの選び方高速モデルと深いモデルをミックスする方法、および2026年のモデル・リーダーボード