ジョブにおける AI 関数タスク
ベータ版
この機能はベータ版です。使用するには、ワークスペース管理者は プレビュー ページから Lakeflow AI Function タスク を有効にする必要があります。Databricksのプレビューを管理を参照してください。
ジョブの一部として、Unity Catalog ボリューム内のすべてのファイルまたはテーブルのすべての行で AI 関数 をランするには、AI 関数タスクを使用します。タスクは、ファイルまたは行ごとに 1 つの結果を、作成および管理する Unity Catalog テーブルに書き込みます。各ランは、前回のラン以降に追加、変更、または削除されたファイルまたは行のみを処理します。ジョブ API および宣言型自動化バンドルでは、AI 関数タスクは ai_function_task であり、その関数設定によって、タイプ ai_parse_document、ai_extract、または ai_classify が決定されます。
AI 関数タスクタイプ
各タスクタイプは1つの AI 関数をランし、その関数に基づいた名前が付けられます(例: ai_parse_document タスク)。ジョブ UI では、タスクタイプは ドキュメントインテリジェンス の下に表示されます。タスクを追加するには、そのタスクタイプのページを参照してください。
インテリジェントドキュメント処理
たとえば、AI 関数タスクを使用して、次のようなことができます。
- 毎晩ボリュームに追加される新しい契約を解析します。
ai_parse_documentタスクが解析したドキュメントから請求書フィールドを抽出します。- 受信したサポートチケットを、後のタスクがルーティングする前に緊急度に応じて分類します。
要件
-
タスクリストに Document intelligence が表示されない場合は、ワークスペース管理者が Lakeflow AI Function タスク プレビューを有効にする必要があります。
-
AI 関数は、ワークスペースのリージョンで利用可能である必要があります。地域限定で利用できる機能を参照してください。
-
出力スキーマは、タスクの実行前に存在している必要があります。
-
ジョブの ランユーザー は、次の権限を持っている必要があります:
USE CATALOGおよび入力と出力のカタログおよびスキーマに関するUSE SCHEMA。SELECT入力テーブル上で、または入力ボリューム上でREAD VOLUME。CREATE TABLE出力テーブルを作成するランの出力スキーマについて。MODIFY出力テーブルの後のラン。EXECUTE組織が AI Functions へのアクセスを制限している場合は、system.aiの関数にアクセスしてください。AI Functions Unity Catalog の権限を参照してください。
-
入力テーブルでは、チェンジデータフィードが有効になっている必要があります。有効にするには、以下を実行します。
SQLALTER TABLE <table-name> SET TBLPROPERTIES (delta.enableChangeDataFeed = true); -
ID カラム を追加しない場合、入力カラムが
FILEタイプでなければ、入力テーブルで 行トラッキング も有効にする必要があります。それを有効にするには、以下をラン:SQLALTER TABLE <table-name> SET TBLPROPERTIES (delta.enableRowTracking = true);
入力
[入力] で、Unity Catalog ボリューム、または各ファイルで関数を実行するためのボリューム内のフォルダーを選択します。または、テーブルと、各行で関数をランするコンテンツを保持する [列] を選択します。サポートされているソースと列のタイプは、タスクタイプによって異なります。AI関数のタスクタイプを参照してください。
ドキュメント入力については、Databricks は以下を推奨しています。
- ドキュメントを
BINARY列としてではなく、FILE(ベータ版)列としてテーブルに保存します。 - ボリューム入力の場合は、ボリュームの外部ロケーションに対してファイルイベントをオンにします。ファイルイベントは必須ではありませんが、これらを使用すると、タスクは新規および変更されたファイルをより迅速に検出します。
ID列
テーブル入力の場合は、主キーなどの ID列 を追加できます。追加するには、 ID列 の横にある [追加] をクリックします。タスクは、ID列を使用して結果をラン全体でソース行と照合し、出力テーブルにコピーします。ID列がない場合、タスクは行トラッキングIDによって行を識別します。FILE列の場合、タスクは代わりにファイルのURIによって行を識別するため、行トラッキングは不要であり、同じファイルを参照する行は1つの結果を共有します。
出力
[出力] で、 [場所] を選択します。出力テーブルの Unity Catalog カタログとスキーマです。 テーブル名 を入力しない場合、タスクは parsed、extracted、または classified を起動として始まり、実行全体で同じままのテーブル名を生成します。
タスクは、その出力テーブルを作成および管理します。同じ名前のテーブルが既に存在し、タスクがそれを作成しなかった場合、ランは失敗します。
後のタスクで出力を使用する
後続のタスクでは、動的値参照 {{tasks.<task_name>.output.table_name}}を使用して、AI Functionタスクの出力テーブルを読み取ることができます。
他の AI 関数タスクの後に AI 関数タスクを追加する場合、その入力は以前のタスクの出力テーブルおよび response 列を default として使用します。たとえば、 ai_parse_document タスクの後に ai_extract タスクを実行すると、解析されたドキュメントからフィールドが抽出されます。他のAI関数での使用をご覧ください。
コードでAI Functionタスクを定義する
宣言型オートメーションバンドル、Databricks CLI、または Jobs API で AI 関数タスクを定義できます。タスクに ai_function_task を追加し、1 つの入力 (volume または delta_table)、output の場所、および 1 つの関数 (ai_parse_document、ai_extract、または ai_classify) を指定します。output.table を省略した場合、タスクによってテーブル名が生成されます。例については、各タスクタイプのページを参照してください。
AI 関数タスクの仕組み
インクリメンタル処理
各ランで、タスクは前回のラン以降に新規または変更されたファイルと行を処理し、削除されたファイルと行の結果を削除します。抽出するフィールド、ラベル、指示など、タスク設定への変更は、変更後に処理される入力にのみ適用されます。それらをすべての入力に適用するには、新しい テーブル名 を入力します。タスクの入力または出力テーブルを変更すると、次のランですべての入力が再処理されるため、コストが増加します。AI 関数ワークロードのコストを表示する を参照してください。
出力テーブル
出力テーブルは、後のタスクがインクリメンタルに読み取ることができるストリーミングテーブルです。これには以下のカラムが含まれます。
- ID カラムまたは
id: ボリューム内のファイルのパスなど、入力を識別します。 response:関数が返す形式のVARIANTとしての、関数の完全な結果です。信頼度スコア、根拠、引用情報などのオプションの値も、この結果に含まれます。タスクでは、値ごとに列が追加されることはありません。値を列として取得するには、クエリー内でresponseからその値を選択します。error: この入力のエラー。リクエストが成功した場合はNULL。
結果をソースデータと組み合わせるには、ID 列で結合します。
ランの監視
タスクがランしている間、タスクグラフは処理された入力の割合を表示します。ラン出力には、 行 、 成功 、 失敗 の入力数、および推定残り時間( ETA )が表示されます。ラン後、 サンプルデータ に出力テーブルの行が表示されます。
制限
- タスクには、アクティブなランを 1 つだけ含めることができます。同じタスクの別のランが進行中にランを起動すると、新しいランは失敗します。
- ワークスペース内のAI Functionタスクのランは、ワークスペースのAI Functions容量を共有します。そのため、同時に多数のランが実行されると、完了までに時間がかかります。パフォーマンスを最大限に高めるには、一度にアクティブにするランを約20件以下にしてください。
その他のリソース
- AI Functionsを使用して非構造化データを変換する:AI Functionsについて説明します。
- インテリジェント文書処理: Databricks で文書を処理する方法を学びます。
- Lakeflow Jobsでのタスクの構成と編集 : Lakeflow Jobsでのタスクの構成と編集。