前提条件
作業を始める前に、以下の環境を準備してください。- SambaCloud のアカウントと API キー。API キーと URL をご参照ください。
- Python 3.10 以上。
langchain-sambanovaのバージョン 1.x は Python 3.10 以上を必要とします。Python 3.9 では、pip はエラーを報告する代わりに、はるかに古い 0.2.0 リリースをインストールしてしまいます。
セットアップ
ChatSambaNova モデルを使用するには、以下の手順を実行してください。- SambaCloud のアカウントを作成し、API キーを取得します。
- 以下のコマンドを実行して、連携パッケージ
langchain-sambanovaをインストールします。
バージョンの範囲指定は残してください。リリース 1.0.0 では
ChatSambaNovaCloud クラスと ChatSambaStudio クラスが削除されており、このパッケージは破壊的変更を含むメジャーリリースを実際に出しています。範囲を指定しない pip install langchain-sambanova では、本ページの例が動作しなくなる将来のメジャーバージョンを取得してしまう可能性があります。認証情報の設定
cloud.sambanova.ai で取得した API キーを環境変数として登録します。ChatSambaNova は SAMBANOVA_API_KEY を自動的に読み取るため、コード内でキーを渡す必要はありません。
SambaCloud ユーザーに必要なのは API キーのみです。リクエストはデフォルトで
https://api.sambanova.ai/v1 に送信されます。SambaStack ユーザーは、これに加えて SAMBANOVA_API_BASE にデプロイメントの URL を設定するか、ChatSambaNova に base_url を渡します。モデルのインスタンス化
以下の例のように、ChatSambaNova モデルオブジェクトをインスタンス化し、chat completion を生成できます。 以下は、Meta 社の Llama 3.3 70B 向けに構成した ChatSambaNova モデルオブジェクトを作成する例です。SambaCloud が現在提供している任意のモデル ID を指定できます。モデルカタログは随時変更されるため、SambaCloud モデル で ID を確認するか、
curl https://api.sambanova.ai/v1/models で直接一覧を取得してください。モデルの呼び出し
システムプロンプトとユーザーメッセージをモデルに渡します。ストリーミング
モデルが生成したトークンを逐次表示するには、invoke() の代わりに stream() を呼び出し、各チャンクの content を出力します。各チャンクは AIMessageChunk であり、それぞれの content の値を連結すると完全な応答が再現されます。
チェーンの構築
プロンプトテンプレートとモデルを組み合わせてチェーンを構築し、翻訳先の言語を動的に扱えるようにします。ツール呼び出し
bind_tools を使って Python 関数をモデルにバインドします。LangChain は各関数のシグネチャと docstring を JSON Schema に変換し、リクエストの tools フィールドで送信します。つまり、その関数をいつ呼び出すべきかをモデルに伝えるのは docstring です。
response.tool_calls は空になります。呼び出しが行われた前提で処理せず、response.tool_calls の有無で分岐してください。
ツール呼び出しには、対応するモデルが必要です。現在の対応モデル一覧は Function calling をご参照ください。
Meta-Llama-3.3-70B-Instruct は対応していますが、gemma-4-31B-it は非対応です。非対応モデルでは、リクエストは通常のテキスト回答を返すだけで、ツールが無視されたことを示すエラーは発生しません。構造化出力
with_structured_output を使用すると、テキストの代わりに検証済みの Pydantic オブジェクトを取得できます。この機能はツール呼び出しを使用しません。スキーマを type: json_schema の response_format として送信し、応答をモデルクラスにパースするため、Function calling ではなく構造化出力のサポートに依存します。
Ticket インスタンスであるため、ticket.priority は型付けされ、Literal の範囲外の値はコードに渡る前に拒否されます。フィールドの説明 (description) はスキーマの一部として送信されるため、丁寧に書く価値があります。
トラブルシューティング
SambaNovaError: The api_key client option must be set
SambaNovaError: The api_key client option must be set
スクリプトを実行する環境に環境変数が設定されていません。認証情報の設定 の手順どおりにエクスポートするか、
ChatSambaNova に api_key="..." を渡してください。AuthenticationError: Error code: 401 invalid_api_key
AuthenticationError: Error code: 401 invalid_api_key
キーが誤っているか、失効しているか、余分な引用符や改行が混入しています。cloud.sambanova.ai/apis で新しいキーを生成してください。
TypeError: object.__init__() takes exactly one argument with ChatSambaNovaCloud
TypeError: object.__init__() takes exactly one argument with ChatSambaNovaCloud
ChatSambaNovaCloud は langchain-sambanova 1.0.0 で削除され、現在は引数を受け取らない空の非推奨スタブになっています。モデルのインスタンス化 のとおり、代わりに ChatSambaNova を使用してください。ImportError: cannot import name 'ChatSambaNova' from 'langchain_sambanova'
ImportError: cannot import name 'ChatSambaNova' from 'langchain_sambanova'
ChatSambaNovaCloud のみを提供していた 0.1.x を使用しています。pip install -U "langchain-sambanova>=1.1,<2" でアップグレードしてください。最新リリースを指定しても pip が 0.2.0 をインストールする
最新リリースを指定しても pip が 0.2.0 をインストールする
Python 3.9 以前を使用しています。バージョン 1.x は Python 3.10 以上を必要とします。Python をアップグレードしてから再インストールしてください。
SAMBANOVA_URL が無視されているように見える
SAMBANOVA_URL が無視されているように見える
バージョン 1.x はベース URL を
SAMBANOVA_API_BASE から読み取ります。SAMBANOVA_URL は 0.1.x の環境変数で、現在は効果がありません。RateLimitError: Error code: 429 rate limit exceeded
RateLimitError: Error code: 429 rate limit exceeded
ティアで許可されているリクエスト数を超過しました。間隔を空けて再試行するか、同時実行数を減らしてください。適用される制限は レート制限 をご参照ください。
OutputParserException: Invalid json output from with_structured_output
OutputParserException: Invalid json output from with_structured_output
応答がスキーマに対して有効な JSON ではありませんでした。これは構造化出力に対応していないモデルで発生します。Function calling でモデルの対応状況を確認し、深くネストしたスキーマは簡素化してください。
response.tool_calls が空で、モデルが文章で回答する
response.tool_calls が空で、モデルが文章で回答する
モデルがツールを呼び出さないことを選択したか、ツール呼び出しに対応していません。Function calling で対応状況を確認し、ツールをいつ使うべきかを docstring に明確に記述してください。
参考情報
詳細については、以下のリソースをご参照ください。- ChatSambaNova ドキュメント
- SambaNova-LangChain ドキュメント
- LangChain 公式ドキュメント
- LangChain と SambaNova を使用したエンドツーエンドのコード例
- SambaNovaEmbeddings ドキュメント。Embedding モデルは SambaCloud ではなく SambaStack 上で動作します。Embedding (埋め込み) 機能の実装 をご参照ください。

