sambanova プロバイダーが用意されているため、SambaCloud のモデルは sambanova/<model-id> の形式で指定でき、エンドポイントは LiteLLM が自動的に設定します。ベース URL を設定する必要はありません。
前提条件
作業を始める前に、以下の環境を準備してください。- 有効な API キーを取得済みの SambaCloud アカウント
- Python 3.10 〜 3.14。
litellmは Python 3.9 以前および Python 3.15 以降をサポートしていません。 - SambaCloud モデル ページに記載のモデル ID。掲載されているすべてのモデルが
sambanova/プレフィックスで利用できます。
インストール
仮想環境を作成して有効化し、LiteLLM をインストールします。litellm 1.96.1 を対象に作成されています。このバージョンに固定するには、代わりに pip install 'litellm==1.96.1' を実行してください。
サンプルコード
API キーがソースファイルに残らないよう、環境変数としてエクスポートします。first_call.py として保存します。
completion() は ModelResponse を返します。回答は response.choices[0].message.content にプレーンな文字列として格納されており、必要に応じて id、model、created、choices[0].finish_reason も参照できます。
別のモデルを使用するには、sambanova/ の後の文字列を SambaCloud モデル ページに記載の任意の ID に変更します。呼び出しの他の部分は変わりません。
高度なオプション
LiteLLM は SambaNova のリクエストパラメータをそのまま API に引き渡します。以下は、トークン数とサンプリングの制御を指定しつつ、JSON 形式のレスポンスを要求する例です。response_format={"type": "json_object"} を指定しても、content はディクショナリではなく、JSON を含む文字列のままです。前の例の response を再利用して、使用する前にパースしてください。
レスポンスのストリーミング
モデルが生成したトークンを逐次受け取るには、stream=True を渡します。ストリーミングでは、単一の ModelResponse の代わりにチャンクのイテレーターが返され、テキストは chunk.choices[0].delta.content に格納されます。このフィールドは最後のチャンクで None になるため、以下の or "" によって、ストリーム終端での print() の失敗を防いでいます。
呼び出しコストの確認
litellm.completion_cost() は、LiteLLM に同梱されている価格表に基づいて計算したレスポンスのコストを米ドルで返します。
LiteLLM の価格表は SambaNova ではなく LiteLLM プロジェクトが管理しており、料金改定への追随が遅れる場合があります。請求に関しては SambaCloud の料金 ページを正としてください。
フォールバックによる複数モデルへのルーティング
fallbacks を渡すと、LiteLLM はリクエストが失敗したときに例外を送出する代わりに、他のモデルで再試行します。LiteLLM はまず model を試し、次に fallbacks の各エントリを順番に試して、最初に成功したレスポンスを返します。すべての試行が失敗した場合は、最後のエラーを送出します。
response.model は、どのモデルが回答を生成したかを示します。LiteLLM は各エントリを独立して解決するため、そのプロバイダーの API キーを環境変数に設定してあれば、フォールバックリストでプロバイダーをまたぐこともできます。
LiteLLM プロキシの実行
プロキシはモデルの前段に OpenAI 互換エンドポイントを配置するため、任意の OpenAI クライアントがコードを変更せずに SambaCloud へ接続できます。プロキシの依存パッケージをインストールします。config.yaml を作成します。model_name はクライアントがリクエストで指定するエイリアスで、litellm_params.model が実際の SambaNova モデルです。キーをファイルに保存せず環境変数から読み取るよう、os.environ/ プレフィックスを使用します。
トラブルシューティング
command not found: python
command not found: python
macOS には
python 実行ファイルが用意されておらず、python3 のみが提供されます。仮想環境の作成には python3 -m venv .venv を使用してください。source .venv/bin/activate で有効化した後は、環境内で python が期待どおりに動作します。AuthenticationError: SambanovaException - Incorrect API key provided
AuthenticationError: SambanovaException - Incorrect API key provided
SAMBANOVA_API_KEY が未設定か、値が誤っています。LiteLLM は呼び出し時に環境変数からキーを読み取るため、このエラーはインポート時ではなく completion() の呼び出し時に発生します。echo $SAMBANOVA_API_KEY で確認してください。なお、export は実行したシェルにのみ適用されます。BadRequestError: LLM Provider NOT provided
BadRequestError: LLM Provider NOT provided
モデル名に
sambanova/ プレフィックスがありません。LiteLLM はこのプレフィックスからプロバイダーを選択するため、モデルは Meta-Llama-3.3-70B-Instruct ではなく sambanova/Meta-Llama-3.3-70B-Instruct と記述する必要があります。NotFoundError: The model does not exist or you do not have access to it
NotFoundError: The model does not exist or you do not have access to it
sambanova/ の後のモデル ID が誤っているか、すでに提供されていません。モデル ID は大文字と小文字を区別するため、sambanova/Meta-Llama-3.3-70B-Instruct は成功しても sambanova/meta-llama-3.3-70b-instruct は失敗します。SambaCloud モデル ページで ID を確認し、モデルが提供終了になっている場合は 提供終了モデル ページで代替モデルを確認してください。モデルが JSON ではなく通常の文章を返す
モデルが JSON ではなく通常の文章を返す
response_format={"type": "json_object"} は出力形式を制約しますが、高度なオプションの例のように、プロンプト自体でも JSON を要求するべきです。選択したモデルが構造化出力に対応していることを、SambaCloud モデル ページで確認してください。プロキシがモジュール不足のエラーで起動しない
プロキシがモジュール不足のエラーで起動しない
pip install litellm では litellm コマンドはインストールされますが、uvicorn や fastapi など、プロキシに必要なサーバー側の依存パッケージはインストールされません。有効化した仮想環境内で pip install 'litellm[proxy]' を実行してください。zsh は引用符なしの角括弧をグロブパターンとして扱うため、引数は引用符で囲んでください。Python では動作するモデル名に対して、プロキシが model not found エラーを返す
Python では動作するモデル名に対して、プロキシが model not found エラーを返す
プロキシへのリクエストでは、
sambanova/<model-id> 文字列ではなく、config.yaml の model_name エイリアスを使用します。定義したエイリアスが llama-3.3-70b であれば "model": "llama-3.3-70b" を送信し、sambanova/ プレフィックスは litellm_params.model の中でのみ使用してください。
