前提条件
作業を始める前に、以下の環境を準備してください。- SambaCloud アカウントと有効な API キー。
- Python 3.10 以上。
python --versionでご確認ください。AutoGen 0.4 以降は Python 3.10 が必要で、Python 3.9 ではpipが互換性のない 0.2 リリースをインストールしてしまいます。
インストール
本ガイドでは、AutoGen 0.4 以降のパッケージを使用します。エージェントとチームにはautogen-agentchat を、モデルクライアントには autogen-ext に含まれるものを使います。
-
仮想環境を作成して有効化します。
-
OpenAI 互換のモデルクライアントとともに AutoGen をインストールします。
バージョンの上限指定により、0.7 系の API に固定されます。AutoGen はリリースをまたいでパッケージ構成の再編を重ねてきたため、マイナーバージョンを固定し、アップグレード前にテストしてください。
-
API キーを環境変数に設定します。
AutoGen から SambaCloud への接続
SambaCloud は OpenAI 互換のエンドポイントを公開しているため、base_url に https://api.sambanova.ai/v1 を設定した OpenAIChatCompletionClient を通じて接続します。
SambaNova のモデル名は OpenAI のモデル名ではないため、モデルの機能を記述した model_info ディクショナリも渡す必要があります。これがないと、クライアントは ValueError: model_info is required when model name is not a valid OpenAI model エラーを送出します。
以下の例では、2 つのエージェントからなるチームを構築します。writer が説明文の下書きを作成し、reviewer がそれを承認するか修正を求めます。reviewer が APPROVED と応答するまで、両者が交互にやり取りを続けます。
Console は各ターンを到着順に、ヘッダーにエージェント名を付けて表示します。この writer と reviewer のラベルによって、一方が 2 回答えたのではなく両方のエージェントが動作したことを確認できます。実行は、メッセージに APPROVED が含まれた時点 (この例ではモデル呼び出し 2 回) で停止し、reviewer が承認しない場合は 4 ターンで終了します。writer のターンしか表示されない場合は、終了文字列が一致せず、max_turns によって実行が終了したことを意味します。
AutoGen 0.4 以降は非同期ファーストの設計です。エージェントとチームのメソッドは await する必要があり、この例で
asyncio.run() にラップしているのはそのためです。Jupyter ノートブックでは、asyncio.run(main()) の行を削除し、セル内で直接それらの呼び出しを await してください。モデルの選択
model には任意の SambaCloud モデル を渡せます。エージェントにツールを持たせるマルチエージェントワークフローでは、Function calling (関数呼び出し) に対応したモデルも必要です。クライアントはツールをアタッチした後になって初めて ValueError: Model does not support function calling エラーを送出するため、"function_calling": True を設定する前に 対応モデル をご確認ください。
サンプルノートブック
以下のノートブックで実際の活用例を試してみましょう。- 旅行プラン作成ノートブック: エージェントのチームによって、詳細な旅行スケジュールを構築します。このノートブックに必要なのは SambaNova の API キーのみなので、まずはこちらから始めてください。
- 企業リサーチノートブック: 複数のエージェントからなるチームで Web 検索や株式情報の取得を行い、レポートを生成します。こちらは Google Custom Search の API キーと検索エンジン ID も必要で、
yfinanceとmatplotlibをインストールします。
.env ファイルから SAMBANOVA_API_KEY と SAMBANOVA_URL を読み込み、見つからない値があれば入力を求めます。SAMBANOVA_URL には https://api.sambanova.ai/v1 を設定してください。
トラブルシューティング
ModuleNotFoundError: No module named 'autogen_agentchat'
ModuleNotFoundError: No module named 'autogen_agentchat'
0.2 リリースがインストールされています。0.2 は代わりに
autogen モジュールを提供します。0.4 以降は Python 3.10 が必要なため、Python 3.9 では pip が 0.2 を暗黙のうちに選択します。python --version が 3.10 以上であることを確認し、インストール に記載のバージョン上限付きコマンドで再インストールしてください。ValueError: model_info is required when model name is not a valid OpenAI model
ValueError: model_info is required when model name is not a valid OpenAI model
OpenAIChatCompletionClient はモデル名をもとに機能を参照しますが、SambaNova のモデル名は認識できません。AutoGen から SambaCloud への接続 に示した model_info ディクショナリを渡してください。ValueError: Missing required field in ModelInfo
ValueError: Missing required field in ModelInfo
model_info では、vision、function_calling、json_output、family がそれぞれ必須です。不足しているキーを追加してください。structured_output の省略は UserWarning: Missing required field 'structured_output' in ModelInfo の表示のみで構築自体は成功しますが、今後のリリースで必須になるため、上記のとおり 5 つすべてを設定してください。ValueError: Model does not support function calling
ValueError: Model does not support function calling
model_info で "function_calling": False を設定したエージェントにツールをアタッチしています。Function calling の対応モデル からモデルを選択し、"function_calling": True を設定してください。エンドポイントからの 401 または 403 エラー
エンドポイントからの 401 または 403 エラー
SAMBANOVA_API_KEY が未設定か期限切れになっているか、スクリプトを実行するシェルにエクスポートが反映されていません。キーを再度エクスポートし、以下のコマンドで動作をご確認ください。
