Databricks アシスタントは、Databricksノートブック、SQLエディタ、ファイルエディタで利用可能な、コンテキストを意識したAIアシスタントで、Databricksの生産性を向上させます:
- SQL/Pythonコードの生成
- オートコンプリートコードまたはクエリ
- コードの変換と最適化
- コードやクエリの説明
- エラーの修正とコードのデバッグ
- アクセス可能なテーブルとデータの発見
Databricks アシスタントのドキュメントには、これらのタスクに関する高レベルの情報と詳細が記載されていますが、コード生成のためのジェネレーティブAIは比較的新しいものであり、これらのアプリケーションを最大限に活用する方法はまだ学習中です。
このブログ記事では、Databricks アシスタントを最大限に活用するための5つのヒントとトリックについて説明します。
Databricks アシスタントのための5つのヒント
1. より良い応答を得るためにFind Tablesアクションを使用する
Databricks アシスタントは様々なシグナルを活用して、より正確で関連性の高い結果を提供します。 Databricks アシスタントが現在使用しているコンテキストには、次のようなものがあります:
- ノートブックのセルまたはDatabricks SQLエディタ タブ内のコードまたはクエリ
- テーブル名とカラム名
- アクティブなテーブル(ノートブックまたはSQLエディタ タブで現在参照されているテーブル)
- 現在のセッションでの以前の入力と応答(このコンテキストはノートブックスコープであり、チャットセッションがクリアされると消去されることに注意してください)
- デバッグやエラー修正のために、Databricks アシスタントはエラーのスタックトレースを使用します
Databricks アシスタントがコンテキストとして使用する項目が異なるため、コンテキストを使用して Databricks アシスタントとの対話方法を変更することで、最良の結果を得ること ができます。 より良い結果を得るための最も簡単な方法の1つは、Databricks アシスタントがレスポンスを生成する際にコンテキストとして使用したいテーブルを指定することです。 クエリで使用するテーブルを手動で指定することも、そのテーブルをお気に入りに追加することもできます。
以下の例では、2018年のNFLシーズンにおいて、ホームチームとアウェイチームの最大の点差についてDatabricks アシスタントに質問してみたいと思います。 Databricks アシスタントの反応を見てみましょう。
Databricks アシスタントには、このデータを検索するために使用するテーブルに関するコンテキストがないため、このような回答を得ました。 これを解決するには、Databricks アシスタントにこれらのテーブルを検索してもらうか、使用するテーブルを手動で指定します。
"Find tables related" と入力すると、Databricks アシスタントがテーブル検索モードに入ります。 このモードでは、NFLの試合について言及しているテーブルを検索することができます。テーブルをクリックすると、SELECTクエリの候補、テーブルの説明、またはそのテーブルを使用して自然言語でクエリを実行できるドロップダウンが開きます。 このプロンプトでは、"Query in natural language" オプションを使用して、次のクエリのテーブルを明示的に設定します。
使用するテーブルを選択した後、元のプロンプトは 44 ポイントという答えを返す SQL クエリを生成します。 Databricks アシスタントに使用するテーブルを伝えることで、正しい答えが得られます。
2. 応答がどのように見えるかを指定する
Databricks アシスタントが提供する構成や詳細は、同じプロンプトであっても時間によって異なります。 必要な構造または形式で出力を得るために、Databricks アシスタントにさまざまな量の詳細、説明、またはコードで応答するように指示することができます。
NFLのテーマに引き続き、以下のクエリは、現役か引退かを含め、1シーズンに500回以上試行したクォーターバックのパス成功率のリストを取得します。
このクエリは、書いた本人にとっては意味があるでしょうが、初めて見る人にとってはどうでしょう? Databricks アシスタントにコードを説明してもらうとよいでしょう。
このコードの基本的な概要をあまり詳しく説明せずに知りたい場合は、Databricks アシスタントに説明文を最小限に抑えるように依頼することができます。
逆に、Databricks アシスタントにこのコードを一行ずつ詳しく説明してもらうこともできます(長さの関係で出力はカットされています)。
レスポンスがどうあるべきかを指定することは、コード生成にも当てはまります。 プロンプトによっては、ビジュアライゼーションの作成など、同じタスクを達成するための複数の方法があります。 例えば、2015年シーズンのNFL公式戦の試合数をプロットしたい場合、MatplotlibやPlotly、Seabornを使うことができます。 この例ではPlotlyを使いたいので、この画像のようにプロンプトで指定します:
Databricks アシスタントがプロンプトに応答する方法や含まれる内容を変更することで、時間を節約し、要件を満たす応答を得ることができます。
3. Databricks アシスタントに行レベルデータがどのようなものかを伝える
Databricks アシスタントはテーブルスキーマとカラムタイプを検査し、より正確なレスポンスを提供しますが、行レベルのデータにはアクセスできません。 これはデータのプライバシーにとって重要ですが、Databricks アシスタントが一部のデータ形式や構造にしか対応できないコードを生成する可能性があるという欠点があります。
NFL スカウティング・コンバインに参加した選手のデータを含むテーブルを扱うとします:
Databricks Assistantに各ポジションの平均身長を取得するよう依頼すると、構文的に正しく、正しいカラム名とテーブルを使用したSQLクエリを受け取ることができます。
しかし、クエリを実行するとエラーが発生します。 これは、テーブルの高さ列が実際には文字列であり、"feet-inches" (6-2)のような構造になっているためです。しかし、Databricks アシスタントは行レベルのデータにアクセスできないため、このことを知る方法がありません。
これを解決するには、プロンプトを編集して、行レベルのデータがどのように見えるかの例を含めるようにしま す。 これで新しいクエリが正常に実行されるようになります。
このテーブルを扱うデータアナリスト、エンジニア、サイエンティストは、コードを書きながらデータを見ることができますが、Databricks アシスタントは行レベルのデータについては何も知らないため、正しい結果を得るためには、データがどのように見えるかの例を示したり、フォーマットについてさらに詳しく説明したりする必要があります。
4. アシスタントパネルでコードスニペットを直接実行してテストする
LLMベースのツールで作業する大部分は、望ましい結果を得るために、どのような種類のプロンプトが最も効果的なのかを弄り回すことです。 Databricks アシスタントに、プロンプトの表現が不適切だったり、プロンプトにスペルミスがあったりするタスクを実行させると、最良の結果が得られない可能性があります。
Databricks アシスタントのチャットウィンドウでは、既存のコンテキストを失うことなく、以前のプロンプトを直接編集してリクエストを再送信することができます。
しかし、質の高いプロンプトを使っても、その回答が正しいとは限りません。 アシスタントパネルで直接コードを実行することで、ノートブックにコピーする前にコードをテストし、素早く反復することができます。 アシスタントパネルはスクラッチパッドだと思ってください。
チャットウィンドウでコードが更新または検証されたので、それをノートブックに移動し、下流のユースケースで使用することができます。
おまけ:アシスタントウィンドウでコードを編集するだけでなく、既存のコードと新しく生成されたコードを切り替えて、2つの違いを簡単に確認することもできます。
5. ノートブック内でのセルアクションの使用
セルアクションを使用すると、ユーザーはチャットウィンドウなしで Databricks アシスタントと対話し、ノートブック内でコードを生成することができます。
ノートブックのセル内のコードのスニペットにコメント(ドキュメント)を追加したいとします。 まず、Databricks アシスタントのチャットウィンドウを開き、" add comments to my code " のようなプロンプトを入力するか、セルアクションを使用して、以下のように" /doc" を選択します。
セルアクションでは、ショートカットだけでなく、カスタムプロンプトも使用できます。 Databricks アシスタントにコードをフォーマットしてもらいましょう。 同じアイコンをクリックして、プロンプトを入力してエンターキーを押します。
Databricks アシスタントは、生成された出力コードと、元のコードと提案されたコードの違いを表示します。 セルアクションは、サイドチャットウィンドウを開かずに Databricks Notebooks 内でコードを生成する素晴らしい方法です。
まとめ
Databricks アシスタントは、Databricks での開発をより簡単に、より速く、より効率的にする強力な機能です。 上記のヒントを取り入れることで、Databricks アシスタントを最大限に活用することができます。
こちらに記載されている手順に従って、DatabricksアカウントとワークスペースでDatabricks Assistantを有効にしてください。
Databricks アシスタントは、他の生成AIツールと同様、間違いを犯す可能性があります。 このため、Databricks アシスタントによって生成されたコードを実行する前に必ず確認してください。 見た目が適切でない、または構文が正しくない回答を受け取った場合は、親指を下に振るアイコンでフィードバックを送信してください。 Databricks アシスタントは、より良い結果を返すために常に学習し、改善しています。