APIキーも安全に！Azure DatabricksとAzure OpenAI Serviceの連携術

この記事では、Azure Databricks上でAzure OpenAI Serviceを安全かつ効率的に利用する方法について解説します。Databricksクラスターとワークスペースの作成から、databricks-cliを使ってシークレット設定を行うまでの手順を詳しく説明します。
<h2>はじめに</h2>
近年、データ分析や機械学習の分野での活用が急速に進んでいるAzure DatabricksとAzure OpenAI Serviceの連携がますます注目を集めています。この記事では、Azure Databricks上でAzure OpenAI Serviceを安全かつ効率的に利用する方法について解説します。具体的には、Databricksクラスターとワークスペースの作成から、databricks-cliを使ってシークレット設定を行うまでの手順を詳しく説明します。

Azure Databricksは、ビッグデータ処理と機械学習を統合したアナリティクスプラットフォームです。一方、Azure OpenAI Serviceは、人工知能の力を利用してテキストデータを解析し、自然言語処理や機械学習タスクを実行するためのサービスです。この2つのサービスを組み合わせることで、データ分析の効率化や高度な分析機能を活用したビジネスインサイトの獲得が可能となります。

本記事を通じて、Azure DatabricksとAzure OpenAI Serviceの連携方法を習得し、効率的なデータ分析環境を構築できるようになることを目指しています。それでは、まずはDatabricksクラスターとワークスペースの作成から始めましょう。
<h2>Databricksクラスターとワークスペースの作成</h2>
この章では、Azure Databricksのクラスターとワークスペースの作成方法を説明します。クラスターは、分散コンピューティング環境を提供するためのノードの集まりであり、ワークスペースは、クラスター上で実行されるノートブックやデータを管理するための環境です。
<h3>1. Azure Databricks ワークスペースのセットアップ:</h3>
<ol>
 	<li style="list-style-type: none;">
<ol>
 	<li>Azure Portal (portal.azure.com) にログインし、Azure Databricks サービスを作成します。</li>
 	<li>ワークスペース名、サブスクリプション、リソースグループ、および場所を選択します。
トライするだけであれば「価格レベル：試用版」がおすすめです。</li>
 	<li>デプロイが完了したら、Azure Databricks ワークスペースにアクセスします。</li>
</ol>
</li>
</ol>
<h3>2. クラスターの作成</h3>
<ol>
 	<li>作成されたDatabricksワークスペースにアクセスします。概要＞URLからワークスペースに移動することが出来ます。<br />
例）https://adb-**********.azuredatabricks.net/</li>
 	<li>初回アクセス時に用途「What’s your current data project?」を聞かれますが、どれを選択しても問題ありません。</li>
 	<li>Databricksワークスペース内の左側のメニューから、「Compute」をクリックします。</li>
 	<li>「Create Cluster」ボタンをクリックし、新しいクラスターの設定画面が表示されることを確認します。</li>
 	<li>クラスター名を入力し、必要に応じてランタイムバージョンやノードタイプなどの設定を変更します。</li>
 	<li>「Create Cluster」ボタンをクリックしてクラスターを作成します。クラスターの作成には数分かかることがあります。</li>
</ol>
<h3>3. ワークスペースの設定</h3>
<ol>
 	<li>Databricksワークスペース内の左側のメニューから、「Workspace」をクリックします。</li>
 	<li>ワークスペース内に右クリックして「Create」&gt;「Notebook」を選択します。ノートブック名を入力し、言語とクラスターを選択して「Create」ボタンをクリックします。
<img src="https://azure-recipe.kc-cloud.jp/wp-content/uploads/2023/04/MicrosoftTeams-image-1024x333.png" alt="" width="1024" height="333" class="alignnone size-large wp-image-18972" /></li>
</ol>
これで、Azure Databricksのクラスターとワークスペースが作成されました。次の章では、databricks-cliを使ってシークレット設定を行い、Azure OpenAI Serviceと連携する方法を説明します。
<h2>databricks-cliのインストールと設定</h2>
この章では、databricks-cliのインストールと設定方法を説明します。databricks-cliを使うことで、コマンドラインからDatabricksワークスペースとクラスターを管理できます。
<h3>1. databricks-cliのインストール</h3>
まず、databricks-cliをインストールしましょう。以下の手順に従ってインストールしてください。
<ol>
 	<li>コマンドラインで <code>pip install databricks-cli</code> または <code>pip3 install databricks-cli</code> を実行して、databricks-cliをインストールします。</li>
 	<li>インストールが完了したら、コマンドラインで <code>databricks -v</code> を実行して、バージョン情報が表示されることを確認します。</li>
</ol>
<h3>2. 設定ファイルの作成</h3>
次に、databricks-cliの設定ファイルを作成しましょう。以下の手順に従って設定ファイルを作成してください。
<ol>
 	<li>Azureポータルで、DatabricksワークスペースのURLとアクセストークンを取得します。左側のメニューから「Databricks」を選択し、作成済みのワークスペースにアクセスして、URLをコピーします。
