前提条件
作業を始める前に、以下の環境を準備してください。- 有効な API キーを取得済みの SambaCloud アカウント
- Python 3.10 以降。後述の手順でバージョンを固定している
haystack-ai2.31 は Python 3.10 以降を必要とするため、3.9 ではインストールできません。 - SambaCloud のモデル一覧にあるモデル ID。本ガイドでは
Meta-Llama-3.3-70B-Instructを使用します。
インストールとセットアップ
以下の手順に従って、Haystack のセットアップとインストールを行います。1
仮想環境の作成
2
Haystack のインストール
OpenAIGenerator コンポーネントが削除されたため、バージョンを 2.x 系に固定しています。なお、OpenAIGenerator は 2.x でもすでに非推奨 (deprecated) となっており、実行のたびに警告が表示されます。新規コードには OpenAIChatGenerator を使用することを Haystack は推奨しています。ノートブックの Web ページの例では HTMLToDocument を使って HTML を変換しますが、このコンポーネントには trafilatura が必要です。trafilatura は haystack-ai の依存関係に含まれておらず、extra 経由でも提供されないため、あわせてインストールします。3
API キーの設定
コードにハードコードせずに読み取れるよう、API キーを環境変数として export します。この変数名は重要です。後述のスニペットもサンプルノートブックも
SAMBANOVA_API_KEY を読み取るため、異なる名前にするとキー未設定のエラーになります。最初の呼び出し
ノートブックを開く前に、セットアップをエンドツーエンドで確認します。OpenAIGenerator は OpenAI 互換エンドポイント経由で SambaNova と通信するため、ベース URL と API キーが必要です。以下のコードを first_call.py として保存します。
python first_call.py で実行します。セットアップが正しければ、以下のような 1 文のモデル出力と非推奨の警告が表示されます。
FutureWarning は haystack-ai 2.31 自体が出力するもので、固定したバージョンでは想定どおりの動作であり、結果には影響しません。警告が表示されない場合は 2.x 系のより古いリリースを使用していることになりますが、それでも問題ありません。
ユースケースの例
- Web ページの内容に基づく質問応答 — URL を取得し、
HTMLToDocumentで HTML をテキストに変換してOpenAIGeneratorに渡すことで、そのページの内容に基づいてユーザーの質問に回答します。 - 検索拡張生成 (RAG) パイプラインの構築 —
InMemoryBM25Retrieverでドキュメントをインデックス化し、取得したパッセージに基づいてモデルに質問へ回答させます。Embedding モデルや 2 つ目の API キーは不要です。 - SambaNova モデルによるモジュール型 LLM コンポーネントのオーケストレーション — Haystack のコンポーネント (コンバーター、リトリーバー、ジェネレーター、ランカー) を 1 つのパイプラインにつなぎ、任意の SambaCloud モデル ID に差し替えて利用できます。
サンプルノートブック
以下の 2 つの例は、いずれも 1 つのノートブックhaystack_sambanova_examples.ipynb に含まれています。
- Webpage Q&A: Web ページの内容に基づいて質問に回答するパイプラインを構築します。
trafilaturaが必要になるのはこの例です。 - RAG: Haystack と SambaCloud で検索拡張生成 (RAG) を実装します。キーワードベースの
InMemoryBM25Retrieverで検索するため、この例には Embedding モデルも 2 つ目のプロバイダーキーも不要です。
トラブルシューティング
command not found: python
command not found: python
macOS には
python 実行ファイルはなく、python3 のみが提供されます。仮想環境の作成には python3 -m venv .venv を使用してください。source .venv/bin/activate で有効化すれば、環境内では python が想定どおり動作します。ImportError: cannot import name 'OpenAIGenerator'
ImportError: cannot import name 'OpenAIGenerator'
Haystack 3.0 以降がインストールされています。このコンポーネントは 3.0 で削除されましたが、サンプルノートブックはこれをインポートしています。固定したバージョン範囲で再インストールしてください:
pip install "haystack-ai>=2.31,<3"FutureWarning: The OpenAIGenerator component is deprecated
FutureWarning: The OpenAIGenerator component is deprecated
2.x 系では想定どおりの動作であり、ノートブックの実行では無視して問題ありません。この警告は実行のたびに表示されます。新規コードには、文字列入力にも対応した
OpenAIChatGenerator を使用することを Haystack は推奨しています。Web ページの例が HTMLToDocument で失敗する
Web ページの例が HTMLToDocument で失敗する
trafilatura がインストールされていません。Haystack の HTML コンバーターは trafilatura に依存していますが、haystack-ai のインストールには含まれず、extra 経由でも提供されないため、別途インストールする必要があります: pip install trafilaturaノートブックが API キーを見つけられない
ノートブックが API キーを見つけられない
ノートブックは
os.environ["SAMBANOVA_API_KEY"] を読み取ります。本ガイドの以前のバージョンでは api_key を export するよう案内していましたが、ノートブックはこの名前を読み取りません。代わりに SAMBANOVA_API_KEY を export してください。openai.AuthenticationError または 401 レスポンス
openai.AuthenticationError または 401 レスポンス
API キーが未設定か、値が誤っているか、コードを実行するシェルに export されていません。
echo $SAMBANOVA_API_KEY で確認してください。export は現在のシェルにのみ適用される点にご注意ください。Haystack はコンポーネントの構築時に環境変数を読み取るため、export 後は Python プロセスまたはノートブックのカーネルを再起動してください。404 またはモデルが見つからないというレスポンス
404 またはモデルが見つからないというレスポンス
model に指定した値が、呼び出し可能なモデルではありません。モデル ID は大文字と小文字が区別され、SambaCloud のモデル一覧と正確に一致している必要があります。以前は動作していたモデル ID が使えなくなった場合は、提供終了ページをご確認ください。NameError: name 'Secret' is not defined
NameError: name 'Secret' is not defined
ノートブックの RAG セルを、それより前のセルを実行せずに実行しています。このセルは
Secret を使用していますが、インポートは含んでいません。ノートブックを先頭から実行するか、セルに from haystack.utils import Secret を追加してください。参考情報
- Haystack の公式ドキュメント
- 利用可能なモデル ID は SambaCloud のモデル一覧をご参照ください
- 本番環境でモデルを固定する前に、モデルの提供終了をご確認ください

