適用対象: Databricks SQL
Databricks Runtime
重要
この機能はパブリック プレビュー段階にあります。
既存の Azure Databricks Model Serving エンドポイントを呼び出し、その応答を解析して返します。
運用ワークフローで ai_query
を使用するには、「 AI Functions を使用してバッチ LLM 推論を実行する」を参照してください。
要件
この関数は、Azure Databricks SQL クラシックでは使用できません。
プロ SQL ウェアハウスでこの機能を使うには、Azure Private Link を有効にする必要があります。
Databricks Runtime 15.4 LTS 以降をお勧めします。 Databricks Runtime 15.3 以下を使用すると、パフォーマンス速度が低下する可能性があります。
ワークスペースは、サポートされている Model Serving リージョンにある必要があります。
モデルが読み込まれた既存のモデル サービス エンドポイント。 Databricks でホストされる基盤モデルを使用している場合は、エンドポイントが自動的に作成されます。 それ以外の場合は、「 エンドポイントを提供するカスタム モデルを作成する 」または「 エンドポイントを提供する基盤モデルを作成する」を参照してください。
Foundation Model API のクエリは、既定で有効になっています。 カスタム モデルまたは外部モデルを提供するエンドポイントに対してクエリを実行するには:
- Databricks Previews UI でカスタム モデルと外部モデル用の AI_Query を有効にします。
現在のLakeflow 宣言型パイプライン ウェアハウス チャネルでは、
ai_query()
をサポートする最新の Databricks Runtime バージョンは使用されません。 テーブル プロパティのpipelines.channel
を'preview'
として設定し、ai_query()
を使用します。> create or replace materialized view ai_query_mv TBLPROPERTIES('pipelines.channel' = 'PREVIEW') AS SELECT ai_query("databricks-meta-llama-3-3-70b-instruct", text) as response FROM messages LIMIT 10;
構文
基盤モデルを提供するエンドポイントに対してクエリを実行するには:
ai_query(endpoint, request)
カスタム モデル提供エンドポイントにモデルスキーマをクエリするには:
ai_query(endpoint, request)
カスタム モデル提供エンドポイントにモデルスキーマなしでクエリするには:
ai_query(endpoint, request, returnType, failOnError)
引数と戻り値
引数 | 説明 | 戻り値 |
---|---|---|
endpoint |
Databricks Foundation Model の提供エンドポイント名、外部モデルの提供エンドポイント、または STRING リテラルとして呼び出しに使用する同じワークスペース内のカスタムモデルのエンドポイント名。 定義子には、エンドポイントに対する CAN QUERY アクセス許可が必要です。 |
|
request |
式としてエンドポイントを呼び出すために使用される要求。
|
|
returnType |
式としてエンドポイントからの予期される returnType 。 これは、from_json 関数のスキーマ パラメーターと同様に、STRING 式または schema_of_json 関数の呼び出しの両方を受け入れます。
|
|
failOnError |
(省略可能)既定値が true のブールリテラル。 Databricks Runtime 15.3 以降が必要です。 このフラグは、エラー状態を ai_query 応答に含めるかどうかを示します。 |
例については、「 failOnError を使用してエラーを処理する」を参照してください。 |
modelParameters |
(省略可能)基礎モデルまたは外部モデルを提供するためのチャット、完了、埋め込みモデル パラメーターを含む構造体フィールド。 これらのモデル パラメーターは、データ依存ではなく定数パラメーターである必要があります。 Databricks Runtime 15.3 以降が必要です。 これらのモデル パラメーターが指定されていない場合や、null に設定されている場合は、既定値が使用されます。 既定値が temperature の 0.0 を除き、これらのモデル パラメーターの既定値は、Foundation モデル REST API リファレンスに記載されているものと同じです。例については、「 モデル パラメーターを渡してモデルを構成 する」を参照してください。 |
|
responseFormat |
(省略可能)チャット モデルに従う応答形式を指定します。 Databricks Runtime 15.4 LTS 以降が必要です。 チャット基盤モデルのクエリでのみ使用できます。 2 つのスタイルの応答形式がサポートされています。
例については、「 構造化された出力を使用して出力スキーマを適用 する」を参照してください。 |
例については、「 構造化された出力を使用して出力スキーマを適用 する」を参照してください。 |
例: 基礎モデルのクエリを実行する
外部モデルを提供するエンドポイントに対してクエリを実行する場合:
> SELECT ai_query(
'my-external-model-openai-chat',
'Describe Databricks SQL in 30 words.'
) AS summary
"Databricks SQL is a cloud-based platform for data analytics and machine learning, providing a unified workspace for collaborative data exploration, analysis, and visualization using SQL queries."
Databricks Foundation Model API でサポートされる基盤モデルに対してクエリを実行する場合:
> SELECT *,
ai_query(
'databricks-meta-llama-3-3-70b-instruct',
"Can you tell me the name of the US state that serves the provided ZIP code? zip code: " || pickup_zip
)
FROM samples.nyctaxi.trips
LIMIT 10
必要に応じて、次のように、関数呼び出しのために UDF で ai_query()
の呼び出しをラップすることもできます。
CREATE FUNCTION correct_grammar(text STRING)
RETURNS STRING
RETURN ai_query(
'databricks-meta-llama-3-3-70b-instruct',
CONCAT('Correct this to standard English:\n', text));
> GRANT EXECUTE ON correct_grammar TO ds;
- DS fixes grammar issues in a batch.
> SELECT
* EXCEPT text,
correct_grammar(text) AS text
FROM articles;
例: 従来の ML モデルのクエリを実行する
カスタム モデルまたは従来の ML モデルサービス エンドポイントに対してクエリを実行するには:
> SELECT text, ai_query(
endpoint => 'spam-classification-endpoint',
request => named_struct(
'timestamp', timestamp,
'sender', from_number,
'text', text),
returnType => 'BOOLEAN') AS is_spam
FROM messages
LIMIT 10
> SELECT ai_query(
'weekly-forecast',
request => struct(*),
returnType => 'FLOAT') AS predicted_revenue
FROM retail_revenue
> SELECT ai_query(
'custom-llama-chat',
request => named_struct("messages",
ARRAY(named_struct("role", "user", "content", "What is ML?"))),
returnType => 'STRUCT<candidates:ARRAY<STRING>>')
{"candidates":["ML stands for Machine Learning. It's a subfield of Artificial Intelligence that involves the use of algorithms and statistical models to enable machines to learn from data, make decisions, and improve their performance on a specific task over time."]}
高度なシナリオの例
次のセクションでは、エラー処理やユーザー定義関数に ai_query
を組み込む方法などの高度なユース ケースの例を示します。
プロンプトと推論列を連結する
||
、CONCAT()
、format_string()
の使用など、プロンプトと推論列を連結する方法は複数あります。
SELECT
CONCAT('${prompt}', ${input_column_name}) AS concatenated_prompt
FROM ${input_table_name};
また:
SELECT
'${prompt}' || ${input_column_name} AS concatenated_prompt
FROM ${input_table_name};
または、 format_string()
を使用します。
SELECT
format_string('%s%s', '${prompt}', ${input_column_name}) AS concatenated_prompt
FROM ${input_table_name};
モデル パラメーターを渡してモデルを構成する
最大トークンや温度などの特定のパラメーターを渡して、モデルの動作をカスタマイズします。 例えば次が挙げられます。
SELECT text, ai_query(
"databricks-meta-llama-3-3-70b-instruct",
"Please summarize the following article: " || text,
modelParameters => named_struct('max_tokens', 100, 'temperature', 0.7)
) AS summary
FROM uc_catalog.schema.table;
を使用してエラーを処理する failOnError
エラーを処理するには、failOnError
に ai_query
引数を使用します。 次の例は、1 つの行にエラーがある場合に、クエリ全体の実行を停止しないようにする方法を示しています。 この引数の設定方法に基づく予期される動作については、「 引数と戻り 値」を参照してください。
SELECT text, ai_query(
"databricks-meta-llama-3-3-70b-instruct",
"Summarize the given text comprehensively, covering key points and main ideas concisely while retaining relevant details and examples. Ensure clarity and accuracy without unnecessary repetition or omissions: " || text,
failOnError => false
) AS summary
FROM uc_catalog.schema.table;
構造化された出力を使用して出力スキーマを適用する
responseFormat
を使用してダウンストリーム処理を容易にするために、出力が特定のスキーマに準拠していることを確認します。 Azure Databricks の 構造化出力を参照してください。
次の例では、DDL スタイルの JSON 文字列スキーマを適用します。
SELECT ai_query(
"databricks-meta-llama-3-3-70b-instruct",
"Extract research paper details from the following abstract: " || abstract,
responseFormat => 'STRUCT<research_paper_extraction:STRUCT<title:STRING, authors:ARRAY<STRING>, abstract:STRING, keywords:ARRAY<STRING>>>'
)
FROM research_papers;
または、JSON スキーマ応答形式を使用します。
SELECT ai_query(
"databricks-meta-llama-3-3-70b-instruct",
"Extract research paper details from the following abstract: " || abstract,
responseFormat => '{
"type": "json_schema",
"json_schema": {
"name": "research_paper_extraction",
"schema": {
"type": "object",
"properties": {
"title": {"type": "string"},
"authors": {"type": "array", "items": {"type": "string"}},
"abstract": {"type": "string"},
"keywords": {"type": "array", "items": {"type": "string"}}
}
},
"strict": true
}
}'
)
FROM research_papers;
予想される出力は次のようになります。
{ "title": "Understanding AI Functions in Databricks", "authors": ["Alice Smith", "Bob Jones"], "abstract": "This paper explains how AI functions can be integrated into data workflows.", "keywords": ["Databricks", "AI", "LLM"] }
ユーザー定義関数で ai_query
を使用する
の呼び出しを UDF でラップできるため、さまざまなワークフローで関数を簡単に使用して共有できます。
CREATE FUNCTION correct_grammar(text STRING)
RETURNS STRING
RETURN ai_query(
'databricks-meta-llama-3-3-70b-instruct',
CONCAT('Correct this to standard English:\n', text));
GRANT EXECUTE ON correct_grammar TO ds;
SELECT
* EXCEPT text,
correct_grammar(text) AS text
FROM articles;