あなたのアプリケーションは、すでに OpenAI 互換クライアントの呼び出し方法を把握しています。モデルの選択を追加するために、プロバイダーごとにその統合を作り直す必要はありません。
Flatkey は 1 つの OpenAI 互換ベース URL を提供します。
https://router.flatkey.ai/v1
既存の OpenAI SDK クライアントをその URL に向け、Flatkey の API キーを使い、テストしたいモデルを model フィールドで指定します。リクエストラッパー、プロンプトデータセット、評価基準、アプリケーションコードは、1 つのインターフェースを中心に据えたままで構いません。
そのため Flatkey は、チームがモデル比較を始める準備ができている一方で、プロバイダー固有のアカウント設定やクライアントの書き換えを評価プロジェクトにしたくない場合に、実用的な選択肢になります。
1 つのモデルから候補リストまで、最も摩擦の少ない進め方
典型的なモデル評価は、単純な問いから始まります。別のモデルで、このワークロードの品質、レイテンシ、またはコストを改善できるか?
しかし実装作業が、その問いをすぐに覆い隠してしまうことがあります。統合を分けると、環境変数、認証パターン、再試行の挙動、レスポンスアダプター、ダッシュボード、請求関係まで分かれてしまいます。テストハーネスの準備が整うころには、元のプロンプト実験はインフラプロジェクトに変わっています。
OpenAI 互換のベース URL は、その流れを変えます。1 つのクライアント形状を保ち、モデルを主な変数にします。
| 安定して維持するもの | 意図的に変更するもの | モデルごとに検証するもの |
|---|---|---|
| SDK とリクエストラッパー | base_url を 1 回設定 |
出力品質 |
| プロンプトデータセット | 各実行で model を変更 |
レイテンシ分布 |
| 評価基準 | 必要に応じてモデル固有のパラメータ | トークン使用量とコスト |
| 結果保存 | 妥当性がある場合のみタイムアウトや再試行設定 | ツール利用と構造化出力の挙動 |
| アプリケーション側の可観測性 | 評価後にのみ本番ルーティング | エラーと拒否のパターン |
目的は、すべてのモデルが同じように動くふりをすることではありません。目的は、避けられる統合上のばらつきを取り除き、チームが重要な差異の測定により多くの時間を使えるようにすることです。
SDK 層全体ではなく、ベース URL だけを変更する
すでに OpenAI Python SDK を使っているなら、コアとなるクライアント変更は小さく済みます。
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["FLATKEY_API_KEY"],
base_url="https://router.flatkey.ai/v1",
)
同じパターンは OpenAI JavaScript クライアントでも使えます。
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.FLATKEY_API_KEY,
baseURL: "https://router.flatkey.ai/v1",
});
その後は、リクエスト内で Flatkey の現在のモデルディレクトリからモデル ID を使用します。古いスプレッドシートや記事のモデル前提をハードコードしないでください。モデルの利用可否や機能は変わる可能性があります。
response = client.chat.completions.create(
model=os.environ["EVAL_MODEL_ID"],
messages=[
{"role": "system", "content": "提供されたポリシーを使用して回答してください。"},
{"role": "user", "content": evaluation_prompt},
],
temperature=0,
max_tokens=800,
)
これが導入上の中核的な利点です。評価でモデルの選択を変えても、アプリケーションは OpenAI 互換クライアントを維持できます。
焦点を絞った複数モデルのプロンプトテストワークフロー
次のワークフローを使って、ベース URL の移行を、チームが自信を持って説明できる判断に変えましょう。
1. リクエスト契約を固定する
まず、すでに本番ワークロードを表している 1 つのリクエストから始めます。最初の比較フェーズでは、以下を固定してください。
- システムプロンプトとユーザープロンプト
- 入力例
- temperature とトークン制限
- ツール定義またはレスポンススキーマ
- タイムアウトポリシー
- 評価ルーブリック
プロンプト、モデル、再試行ポリシーを同時に変更すると、どの変更が結果を生んだのか分からなくなります。
2. 小さく代表的な評価セットを作成する
何百もの合成プロンプトから始めないでください。ユーザーが実際に作成するケースをカバーする 20〜50 件の例から始めます。
- 一般的で頻度の高いリクエスト
- 長い入力や乱雑な入力
- あいまいな指示
- 安全性に敏感、または拒否が発生しやすいケース
- 構造化出力のエッジケース
- アプリケーションがツールを使用する場合は、ツール呼び出しのケース
評価トラフィックを送る前に、個人データとシークレットを削除してください。最良の評価セットは、検査できる程度に小さく、かつ意味のある失敗を明らかにできるほど代表的です。
3. 同じケースを各候補モデルに通す
Flatkey のベース URL とリクエストラッパーは固定します。候補リストにあるモデル ID を順に試してください。
import time
candidate_models = [
"MODEL_ID_A",
"MODEL_ID_B",
"MODEL_ID_C",
]
results = []
for model_id in candidate_models:
for case in evaluation_cases:
started_at = time.perf_counter()
try:
response = client.chat.completions.create(
model=model_id,
messages=case["messages"],
temperature=0,
max_tokens=case.get("max_tokens", 800),
)
elapsed_ms = round((time.perf_counter() - started_at) * 1000)
results.append({
"case_id": case["id"],
"model": model_id,
"latency_ms": elapsed_ms,
"output": response.choices[0].message.content,
"usage": response.usage.model_dump() if response.usage else None,
"error": None,
})
except Exception as error:
results.append({
"case_id": case["id"],
"model": model_id,
"latency_ms": None,
"output": None,
"usage": None,
"error": type(error).__name__,
})
共有の例ではプレースホルダーを使用し、テストを実行する前にライブディレクトリから現在のモデル ID を選択してください。また、候補となる各モデルが、ワークロードに必要な機能をサポートしていることも確認してください。
4. モデルの評判ではなく、結果を採点する
役立つスコアカードは、必須要件と好みを分けて考えます。
| Dimension | Example question | Suggested treatment |
|---|---|---|
| Correctness | Did the response satisfy the task? | Human or task-specific grader |
| Instruction following | Did it obey constraints and format? | Pass/fail plus notes |
| Structured output | Did the payload parse and match the schema? | Automated validation |
| Tool behavior | Were calls valid and appropriately selected? | Automated checks plus review |
| Latency | How long did successful requests take? | Median and tail percentiles |
| Reliability | How often did requests fail or time out? | Error rate by class |
| Usage | How many input and output tokens were reported? | Per-case and aggregate |
| Cost | What would the evaluated workload cost? | Calculate with current pricing |
たとえ安価であっても、必須要件を満たさない候補は除外してください。残ったモデルについては、自社製品にとって重要なトレードオフを比較します。
5. 本番の動作で最終候補を再テストする
最初のパスは制御された条件で行うべきです。最終候補のパスは現実的であるべきです。
インターフェースがストリーミングするならストリーミングをテストしてください。エージェントがツールを使うならツール呼び出しをテストしてください。下流のコードが構造化出力を解析するなら構造化出力をテストしてください。実際のタイムアウトとリトライ設定を適用し、アプリケーションがレート制限、中断されたストリーム、不正な形式の応答、あいまいな完了状態をどう処理するかを検証してください。
Flatkey's Usage Logs を使えば、リクエストがゲートウェイに到達したことの確認や、リクエストアクティビティの確認に役立ちます。アプリケーション側のリクエスト ID とタイミングデータも保持して、ゲートウェイの可視性とユーザー体験を結び付けられるようにしてください。
リトライと切り替えの詳細については、レート制限とリトライに関する OpenAI クライアント移行ガイドを参照してください。
互換性は出発点であり、同一の動作を保証するものではない
OpenAI 互換 API は、クライアント移行の作業を軽減します。しかし、異なるモデルを互換的に入れ替えられるようにするものではありません。
本番でモデルを承認する前に、次を確認してください。
- 正確なモデル ID が現在利用可能である。
- 必要なエンドポイントとモダリティをそのモデルがサポートしている。
- 必要なパラメータが受け入れられ、期待どおりに動作する。
- ツール呼び出し、JSON または構造化出力、ストリーミングがテストに合格する。
- トークン上限が実際の入力と出力に適合している。
- 安全性の挙動が製品要件に一致している。
- タイムアウト、リトライ、エラー処理が重複した作業やあいまいな作業を生まない。
- 現在の価格設定が想定されるトラフィック構成に適合している。
より広範なエンジニアリング用チェックリストが必要な場合は、OpenAI 互換 API ゲートウェイ移行ガイドをご覧ください。このページは意図的に範囲を絞っています。すでに移行パターンを理解しており、1 つのベース URL の変更を公平な複数モデルテストに変えたいチーム向けです。
実運用への切り替えのための実践的チェックリスト
各項目に「はい」と答えられる場合にのみ、評価から本番へ移行してください。
- リクエストの整合性: 最終候補は、実際のプロンプト、メッセージ、ツール、出力パターンで動作する。
- 品質しきい値: ルーブリック内の厳格な要件を満たしている。
- 障害対応: アプリケーションがレート制限、タイムアウト、中断された応答を安全に処理できる。
- 可観測性: モデル、レイテンシー、使用量、エラー種別、アプリケーションのリクエスト識別子を記録している。
- コストモデル: 現在の価格と現実的なトークン使用量から想定支出を算出している。
- ロールバック: コードリリースなしで、以前のモデルや構成に戻せる。
- カナリア計画: 本番展開前に変更を限定的なトラフィックに公開できる。
安定したインターフェースにより、統合面が一貫したままなので、ロールバックや反復テストが容易になります。モデルの選定を変更しても、そのたびにプロバイダー固有の新しいクライアント層をアプリケーションへ組み込む必要がありません。
1 つのベース URL と実際のワークロードから始める
チームですでに OpenAI 互換 SDK を使っているなら、次に有効なのは、もう一度アーキテクチャを議論することではありません。自分たちのプロンプトを使った管理されたテストです。
- Flatkey アカウントと API キーを作成します。
base_urlをhttps://router.flatkey.ai/v1に設定します。- 現在のディレクトリから小規模なモデル候補リストを選びます。
- 同じ代表的なケースを各モデルに実行します。
- 品質、レイテンシー、信頼性、使用量、現在のコストをまとめて確認します。
現在のモデル価格を比較して候補を選び、アプリケーションがすでに使っている同じクライアントで最初の評価を実行してください。
よくある質問
Flatkey の OpenAI 互換ベース URL とは何ですか?
https://router.flatkey.ai/v1 を使用します。OpenAI 互換クライアントに設定し、Flatkey API キーで認証してください。
OpenAI SDK を置き換える必要がありますか?
いいえ。Flatkey のクイックスタートでは、Flatkey のベース URL と OpenAI Python および JavaScript SDK を使う方法が記載されています。ただし、アプリケーションが依存するすべてのリクエスト機能とモデル機能は、引き続きテストする必要があります。
同じプロンプトコードで複数のモデルを比較できますか?
はい。クライアント、プロンプトデータセット、評価ロジックを安定させ、そのうえで各候補の model 値だけを変更します。モデル固有の機能とパラメータは、引き続き検証が必要です。
OpenAI 互換性は、モデルの動作が同一という意味ですか?
いいえ。互換性は統合変更を減らします。モデルは、出力品質、ツール使用、構造化出力の挙動、レイテンシー、制限、安全性の挙動、コストが異なる場合があります。
複数モデルテストでは何を測定すべきですか?
タスクの正確性、指示の遵守、スキーマまたはツールの妥当性、レイテンシー、エラー率、トークン使用量、現在のコストを測定します。好みを比較する前に、厳格な要件を定義してください。
モデルの価格はどこで確認すればよいですか?
価格を長期運用する評価ドキュメントに転記するのではなく、Flatkey の最新の料金ページを使用してください。



