次の方法で共有


English SDK for Apache Spark

Note

この記事では、English SDK for Apache Spark について説明します。 この English SDK for Apache Spark は、Databricks では直接サポートされていません。 フィードバックの提供、質問、問題の報告を行うには、GitHub の English SDK for Apache Spark リポジトリの Issues タブを使用します。

English SDK for Apache Spark は、英語の命令を受け取り、それらを Spark オブジェクトにコンパイルします。 その目的は、Spark をより使いやすく、アクセスしやすくすることです。これにより、データから分析情報を抽出する作業に集中できます。

次の情報には、Azure Databricks Python ノートブックを使用して English SDK for Apache Spark を呼び出す方法を説明する例が含まれています。 この例では、英語のプレーンな質問を使用して、Azure Databricks ワークスペースからテーブルに対して SQL クエリを実行するように English SDK for Apache Spark をガイドします。

必要条件

  • Databricks は、English SDK for Apache Spark で GPT-4 が最適に動作することを発見しました。 この記事では GPT-4 を使用し、OpenAI 課金プランに関連付けられている OpenAI API キーがあることを前提としています。 OpenAI 課金プランを開始するには、https://platform.openai.com/account/billing/overview にサインインして [支払いプランの開始] をクリックし、画面の指示に従います。 OpenAI 課金プランを開始した後、OpenAI API キーを生成するには、https://platform.openai.com/account/api-keys にサインインして [新しいシークレット キーの作成] をクリックします。
  • この例では、Azure Databricks クラスターに接続されている Azure Databricks ワークスペースで使用できる Azure Databricks Python ノートブックを使用します。

手順 1: English SDK for Apache Spark 用の Python パッケージをインストールする

ノートブックの最初のセルで、次のコードを実行します。このコードは、English SDK for Apache Spark 用の Python パッケージの最新バージョンをアタッチされたコンピューティング リソースにインストールします:

%pip install pyspark-ai --upgrade

手順 2: 更新されたパッケージを使用するために Python カーネルを再起動する

ノートブックの 2 番目のセルで次のコードを実行します。このコードを実行すると、Python カーネルが再起動され、English SDK for Apache Spark の更新された Python パッケージとその更新されたパッケージの依存関係が使用されます:

dbutils.library.restartPython()

手順 3: OpenAI API キーを設定する

ノートブックの 3 番目のセルで、OpenAI API キーの値に OPENAI_API_KEY という名前の環境変数を設定する次のコードを実行します。 English SDK for Apache Spark では、この OpenAPI キーを使用して OpenAI で認証します。 <your-openai-api-key> を OpenAI API キーの値に置き換えます:

import os

os.environ['OPENAI_API_KEY'] = '<your-openai-api-key>'

重要

この例では、速度と使いやすさのために、OpenAI API キーをノートブックにハードコーディングします。 運用環境のシナリオでは、OpenAI API キーをノートブックにハードコーディングしないのがセキュリティのベスト プラクティスです。 別の方法の 1 つは、アタッチされたクラスターにこの環境変数を設定することです。 「環境変数」を参照してください。

手順 4: LLM を設定してアクティブ化する

ノートブックの 4 番目のセルで、次のコードを実行します。これにより、English SDK for Apache Spark で使用する LLM が設定され、選択したモデルで English SDK for Apache Spark がアクティブ化されます。 この例では、GPT-4 を使用します。 既定では、English SDK for Apache Spark は、OPENAI_API_KEY という名前の環境変数を検索し、その値を使用して OpenAI で認証し、GPT-4 を使用します:

from langchain.chat_models import ChatOpenAI
from pyspark_ai import SparkAI

chatOpenAI = ChatOpenAI(model = 'gpt-4')

spark_ai = SparkAI(llm = chatOpenAI)
spark_ai.activate()

ヒント

既定の LLM として GPT-4 を使用するには、次のようにこのコードを簡略化できます:

from pyspark_ai import SparkAI

spark_ai = SparkAI()
spark_ai.activate()

手順 5: ソース データ ファイルを作成する

ノートブックの 5 番目のセルで、次のコードを実行します。このコードでは、Azure Databricks ワークスペースから samples.nyctaxi.trips テーブル内のすべてのデータを選択し、このデータを、英語の SDK for Apache Spark と連携するように最適化された DataFrame に格納します。 この DataFrame は、次の変数 dfで表されます:

df = spark_ai._spark.sql("SELECT * FROM samples.nyctaxi.trips")

手順 6: プレーンな英語の質問を使用して DataFrame にクエリを実行する

ノートブックの 6 番目のセルで、次のコードを実行します。これは、2016 年 1 月の各日の平均乗車距離を最も近い 10 分の 1 に出力するように English SDK for Apache Spark に求めます。

df.ai.transform("What was the average trip distance for each day during the month of January 2016? Print the averages to the nearest tenth.").display()

English SDK for Apache Spark では、分析と最終的な回答が次のように出力されます:

> Entering new AgentExecutor chain...
Thought: This can be achieved by using the date function to extract the date from the timestamp and then grouping by the date.
Action: query_validation
Action Input: SELECT DATE(tpep_pickup_datetime) as pickup_date, ROUND(AVG(trip_distance), 1) as avg_trip_distance FROM spark_ai_temp_view_2a0572 WHERE MONTH(tpep_pickup_datetime) = 1 AND YEAR(tpep_pickup_datetime) = 2016 GROUP BY pickup_date ORDER BY pickup_date
Observation: OK
Thought:I now know the final answer.
Final Answer: SELECT DATE(tpep_pickup_datetime) as pickup_date, ROUND(AVG(trip_distance), 1) as avg_trip_distance FROM spark_ai_temp_view_2a0572 WHERE MONTH(tpep_pickup_datetime) = 1 AND YEAR(tpep_pickup_datetime) = 2016 GROUP BY pickup_date ORDER BY pickup_date

> Finished chain.

English SDK for Apache Spark は最終的な回答を実行し、結果を次のように出力します:

+-----------+-----------------+
|pickup_date|avg_trip_distance|
+-----------+-----------------+
| 2016-01-01|              3.1|
| 2016-01-02|              3.0|
| 2016-01-03|              3.2|
| 2016-01-04|              3.0|
| 2016-01-05|              2.6|
| 2016-01-06|              2.6|
| 2016-01-07|              3.0|
| 2016-01-08|              2.9|
| 2016-01-09|              2.8|
| 2016-01-10|              3.0|
| 2016-01-11|              2.8|
| 2016-01-12|              2.9|
| 2016-01-13|              2.7|
| 2016-01-14|              3.3|
| 2016-01-15|              3.0|
| 2016-01-16|              3.0|
| 2016-01-17|              2.7|
| 2016-01-18|              2.9|
| 2016-01-19|              3.1|
| 2016-01-20|              2.8|
+-----------+-----------------+
only showing top 20 rows

次のステップ

  • この例で変数 df によって表される DataFrame を、異なるデータで作成してみてください。
  • df.ai.transform 関数について異なる簡単な英語の質問を使用してみてください。
  • 異なる GPT-4 モデルを使用してみてください。 GPT-4 を参照してください。
  • その他のコード例を確認します。 次の追加の成果物を参照してください。

その他のリソース