> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sambanova.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Semantic Kernel

Semantic Kernel は、エージェントを構築し、最新の AI モデルをコードベースに組み込めるオープンソースの開発ツールです。

## 前提条件

作業を始める前に、以下の環境を準備してください。

* [SambaCloud アカウント](http://cloud.sambanova.ai/?utm_source=semantickernel\&utm_medium=external\&utm_campaign=cloud_signup)と API キー
* Python 3.10 以降 (`python --version` で確認)。Semantic Kernel 1.0 以降は Python 3.10 が必要です。3.9 の環境では、`pip` が代わりに非互換の 0.9 ベータ版をインストールします。

## インストールとセットアップ

1. 仮想環境を作成します。

   ```bash theme={}
   python -m venv .venv
   source .venv/bin/activate
   ```

   `python --version` の結果が 3.9 以前の場合は、`python3.11 -m venv .venv` のように、インタープリターを明示的に指定して仮想環境を作成してください。

2. 必要なライブラリをインストールします。

   ```bash theme={}
   pip install "semantic-kernel>=1.44,<2" jupyter ipykernel python-dotenv
   ```

   上限を指定しているのは、エージェント API を 1.x 系に固定するためです。Semantic Kernel は 0.9 と 1.0 で `ChatCompletionAgent` のコンストラクターが異なるため、メジャーバージョンは固定したまま、アップグレードする際は事前に動作を確認してください。

3. 同じディレクトリに `.env` ファイルを作成し、認証情報を記述します。SambaCloud のエンドポイントは OpenAI 互換のため、Semantic Kernel からは標準の OpenAI コネクターで接続できます。

   ```bash theme={}
   GLOBAL_LLM_SERVICE="OpenAI"
   OPENAI_API_KEY="<<YOUR_API_KEY>>"
   OPENAI_BASE_URL="https://api.sambanova.ai/v1/"
   OPENAI_CHAT_MODEL_ID="Meta-Llama-3.3-70B-Instruct"
   OPENAI_TEXT_MODEL_ID=""
   OPENAI_EMBEDDING_MODEL_ID=""
   OPENAI_ORG_ID=""
   ```

   使用しない ID は空のままにしてください。`OpenAIChatCompletion` はインスタンス生成時にこれらの環境変数を読み込むため、未設定のままだと最初のエージェント呼び出しでノートブックが失敗します。

   `OPENAI_CHAT_MODEL_ID` には任意の [SambaCloud モデル](/docs/ja/models/sambacloud-models) を指定できます。ただし、エージェントにツールを持たせるワークフローでは、[Function calling (関数呼び出し)](/docs/ja/features/function-calling) に対応したモデルを選んでください。

## サンプルノートブック

[Semantic Kernel サンプルノートブック](https://github.com/sambanova/integrations/blob/main/semantic_kernel/agents_solving_task.ipynb) に沿って進めると、アートディレクターやコピーライターとして振る舞うエージェントを作成できます。高度な AI 機能により、クリエイティブな作業の自動化に役立ちます。

<Note>
  最初のエージェントセルが `TypeError: ChatCompletionAgent.__init__() got an unexpected keyword argument 'service_id'` で失敗する場合は、[トラブルシューティング](#トラブルシューティング) にある 1 行の修正を適用してください。バージョンを固定した 1.x 系の API では、エージェントのコンストラクターは `service_id` を受け付けません。
</Note>

作成した仮想環境でノートブックが実行されるように、その環境から Jupyter を起動します。

```bash theme={}
jupyter lab agents_solving_task.ipynb
```

<Note>
  代わりに VS Code などのエディタでノートブックを開く場合は、セルを実行する前に `.venv` 内のインタープリターを選択してください。インタープリターを選択しても実行中のカーネルは再起動されないため、選択後にカーネルを再起動してください。実際に接続されているインタープリターを確認するには、セルで `import sys, os; print(sys.executable, os.environ.get("VIRTUAL_ENV"))` を実行します。`VIRTUAL_ENV` が `None` の場合、カーネルは仮想環境の外で実行されています。
</Note>

## トラブルシューティング

<AccordionGroup>
  <Accordion title="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 にはインストールできないため、環境をそのままにしたアップグレードでは解決しません。
  </Accordion>

  <Accordion title="TypeError: ChatCompletionAgent.__init__() got an unexpected keyword argument 'service_id'">
    `ChatCompletionAgent` は 0.9 では `service_id` を受け付けていましたが、1.0 以降のエージェントは、代わりに構成済みの `kernel` または `service` を受け取ります。

    エージェントのコンストラクターから `service_id` 引数を削除してください。`OpenAIChatCompletion` は引き続き `service_id` を受け付けるため、そちらの指定は残して構いません。
  </Accordion>

  <Accordion title="ModuleNotFoundError: No module named 'semantic_kernel' in a notebook">
    ノートブックのカーネルが仮想環境の外で実行されています。多くの場合、エディタが別のインタープリターからカーネルを起動したことが原因です。

    仮想環境を選択した後にカーネルを再起動し、上記の注記に記載した確認方法で検証してください。そもそも有効化した仮想環境から `jupyter lab` を起動すれば、この問題は発生しません。
  </Accordion>

  <Accordion title="エンドポイントから 401 が返る">
    `OPENAI_API_KEY` が未設定または期限切れであるか、ノートブックの実行ディレクトリに `.env` ファイルがありません。

    以下のように補完リクエストを送り、API キーが有効であることを確認します。

    ```bash theme={}
    curl -s -o /dev/null -w "%{http_code}\n" https://api.sambanova.ai/v1/chat/completions \
      -H "Authorization: Bearer $OPENAI_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"model":"Meta-Llama-3.3-70B-Instruct","messages":[{"role":"user","content":"hi"}],"max_tokens":3}'
    ```

    `200` が返れば API キーは有効です。モデル一覧のエンドポイントは認証情報を検証せずに応答するため、確認は必ずモデル一覧ではなく補完リクエストで行ってください。
  </Accordion>
</AccordionGroup>

## 参考情報

* [Semantic Kernel の公式ドキュメント](https://learn.microsoft.com/en-us/semantic-kernel/)
* [Function calling](/docs/ja/features/function-calling)
* [SambaCloud モデル](/docs/ja/models/sambacloud-models)
