このページでは、信頼できる資産を定義し、それらを使用して Genie 空間で検証済みの回答を提供する方法について説明します。
信頼できるアセットとは
信頼できるアセットとは、事前定義された関数やサンプル クエリのことで、ユーザーから予想される質問に対して検証済みの回答を提供するためのものです。 ユーザーが信頼できる資産を呼び出す質問を送信すると、応答に示され、結果の精度に保証の層が追加されます。
信頼できるアセットには、次のものが含まれます。
- パラメーター化されたサンプル SQL クエリ: パラメーター化されたサンプル SQL クエリを使用して応答を生成すると、応答には「信頼できるアセット」というラベルが付けられます。 応答には、クエリの引数として使用される値が含まれます。 ユーザーは応答のパラメーター値を編集できます。
- ユーザー定義テーブル関数 (UDF): カスタム関数を定義し、Unity Catalog に登録できます。 その後、Genie 空間で手順を設定するときに、これらの機能を信頼できる資産として追加できます。 「SQL テーブル関数の作成」と「Unity Catalog のユーザー定義関数 (UDF) 」を参照してください。
注
信頼された資産は、他の手順に代わるものではありません。 Databricks では、定期的に繰り返される質問には信頼できるアセットを使用することをお勧めします。 特定の質問に対して正確な回答を提供します。
信頼できるアセットを作成する理由
AI ツールを使用する場合、ユーザーは生成された応答の正確性を評価する必要があります。 通常、評価を行うときは、回答が意味を成しているだけでなく、質問に効果的に対処しているかどうかを検討します。 Genie では、応答は結果のテーブルとして配信されます。 ユーザーは、結果セットを作成する生成済み SQL を確認できますが、技術者以外のユーザーには、SQL ステートメントを解釈したり、回答の正確性を評価したりする知識がない可能性があります。 信頼できるアセットは、これらのユーザーが誤解を招く、正しくない、あるいは解釈が困難な応答に遭遇する可能性を減らすのに役立ちます。
ユーザーが信頼された としてラベル付けされた応答受信すると、ドメインの専門家が、空間内の命令として結果を生成するために使用する SQL ステートメントを追加したことを意味します。
信頼された資産と SQL クエリの例の違いは何ですか?
信頼できるアセットは、Genie スペース ユーザーが尋ねると予想される質問に対して検証済みの回答を提供します。 信頼された資産がユーザーの質問に回答できる場合、信頼できる資産として保存した命令が実行され、指定した結果セットが返されます。 パラメーターと、スペースのコンテキストに追加する SQL 関数を含む SQL クエリの例は、信頼できる資産として扱われます。
- SQL クエリの例 (パラメーターあり): パラメーター化されたサンプル クエリの正確なテキストを使用して応答を生成すると、応答に自動的に 信頼済みというラベルが付けられます。 スペース ユーザーは、応答のパラメーター値を編集し、新しい値を使用してクエリを再実行できます。
- SQL 関数: データを処理し、会社固有の質問に対処するように調整されたカスタム SQL 関数を記述できます。 Genie は、質問に応答するときに、信頼できるアセットの SQL コンテンツを考慮しません。
注
クエリの正確なテキストが使用されていない場合、またはサンプル クエリでパラメーターが使用されていない場合、サンプル クエリはコンテキストを提供し、Genie が SQL ステートメントを生成する方法をガイドしますが、 信頼済みとしてマークされません。
信頼できるアセットを定義する
信頼できるアセットを定義するには、まず、考えられる質問を特定します。 たとえば、販売パイプラインのデータセットを使っていて、営業マネージャーがよく尋ねる質問として、「自分の地域に未完了の営業案件はどれくらいありますか?」
例: 質問に回答する UDF を作成する
次の手順では、テスト クエリを記述し、それを使用して UDF を作成する方法について説明します。
このクエリは、2 つのテーブルを結合し、“Pipeline” 予測カテゴリに一覧表示されている営業案件のデータセットを返します。 このステップの目標は、期待される結果を返す基本的なクエリを記述することです。
SELECT
o.id AS `OppId`,
a.region__c AS `Region`,
o.name AS `Opportunity Name`,
o.forecastcategory AS `Forecast Category`,
o.stagename,
o.closedate AS `Close Date`,
o.amount AS `Opp Amount`
FROM
users.user_name.opportunity o
JOIN catalog.schema.accounts a ON o.accountid = a.id
WHERE
o.forecastcategory = 'Pipeline'
AND o.stagename NOT LIKE '%closed%';
- Unity Catalog 関数を定義します。
Unity Catalog 関数は、クエリをパラメーター化し、ユーザーが尋ねると予想される特定の条件に一致する結果を生成する必要があります。 たとえば、営業マネージャーが、特定の地域または地域のグループに焦点を当てて結果セットを絞り込みたいとします。
次の例では、リージョンのリストをパラメーターとして受け取り、テーブルを返す Unity Catalog 関数を定義します。 関数の戻り値は前のステップの SQL ステートメントとほぼ同じですが、リージョンが指定されている場合は結果をリージョン別にフィルター処理するように WHERE 句が変更されています。 関数定義内で提供されるコメントは、この関数を呼び出すタイミングと方法について Genie スペースに指示するために重要です。
-
パラメーター コメント:
open_opps_in_region関数はパラメーターとして文字列の配列を想定しています。 コメントには、想定されている入力の例が含まれています。 パラメーターが指定されない場合、既定値はNULLとなります。 オプション パラメーターとコメントを含める方法の詳細については、「関数の記述に関するヒント」を参照してください。 - 関数コメント: SQL テーブル関数内のコメントには、その関数の機能の詳細な説明が記載されています。 これは、ユーザーの質問への応答として関数を使用するタイミングを Genie に通知するため、非常に重要です。 コメントには、関数の目的をできるだけ正確に記述する必要があります。 この情報は、Genie が特定の質問に対する関数の関連性を認識するためのガイドです。
CREATE
OR REPLACE FUNCTION users.user_name.open_opps_in_region (
regions ARRAY < STRING >
COMMENT 'List of regions. Example: ["APAC", "EMEA"]' DEFAULT NULL
) RETURNS TABLE
COMMENT 'Addresses questions about the pipeline in the specified regions by returning
a list of all the open opportunities. If no region is specified, returns all open opportunities.
Example questions: "What is the pipeline for APAC and EMEA?", "Open opportunities in
APAC"'
RETURN
SELECT
o.id AS `OppId`,
a.region__c AS `Region`,
o.name AS `Opportunity Name`,
o.forecastcategory AS `Forecast Category`,
o.stagename,
o.closedate AS `Close Date`,
o.amount AS `Opp Amount`
FROM
catalog.schema.opportunity o
JOIN catalog.schema.accounts a ON o.accountid = a.id
WHERE
o.forecastcategory = 'Pipeline'
AND o.stagename NOT LIKE '%closed%'
AND (
isnull(open_opps_in_region.regions)
OR array_contains(open_opps_in_region.regions, region__c)
);
コードを実行して関数を作成すると、既定で現在アクティブなスキーマに登録されます。 「Unity Catalog のユーザー定義関数 (UDF)」を参照してください。 構文と例については、「 SQL テーブル関数の作成」を参照してください。
信頼できるアセットを追加します。
Unity カタログで関数を作成した後、Genie 空間に対する CAN EDIT 権限を持つユーザーは、Genie 空間に追加できます。 [ 構成>Context>SQL クエリ] をクリックします。 次に、[ 追加] をクリックします。
必要なアクセス許可
Genie スペースに対して少なくとも CAN EDIT アクセス許可を持つユーザーは、信頼できるアセットを追加または削除できます。
Genie スペース ユーザーには、関数を含むカタログとスキーマに対する CAN USE アクセス許可が必要です。 信頼できるアセットを呼び出すには、Unity Catalog 内の関数に対する EXECUTE アクセス許可が必要です。 Unity Catalog のセキュリティ保護可能なオブジェクトは、親コンテナーからアクセス許可を継承します。 「Unity Catalog のセキュリティ保護可能なオブジェクト」を参照してください。
Genie スペースでの共有を簡素化するために、Databricks では、Genie スペースで使用するすべての関数を含む専用スキーマの作成を推奨しています。
関数を記述するためのヒント
信頼できるアセットの動的関数を作成する方法については、次の例を参照してください。
既定のパラメーター値を含める
パラメーターの既定値を指定できます。 次の例に示すように、関数シグネチャで DEFAULT 句を使用します。
countries ARRAY<STRING> COMMENT 'List of countries' DEFAULT ARRAY()
サンプル パラメーター値を含める
列に固定された値のセットがある場合は、コメントで明確に定義して正確性を高めます。 次の例は、値のサンプル リストを示しています。
regions ARRAY < STRING > COMMENT 'List of regions. Values: ["AF","AN","AS", "EU", "NA", "OC", "SA", NULL]'
オプション パラメーターの作成
オプション パラメーターを作成するには、次の例に示すように、既定のパラメーターを NULL に設定します。
min_date STRING DEFAULT NULL
コメントによる書式設定の指定
次の例に示すように、コメントにパラメーターを含めることで、パラメーターの正確な形式を指定できます。
min_date STRING COMMENT 'minimum date (included) for a transaction, in `yyyy-mm-dd` format'
NULL 値を明示的にチェックする
オプション パラメーターを含める場合、期待される値の 1 つとして NULL が考えられます。
NULL との比較では予測できない結果が生じる可能性があるため、NULL 値のチェックを関数に明示的に組み込む必要があります。 次の例は、サンプル構文です。
WHERE (isnull(min_date) OR created_date >= min_date)