次に、右上のメールアドレスをクリックして「User Settings」から「Access Tokens」を選択し、新しいアクセストークンを生成します。</li>
 	<li>コマンドラインで <code>databricks configure --token</code> を実行し、プロンプトに従ってDatabricksワークスペースのURLとアクセストークンを入力します。</li>
 	<li>設定が完了したら、コマンドラインで <code>databricks workspace ls</code> を実行して、ワークスペース内のフォルダ一覧が表示されることを確認します。<br />
※下図はdatabricks configure設定前後での結果です。

```bash
$ databricks workspace ls
Error: Authorization failed. Your token may be expired or lack the valid scope

$ databricks workspace ls
Users
Shared
Repos
```
</li>
</ol>
これで、databricks-cliのインストールと設定が完了しました。次の章では、Databricksシークレットを使ってAzure OpenAI ServiceのAPIキーを安全に保管する方法を説明します。
<h2>Databricksシークレットの設定</h2>
この章では、Databricksシークレットを使ってAzure OpenAI ServiceのAPIキーを安全に保管する方法を説明します。シークレットを使用することで、ノートブック上に直接APIキーを記述することなく、安全にAPIキーを管理できます。
<h3>1. シークレットスコープの作成</h3>
まず、シークレットスコープを作成しましょう。シークレットスコープは、シークレット（APIキーなどの機密情報）をグループ化するためのコンテナです。

databricks-cliを使ってシークレットスコープを作成します。コマンドラインで以下のコマンドを実行してください（スコープ名をazure_openaiとしています）。
<div class="hcb_wrap">
<pre class="prism undefined-numbers lang-bash" data-lang="Bash"><code>databricks secrets create-scope --scope azure_openai</code></pre>
</div>
<h3>2. APIキーの登録</h3>
次に、Azure OpenAI ServiceのAPIキーをシークレットスコープに登録しましょう。

Azureポータルで、Azure OpenAI ServiceのAPIキーを取得します。OpenAIリソースの「キーとエンドポイント」タブから、APIキーをコピーします。
コマンドラインで以下のコマンドを実行して、APIキーをシークレットスコープに登録します（&lt;your_api_key&gt; にはAzure OpenAI ServiceのAPIキー、api_baseにはAzure OpenAI ServiceのURLを入力します）。
<div class="hcb_wrap">
<pre class="prism undefined-numbers lang-bash" data-lang="Bash"><code>databricks secrets put --scope azure_openai --key api_key --string-value &lt;your_api_key&gt;
databricks secrets put --scope azure_openai --key api_base --string-value https://***************.openai.azure.com/
</code></pre>
</div>
これで、Databricksシークレットを使ってAzure OpenAI ServiceのAPIキーを安全に保管する設定が完了しました。
<h2>クラスター上でのAzure OpenAI Serviceの利用</h2>
この章では、Databricksクラスター上でAzure OpenAI Serviceを利用する方法を説明します。シークレットを使用してAPIキーを安全に保管した後、ノートブックでOpenAI APIを呼び出す方法を紹介します。
<h3>ノートブックの作成</h3>
<ol>
 	<li>Databricksワークスペースで新しいノートブックを作成します。</li>
 	<li>ノートブックの言語を選択します（Python）。</li>
</ol>
<h3>スクリプトの実行</h3>

```python
import os
import openai


api_key = dbutils.secrets.get(scope="azure_openai", key="api_key")
api_base = dbutils.secrets.get(scope="azure_openai", key="api_base")

openai.api_type = "azure"
openai.api_version = "2023-03-15-preview"
openai.api_base = api_base
openai.api_key = api_key

response = openai.ChatCompletion.create(
    engine="GPT4-32",
    messages=[
        {"role": "user", "content": "こんにちは"}
    ]
)

print(response["choices"][0]["message"]["content"])
```

この章で説明した手順に従って、Databricksクラスター上でAzure OpenAI Serviceを利用する準備が整いました。ノートブックを使ってデータ分析や機械学習タスクにAzure OpenAI Serviceを活用してください。
<h2>まとめ</h2>
この記事では、Azure DatabricksとAzure OpenAI Serviceを連携させて効率的かつ安全に使用する方法について解説しました。Databricksクラスターとワークスペースの作成、databricks-cliのインストールと設定、Databricksシークレットの設定などの手順を通じて、APIキーを安全に保管し、クラスター上でAzure OpenAI Serviceを利用する方法を学びました。

これらの知識を活用して、ビジネスやデータ分析プロジェクトでAzure OpenAI Serviceを効果的に活用できるようになります。これにより、データ分析、機械学習タスク、自然言語処理などの多岐にわたる分野で、AI技術を組み込んだ迅速かつ効果的なデータ処理が可能となります。