前提条件
作業を始める前に、以下の環境を準備してください。- SambaCloud アカウントと API キー。API キーをお持ちでない場合は、SambaCloud ポータル から取得してください。
- OpenRouter アカウントと API キー。API キーは OpenRouter のキー管理ページ で取得できます。Python のサンプルコードは、これを環境変数
OPENROUTER_API_KEYから読み取ります。 - OpenRouter アカウントのクレジット。BYOK のリクエストにも OpenRouter のプラットフォーム手数料が発生し、SambaCloud アカウントではなく OpenRouter のクレジット残高に課金されます。詳細は 請求 をご参照ください。
- Python 3.10 以上。
openrouterパッケージはrequires_python >=3.10を宣言しているため、Python 3.9 以前ではpip installが失敗します。
セットアップ
BYOK 機能を使用して SambaNova API キーを OpenRouter に接続するには、以下の手順に従ってください。1
BYOK 設定に移動
OpenRouter の BYOK 設定 を開くか、OpenRouter ダッシュボードで 「Settings」>「BYOK」 に移動します。BYOK キーは OpenRouter のワークスペース単位で管理されており、このリンクはデフォルトのワークスペースを開きます。

2
プロバイダーとして SambaNova を選択
プロバイダーリストで SambaNova を検索し、選択します。

3
SambaCloud API キーの追加
「Key」 フィールドに SambaCloud の API キーを入力し、「Enabled」 はオンのままにして、「Save」 をクリックします。保存する前に 「Test」 をクリックしてください。OpenRouter がそのキーで SambaNova を呼び出して結果を報告するため、後からアプリケーション側でデバッグすることなく、キーが有効かどうかをその場で確認できます。

4
OpenRouter キャパシティへのフォールバック可否の選択
「Always use for this provider」 はデフォルトでオフになっています。オフの間は、お使いのキーがレート制限を受けたり拒否されたりするたびに、OpenRouter は自身の共有 SambaNova キャパシティにフォールバックし、それらのリクエストを SambaCloud アカウントではなく OpenRouter クレジットに課金します。すべての SambaNova リクエストを必ずご自身のキー経由にしたい場合は、オンにしてください。その場合、暗黙のフォールバックは行われず、レート制限エラーが返されます。
対応モデル
OpenRouter では、SambaCloud のモデル ID ではなく、OpenRouter 独自のスラッグ (slug) でモデルを指定します。以下の SambaNova ホストのモデルは、OpenRouter 上のsambanova プロバイダー (BYOK キーの登録先となるプロバイダー) から提供されています。
最新のリストは、BYOK ダイアログの 「View SambaNova supported models」 をクリックするか、OpenRouter の SambaNova プロバイダーページ でご確認ください。コンテキスト長と対応モダリティについては、SambaCloud モデル をご参照ください。
Python SDK の利用
OpenRouter SDK をインストールします。provider={"only": ["sambanova"]} を設定するとルーティングが SambaNova に固定され、OpenRouter は共有の SambaNova キャパシティより先に BYOK キーを試します。
ChatResult であり、response.choices[0].message.content に生成されたテキストが格納されます。
ご自身のキーが使用されたことの確認
レスポンスが成功しただけでは、OpenRouter が自身の共有キャパシティではなく、ご自身の SambaCloud キーを使用したことの証明にはなりません。ルーターメタデータを有効にしてis_byok を確認します。
x_open_router_metadata="enabled" は X-OpenRouter-Metadata: enabled ヘッダーを送信し、レスポンスに openrouter_metadata オブジェクトを追加します。is_byok は、リクエストがご自身のプロバイダーキーで処理された場合に True、OpenRouter の共有キャパシティで処理された場合に False になります。
エラー処理
キーの拒否やクォータの枯渇が、トレースバックではなく読みやすいメッセージとして表示されるよう、呼び出しをラップします。OpenRouterError は SDK が送出するすべての HTTP エラーの基底クラスで、status_code、message、body を公開しています。特定のステータスで処理を分岐したい場合は、UnauthorizedResponseError (401) や TooManyRequestsResponseError (429) などのサブクラスを捕捉してください。
請求
OpenRouter で BYOK (Bring Your Own Key) を使用する場合は、以下の点にご注意ください。
- 推論の料金は、ご自身の SambaCloud API キーを使用して SambaNova に直接支払います。
- OpenRouter は、同じモデルとプロバイダーを OpenRouter の標準料金で利用した場合の金額に基づいて、5% のプラットフォーム手数料を請求します。
- 手数料は、SambaCloud アカウントではなく OpenRouter クレジットから差し引かれます。
- 各プランには、リクエスト数ではなく定価ベースの推論コストで測定される、毎月の BYOK 無料枠が含まれます。Pay-as-you-go プランは月 25,000 ドル分、Enterprise プランは月 200,000 ドル分です。詳細は OpenRouter の料金ページ をご参照ください。
トラブルシューティング
SambaNova に対する 429 Too Many Requests
SambaNova に対する 429 Too Many Requests
SambaCloud アカウントのレート制限に達しています。アカウントの制限値は レート制限 でご確認のうえ、バックオフを入れて再試行してください。
利用可能なプロバイダーがなくリクエストが失敗する
利用可能なプロバイダーがなくリクエストが失敗する
リクエストしたモデルに
sambanova エンドポイントがないため、provider={"only": ["sambanova"]} ではルーティング先がなくなります。対応モデル のスラッグを使用してください。成功レスポンスで is_byok が False になる
成功レスポンスで is_byok が False になる
キーが無効化されているか、レート制限を受けたか、拒否されたため、リクエストが OpenRouter の共有 SambaNova キャパシティにフォールバックしています。キーを修正したうえで、「Always use for this provider」 をオンにするとフォールバックを止められます。
pip install が失敗する、または想定外のバージョンが解決される
pip install が失敗する、または想定外のバージョンが解決される
openrouter パッケージには Python 3.10 以上が必要です。python3 --version で確認し、対応バージョンのインタープリターで作成した仮想環境にインストールしてください。provider_responses フィールドをご確認ください。

