AI/BI Genieスペースで信頼できる資産を使用する
この記事では、信頼できるアセットを定義し、それらを使用してGenieスペースで検証済みの回答を提供する方法について説明します。
信頼できる資産とは?
信頼できる資産は、ユーザーから予想される質問に対して検証済みの回答を提供することを目的とした、事前定義された関数とクエリの例です。 ユーザーが信頼できるアセットを呼び出す質問を送信すると、その質問が回答に示され、結果の精度にさらなる保証が追加されます。
信頼できる資産には、次のものが含まれます。
- パラメーター化されたサンプル SQL クエリ : パラメーター化されたサンプル SQL クエリを使用して応答を生成すると、応答には信頼できる資産というラベルが付けられます。 応答には、クエリの引数として使用される値が含まれます。 ユーザーは、応答のパラメーター値を編集できます。
- ユーザー定義テーブル関数 (UDF): カスタム関数を定義し、 Unity Catalogで登録することができます。 その後、Genieスペースで指示を設定するときに、それらの機能を信頼できるアセットとして追加できます。 「 SQL テーブル関数の作成 」と 「Unity Catalog でのユーザー定義関数 (UDF)」を参照してください。
信頼できる資産は、他のすべての指示に代わるものではありません。 Databricks では、定評のある繰り返しの質問には、信頼できるアセットを使用することをお勧めします。 彼らは特定の質問に対して正確な答えを提供します。
なぜ信頼できる資産を作成するのか?
AI ツールを使用する場合、ユーザーは生成された応答の精度を評価する必要があります。 通常、彼らは答えが理にかなっていて、質問に効果的に対処しているかどうかを検討することによってこれを行います。 Genieでは、応答は結果のテーブルとして配信されます。 ユーザーは結果セットを作成する生成された SQL を確認できますが、技術者以外のユーザーには SQL ステートメントを解釈したり、回答の正確さを評価したりする知識がない可能性があります。 信頼できるアセットは、これらのユーザーが誤解を招く、正しくない、または解釈が困難な応答に遭遇する可能性を減らすのに役立ちます。
ユーザーが [信頼済み ] とラベル付けされた応答を受け取った場合、それは、ドメイン エキスパートが結果の生成に使用された SQL ステートメントをスペース内の命令として追加したことを意味します。
信頼できるアセットとサンプル SQL クエリの違いは何ですか?
信頼できるアセットは、 Genieスペースのユーザーが尋ねると予想される質問に対して検証済みの回答を提供します。 信頼できるアセットがユーザーの質問に答えることができる場合、信頼できるアセットとして保存した命令が実行され、指定された結果セットが返されます。 命令に含めるすべての SQL 関数は 、信頼できる資産として扱われます。 例 SQL パラメーターを含むクエリは、信頼できる資産として扱うこともできます。
- SQL 関数 : データを処理し、会社固有の質問に対処するように調整されたカスタム SQL 関数を記述できます。 Genieは、質問に答える際に、信頼できる資産のSQL内容を考慮しません。
- サンプル SQL クエリ (パラメーター付き): パラメーター化されたサンプル クエリの正確なテキストを使用して応答を生成すると、応答は自動的に 信頼済みとしてラベル付けされます 。 Space ユーザーは、応答のパラメーター値を編集し、新しい値を使用してクエリを再実行できます。
クエリの正確なテキストが使用されていない場合、またはクエリの例でパラメーターが使用されていない場合、クエリはコンテキストを提供し、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 Catalog関数が作成されると、Genie スペースで少なくともCAN EDIT権限を持つユーザーは、Genieスペースの Instruction タブから関数を追加できます。
必要な権限
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)