OpenAI-Project ヘッダーで project を選択します。そのうえで、model フィールドによって project の重み付きルーティングとモデルのオーバーライドのどちらを使うかが決まり、metadata["forge.project_version"] によって project のバージョンが決まります。
project の選択
値は[ENTITY]/[PROJECT] の形式です。[PROJECT] は project の Weights & Biases 上のプロジェクト名 (project フィールド) であり、project のエイリアスではありません。project の作成時に別のプロジェクト名を指定した場合を除き、この 2 つは同じです。Studio では、この値が project のヘッダーと project の設定ページに表示され、そのままコピーできます。
project オプション (Python では OpenAI(project=...)、JavaScript では new OpenAI({ project }) など) または OPENAI_PROJECT_ID 環境変数の値をヘッダーとして送信します。
重み付きルーティング
model が router の場合、空の場合、または省略されている場合は、選択したバージョンの重み付きルーティングが使用されます。プロキシは重みが正のターゲットの中から 1 つを選択して model を置き換え、そのターゲットのパラメーターを適用したうえで、ターゲットのプロバイダーを呼び出します。
OpenAI-Project ヘッダーを使用している場合、model に project のエイリアスまたは alias@vN を指定すると 400 が返されます。バージョンは forge.project_version で指定してください。
バージョンの固定
"3" のように string として送信してください。プロキシは整数も受け入れます。forge.project_version を省略するとバージョン 1 が選択されます。これは固定のデフォルトであり、最新バージョンに切り替わることはありません。新しいバージョンをパブリッシュしてもバージョン 1 は変更されないため、アプリケーションにロールアウトする前に新しいバージョンを安全にテストできます。
存在しないバージョンを指定すると、404 とともに Project 'your-team/ticket-classifier' has no version 3 が返されます。forge.project_version を使用するには OpenAI-Project ヘッダーが必要です。このヘッダーがない場合、リクエストは 400 を返します。
モデルのオーバーライド
OpenAI-Project ヘッダーを指定すると、provider/model-id 形式の値でリクエスト単位にモデルを上書きできます。最初のスラッシュより前の接頭辞で、project の entity に登録されているプロバイダーを選択します。wandb-inference などの組み込みプロバイダーも選択できます。残りの部分には、プロバイダーで設定済みのモデル ID を指定します。2 つ目以降のスラッシュを含めることもできます。
params_override の値は使用されません。オーバーライドは、アドホックなテスト、ルーティングのターゲットに設定する前の学習済みモデルの呼び出し、新しく登録したプロバイダーへトラフィックをルーティングする前の検証などに役立ちます。
トレースでは、ルーティングモードが routing_mode に記録されます。モデルのオーバーライドの場合は override、ルーティングされたトラフィックの場合は weighted になります。オーバーライドは project のトラフィックであるため、データセットの対象になります。オーバーライドで教師モデルを使用した場合は、Studio の Automation がビルドする教師データセットにも含まれます。オーバーライドをデータセットから除外するには、metadata: {"routing_mode": "weighted"} でフィルタリングします。なお、このフィルターでは、routing_mode が導入される前に書き込まれたトレースも除外されます。詳しくは、メタデータとトレースを参照してください。
entity の解決
OpenAI-Project で指定する entity は、呼び出し元の個人 entity か、呼び出し元が所属する Weights & Biases チームのいずれかである必要があります。プロキシは project のルックアップより前にアクセス権を確認します。そのため、その entity にアクセスできないキーを使用した場合は、project が存在するかどうかにかかわらず 403 が返されます。
entity はヘッダーで指定されるため、個人キーを使用している場合でも、プロキシはチームの project をそのチーム内でルックアップします。
スティッキーな重み付き選択
会話 ID を指定すると、同じルーティングリビジョン内では、1 つの会話のすべての呼び出しを同じターゲットに固定できます。API: 固定した project バージョンを呼び出す (POST /chat/completions)
API: 固定した project バージョンを呼び出す (POST /chat/completions)
OpenAI-Project ヘッダーを送信し、model に router を指定して、forge.project_version を設定します。モデルをオーバーライドする場合は、代わりに model に provider/model-id を指定します。