リクエストのキャッシュを有効にする
wandb-cache-mode リクエストヘッダーに、次のいずれかのモードを設定します。
キャッシュをバイパスするには、このヘッダーを省略します。
OpenPipe クライアントとの互換性を保つため、プロキシは非推奨の
op-cache ヘッダーも受け入れます。このヘッダーでは同じモードを使用できるほか、readWrite のエイリアスとして true を、キャッシュをバイパスする値として false を指定できます。リクエストで両方のヘッダーを送信する場合は、両方で同じモードを指定する必要があります。異なるモードを指定すると、プロキシは 400 Bad Request を返します。
- Python
- JavaScript
- cURL
readWrite または readOnly)、応答には値が hit または miss の wandb-cache-status ヘッダーが含まれます。プロキシは、互換用の x-wandb-cache ヘッダーでも同じ値を返します。writeOnly リクエストへの応答には、どちらのヘッダーも含まれません。
2 つのリクエストが同一と見なされる条件
プロキシは、project のバージョンとルーティングリビジョンを解決した後、プロバイダーを選択する前に、キャッシュされた応答を検索します。キャッシュキーは次の値を組み合わせたものです。- プロキシが
modelの値から解決する W&B の entity、project、および project のバージョン。 - リクエストの到着時にそのバージョンに適用されているルーティングリビジョン。
- リクエストのパスとクエリ文字列。
- オブジェクトキーをソートしてシリアライズし、次に示す値を除外したリクエストボディの SHA-256 ハッシュ。
- 生の
model文字列。解決後の project、バージョン、ルーティングリビジョンはすでにキーに含まれているため、エントリを共有するのは同等の参照どうしに限られます。たとえば、ticket-classifierとticket-classifier@v1はどちらもバージョン 1 に解決されます。異なるバージョン間でエントリが共有されることはありません。 wandb.で始まるメタデータキー (wandb.entityやwandb.thread_idなど)。stream: false。プロキシはこれをstreamを省略した場合と同じように扱います。- 空の
metadataオブジェクト。プロキシはこれをmetadataを省略した場合と同じように扱います。
messages、tools、tool_choice、response_format、temperature、top_p、max_tokens、seed、n、stop、user、プロバイダー固有のフィールド、および gen_ai.conversation.id や user.id など wandb. で始まらないメタデータキーがあります。オブジェクト内のキーの順序は影響しませんが、messages などの配列内の項目の順序は影響します。
エントリのスコープは、お使いの W&B の entity と project に限定されます。別の entity からの同一リクエストや、同じ entity 内の別の project に対するリクエストが、お使いのエントリと一致することはありません。
キャッシュされた応答には、その応答を生成したルーティングターゲットが記録されます。キャッシュヒット時、プロキシは重み付けルーティングやスティッキールーティングを適用せず、そのターゲットの応答を返します。
provider/model を直接指定するリクエストでもキャッシュヘッダーを設定できます。これらのエントリのキーは、entity、プロバイダー、モデル参照、および呼び出し元の W&B アイデンティティごとに個別に生成されます。これらのエントリが project のエントリと一致することはありません。
制限
キャッシュには次の制限があります。- 非ストリーミングリクエストのみが対象です。
stream: trueを指定したリクエストでキャッシュヘッダーを設定すると、400 Bad Requestが返されます。 - 成功した応答のみが対象です。 プロキシが保存するのは、8 MiB までの 2xx 応答のみです。
- 保持期間は 7 日間です。 エントリは書き込まれてから 7 日後に削除されます。キャッシュヒットしても保持期間は延長されません。
- 無効なモードは拒否されます。
wandb-cache-modeに記載以外の値を指定した場合や、wandb-cache-modeとop-cacheでモードが競合している場合は、400 Bad Requestが返されます。
トレースと Analytics
キャッシュヒットの場合も、プロキシはそれを project のトレースとして記録します。このトレースには元の応答とそのトークン使用量が保持され、cache_hit=true が付与されます。プロバイダーのレイテンシーは記録されません。キャッシュ読み取りを有効にしていても、リクエストがプロバイダーに転送された場合は cache_hit=false が付与されます。
キャッシュヒットでは推論が実行されないため、Analytics ではプロバイダーの利用料金がゼロとして計上されます。一方、トークンの合計には再利用された使用量も含まれます。データセットの作成時には同一の入力が重複排除されるため、再利用された応答によってトレーニング用の行が重複して追加されることはありません。
ブラウザークライアント
プロキシは、クロスオリジンリクエストでwandb-cache-mode および op-cache リクエストヘッダーを許可し、wandb-cache-status、x-wandb-cache、x-proxy-request-id をブラウザー側のコードに公開します。
チャット補完
プロキシによるプロバイダーへのリクエストの構築、ストリーミングの処理、ツールと構造化出力の転送の仕組みについて説明します。