Skip to main content
本ガイドでは、LangChain を使用して SambaNova のモデルと連携する手順を、セットアップからインスタンス化、呼び出し、ストリーミング、チェーンの構築まで解説します。LangChain は、LLM (大規模言語モデル) を活用したアプリケーションを開発するためのソフトウェアフレームワークです。

前提条件

作業を始める前に、以下の環境を準備してください。
  • SambaCloud のアカウントと API キー。API キーと URL をご参照ください。
  • Python 3.10 以上。langchain-sambanova のバージョン 1.x は Python 3.10 以上を必要とします。Python 3.9 では、pip はエラーを報告する代わりに、はるかに古い 0.2.0 リリースをインストールしてしまいます。

セットアップ

ChatSambaNova モデルを使用するには、以下の手順を実行してください。
  1. SambaCloud のアカウントを作成し、API キーを取得します。
  2. 以下のコマンドを実行して、連携パッケージ langchain-sambanova をインストールします。
バージョンの範囲指定は残してください。リリース 1.0.0 では ChatSambaNovaCloud クラスと ChatSambaStudio クラスが削除されており、このパッケージは破壊的変更を含むメジャーリリースを実際に出しています。範囲を指定しない pip install langchain-sambanova では、本ページの例が動作しなくなる将来のメジャーバージョンを取得してしまう可能性があります。
インストールしたバージョンを確認します。
以下のような出力が表示されるはずです。

認証情報の設定

cloud.sambanova.ai で取得した API キーを環境変数として登録します。ChatSambaNova は SAMBANOVA_API_KEY を自動的に読み取るため、コード内でキーを渡す必要はありません。
Python セッションやノートブックの中からキーを設定する場合は、ソースコードにハードコードする代わりに、実行時に入力を求めるようにします。
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) はスキーマの一部として送信されるため、丁寧に書く価値があります。

トラブルシューティング

スクリプトを実行する環境に環境変数が設定されていません。認証情報の設定 の手順どおりにエクスポートするか、ChatSambaNova に api_key="..." を渡してください。
キーが誤っているか、失効しているか、余分な引用符や改行が混入しています。cloud.sambanova.ai/apis で新しいキーを生成してください。
ChatSambaNovaCloud は langchain-sambanova 1.0.0 で削除され、現在は引数を受け取らない空の非推奨スタブになっています。モデルのインスタンス化 のとおり、代わりに ChatSambaNova を使用してください。
ChatSambaNovaCloud のみを提供していた 0.1.x を使用しています。pip install -U "langchain-sambanova>=1.1,<2" でアップグレードしてください。
Python 3.9 以前を使用しています。バージョン 1.x は Python 3.10 以上を必要とします。Python をアップグレードしてから再インストールしてください。
バージョン 1.x はベース URL を SAMBANOVA_API_BASE から読み取ります。SAMBANOVA_URL は 0.1.x の環境変数で、現在は効果がありません。
ティアで許可されているリクエスト数を超過しました。間隔を空けて再試行するか、同時実行数を減らしてください。適用される制限は レート制限 をご参照ください。
応答がスキーマに対して有効な JSON ではありませんでした。これは構造化出力に対応していないモデルで発生します。Function calling でモデルの対応状況を確認し、深くネストしたスキーマは簡素化してください。
モデルがツールを呼び出さないことを選択したか、ツール呼び出しに対応していません。Function calling で対応状況を確認し、ツールをいつ使うべきかを docstring に明確に記述してください。

参考情報

詳細については、以下のリソースをご参照ください。