前提条件
作業を始める前に、以下の環境を準備してください。- SambaCloud アカウントと API キー
- Python 3.10 以降 (
python --versionで確認)。Semantic Kernel 1.0 以降は Python 3.10 が必要です。3.9 の環境では、pipが代わりに非互換の 0.9 ベータ版をインストールします。
インストールとセットアップ
-
仮想環境を作成します。
python --versionの結果が 3.9 以前の場合は、python3.11 -m venv .venvのように、インタープリターを明示的に指定して仮想環境を作成してください。 -
必要なライブラリをインストールします。
上限を指定しているのは、エージェント API を 1.x 系に固定するためです。Semantic Kernel は 0.9 と 1.0 で
ChatCompletionAgentのコンストラクターが異なるため、メジャーバージョンは固定したまま、アップグレードする際は事前に動作を確認してください。 -
同じディレクトリに
.envファイルを作成し、認証情報を記述します。SambaCloud のエンドポイントは OpenAI 互換のため、Semantic Kernel からは標準の OpenAI コネクターで接続できます。使用しない ID は空のままにしてください。OpenAIChatCompletionはインスタンス生成時にこれらの環境変数を読み込むため、未設定のままだと最初のエージェント呼び出しでノートブックが失敗します。OPENAI_CHAT_MODEL_IDには任意の SambaCloud モデル を指定できます。ただし、エージェントにツールを持たせるワークフローでは、Function calling (関数呼び出し) に対応したモデルを選んでください。
サンプルノートブック
Semantic Kernel サンプルノートブック に沿って進めると、アートディレクターやコピーライターとして振る舞うエージェントを作成できます。高度な AI 機能により、クリエイティブな作業の自動化に役立ちます。最初のエージェントセルが
TypeError: ChatCompletionAgent.__init__() got an unexpected keyword argument 'service_id' で失敗する場合は、トラブルシューティング にある 1 行の修正を適用してください。バージョンを固定した 1.x 系の API では、エージェントのコンストラクターは service_id を受け付けません。代わりに VS Code などのエディタでノートブックを開く場合は、セルを実行する前に
.venv 内のインタープリターを選択してください。インタープリターを選択しても実行中のカーネルは再起動されないため、選択後にカーネルを再起動してください。実際に接続されているインタープリターを確認するには、セルで import sys, os; print(sys.executable, os.environ.get("VIRTUAL_ENV")) を実行します。VIRTUAL_ENV が None の場合、カーネルは仮想環境の外で実行されています。トラブルシューティング
ImportError: cannot import name 'Url' from 'pydantic.networks'
ImportError: cannot import name 'Url' from 'pydantic.networks'
0.9 ベータ版 (Python 3.9 をサポートする最後のリリース) がインストールされています。1.0 以降は Python 3.10 が必要なため、Python 3.9 の環境では
pip が暗黙的に 0.9 ベータ版を選択します。python --version の結果が 3.10 以降であることを確認したうえで、仮想環境を作り直し、インストールとセットアップ に記載の上限付きコマンドで再インストールしてください。1.x 系のリリースは Python 3.9 にはインストールできないため、環境をそのままにしたアップグレードでは解決しません。TypeError: ChatCompletionAgent.init() got an unexpected keyword argument 'service_id'
TypeError: ChatCompletionAgent.init() got an unexpected keyword argument 'service_id'
ChatCompletionAgent は 0.9 では service_id を受け付けていましたが、1.0 以降のエージェントは、代わりに構成済みの kernel または service を受け取ります。エージェントのコンストラクターから service_id 引数を削除してください。OpenAIChatCompletion は引き続き service_id を受け付けるため、そちらの指定は残して構いません。ModuleNotFoundError: No module named 'semantic_kernel' in a notebook
ModuleNotFoundError: No module named 'semantic_kernel' in a notebook
ノートブックのカーネルが仮想環境の外で実行されています。多くの場合、エディタが別のインタープリターからカーネルを起動したことが原因です。仮想環境を選択した後にカーネルを再起動し、上記の注記に記載した確認方法で検証してください。そもそも有効化した仮想環境から
jupyter lab を起動すれば、この問題は発生しません。エンドポイントから 401 が返る
エンドポイントから 401 が返る
OPENAI_API_KEY が未設定または期限切れであるか、ノートブックの実行ディレクトリに .env ファイルがありません。以下のように補完リクエストを送り、API キーが有効であることを確認します。200 が返れば API キーは有効です。モデル一覧のエンドポイントは認証情報を検証せずに応答するため、確認は必ずモデル一覧ではなく補完リクエストで行ってください。
