Claude/OpenAI/Geminiを切り替え可能にした設計判断
Claude/OpenAI/Geminiを切り替え可能にした設計判断
求人原稿AIツールを開発するにあたって、AIプロバイダーをClaude・OpenAI・Geminiの3つから選べる仕組みを入れた。「どうせClaudeだけでいいでしょ」と思う人もいるかもしれないが、これには明確な理由がある。
なぜ複数プロバイダー対応したのか
1. コストと速度のバランス
Claudeは高精度だけど、バッチ処理で100件の求人原稿を改善するときはコストがかさむ。OpenAIのGPT-4o-miniやGemini 2.0 Flashなら速度とコストを抑えつつ、そこそこの品質を維持できる。
2. 障害時の冗長性
APIが落ちることはある。特にClaudeは2024-2025年にかけて何度か障害を起こした。メインプロバイダーが落ちても、別のプロバイダーに切り替えられるのは大きい。
3. 用途による使い分け
- 法令チェック:正確性が命。Claude Opus推奨
- 改善提案(軽め):GPT-4o-miniで十分
- スコアリング:Gemini 2.0 Flashで高速処理
実装のポイント
プロバイダー抽象化
各プロバイダーを統一インターフェースでラップした。
// src/lib/ai/providers.ts
interface AIProvider {
analyze(text: string): Promise<AnalysisResult>;
improve(text: string, prompt: string): Promise<string>;
}
これでどのプロバイダーを使っても、呼び出し側のコードは変わらない。
環境変数での切り替え
デフォルトはClaudeだが、設定画面またはユーザーごとの設定でプロバイダーを変更できる。
ANTHROPIC_API_KEY=sk-ant-xxxxx # 必須
OPENAI_API_KEY=sk-xxxxx # 任意
GEMINI_API_KEY=xxxxx # 任意
フォールバック機能
メインプロバイダーがエラーを返したら、自動で別プロバイダーにフォールバックする仕組みも組み込んだ(現在は未実装だが、今後追加予定)。
実際のコスト比較
100件の求人原稿(1件あたり平均1000トークン)を改善した場合:
| プロバイダー | コスト概算 | 処理時間 |
|---|---|---|
| Claude Sonnet 3.5 | $15-20 | 8分 |
| GPT-4o | $10-15 | 5分 |
| Gemini 2.0 Flash | $2-5 | 3分 |
運用コストを考えると、普段はGemini/GPT-4o、重要案件だけClaudeという使い分けがベスト。
まとめ
複数プロバイダー対応は「保険」でもあり「最適化手段」でもある。AIツールを作るなら、最初から設計に組み込んでおくと後が楽。
タグ: #AI活用 #開発実績 #設計判断