Funkcja ai_query
Dotyczy: Databricks SQL Databricks Runtime
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
Wywołuje istniejący punkt końcowy obsługujący model usługi Azure Databricks i analizuje i zwraca odpowiedź.
Zapoznaj się z następującymi przewodnikami, aby dowiedzieć się, jak używać ai_query
różnych przypadków użycia:
- Wykonać wnioskowanie wsadowe w usłudze LLM przy użyciu ai_query
- Wykonywanie zapytań względem modelu zewnętrznego przy użyciu ai_query
- Wykonywanie zapytań o obsługiwany model przy użyciu ai_query
Wymagania
- Ta funkcja nie jest dostępna w usłudze Azure Databricks SQL Classic.
- Aby korzystać z tej funkcji w usłudze Pro SQL Warehouse, musisz włączyć usługę Azure Private Link .
- Zalecane jest środowisko Databricks Runtime 15.3 lub nowsze. Użycie środowiska Databricks Runtime 15.2 lub nowszego może spowodować obniżenie szybkości wydajności.
- Bieżący kanał magazynu DLT nie używa najnowszej wersji środowiska Databricks Runtime obsługującej program
ai_query()
. Setpipelines.channel
we właściwościach table jako'preview'
do użyciaai_query()
. Zobacz Przykłady przykładowego zapytania. - Istniejący model obsługujący punkt końcowy z załadowanym modelem. Zobacz Tworzenie niestandardowych punktów końcowych obsługujących model.
- Obszar roboczy musi znajdować się w obsługiwanym regionie obsługa modeli.
- Interfejsy API modelu programu Querying Foundation są domyślnie włączone. Aby wykonywać zapytania dotyczące punktów końcowych obsługujących modele niestandardowe lub modele zewnętrzne:
- Włącz AI_Query dla modeli niestandardowych i modeli zewnętrznych w interfejsie użytkownika wersji zapoznawczej usługi Databricks.
- Zobacz
Query an external model with ai_query (Wykonywanie zapytań względem modelu zewnętrznego przy użyciu ai_query). - Zobacz wykonywanie wnioskowania wsadowego LLM przy użyciu ai_query
Uwaga
- W środowisku Databricks Runtime 14.2 lub nowszym ta funkcja jest obsługiwana w notesach usługi Databricks, w tym notesach uruchamianych jako zadanie w przepływie pracy usługi Databricks.
- W środowisku Databricks Runtime 14.1 lub nowszym ta funkcja nie jest obsługiwana w notesach usługi Databricks.
Składnia
Aby wysłać zapytanie do punktu końcowego obsługującego model zewnętrzny lub model podstawowy:
ai_query(endpoint, request)
Aby wysłać zapytanie do niestandardowego modelu obsługującego punkt końcowy za pomocą modelu schema:
ai_query(endpoint, request)
Aby wysłać zapytanie do niestandardowego punktu końcowego obsługującego modele bez konieczności wskazywania konkretnego modelu schema:
ai_query(endpoint, request, returnType, failOnError)
Argumenty
-
endpoint
: literałSTRING
, nazwa punktu końcowego do obsługi modelu Databricks Foundation, zewnętrznego punktu końcowego do obsługi modelu lub punktu końcowego modelu niestandardowego w tym samym obszarze roboczym do wywołań. Definiujący musi mieć uprawnieniaCAN QUERY
na końcówce. -
request
: wyrażenie , żądanie użyte do wywołania punktu końcowego.- Jeśli punkt końcowy to punkt końcowy dla zewnętrznego modelu albo punkt końcowy interfejsu API modelu Databricks Foundation, żądanie musi być
STRING
. - Jeśli punkt końcowy jest punktem końcowym obsługującym model niestandardowy, żądanie może być pojedynczym column lub wyrażeniem strukturalnym. Nazwy pól struktury powinny być zgodne z nazwami funkcji wejściowych oczekiwaną przez punkt końcowy.
- Jeśli punkt końcowy to punkt końcowy dla zewnętrznego modelu albo punkt końcowy interfejsu API modelu Databricks Foundation, żądanie musi być
-
returnType
: Wyrażenie, oczekiwanereturnType
z punktu końcowego. Jest to podobne do parametru schema w funkcji from_json, który akceptuje zarówno wyrażenieSTRING
, jak i wywołanie funkcji schema_of_json.- W środowisku Databricks Runtime 14.2 i nowszym, jeśli to wyrażenie nie zostanie podane,
ai_query()
automatycznie wywnioskuje typ zwracany z modelu schema niestandardowego punktu końcowego obsługującego model. - W środowisku Databricks Runtime 14.1 lub nowszym to wyrażenie jest wymagane do wykonywania zapytań dotyczących niestandardowego punktu końcowego obsługującego model.
- W środowisku Databricks Runtime 14.2 i nowszym, jeśli to wyrażenie nie zostanie podane,
-
failOnError
: (opcjonalnie) Literał logiczny domyślnie ma wartość true. Ta flaga wskazuje, czy w odpowiedzi ma być uwzględniny stan błęduai_query
. -
modelParameters
(opcjonalnie): pole struktury zawierające czat, uzupełnianie i osadzanie modelu parameters do obsługi modeli podstawowych lub modeli zewnętrznych. Te modele parameters muszą być stałe parameters, a nie zależne od danych. Jeśli modele parameters nie są określone lub zakres od set donull
, używana jest wartość domyślna. Z wyjątkiemtemperature
, która ma domyślną wartość0.0
, domyślne values dla tych modeli parameters są takie same jak te wymienione w dokumentacji REST API modelu bazowego . -
responseFormat
(opcjonalnie): pole ciągu JSON określające format odpowiedzi, którego model ma przestrzegać. Obsługiwane są trzy typy ciągów w formacie odpowiedzi:text
json_object
json_schema
Zwraca
Przeanalizowana odpowiedź z punktu końcowego.
- Jeśli
failOnError => true
funkcja zwraca ten sam wynik co istniejące zachowanie, czyli przeanalizowaną odpowiedź z punktu końcowego. Typ danych przeanalizowanej odpowiedzi jest wnioskowany z typu modelu, punktu końcowego schema modelu lub parametrureturnType
w funkcjiai_query
. - Jeśli
failOnError => false
, funkcja zwraca przeanalizowaną odpowiedź i ciąg stanu błędu jako obiektSTRUCT
.- Jeśli wnioskowanie wiersza zakończyło się pomyślnie, pole
errorStatus
jestnull
. - Jeśli wnioskowanie wiersza nie powiodło się z powodu błędów punktu końcowego modelu, pole
response
jestnull
. - Jeśli wnioskowanie wiersza nie powiodło się z powodu innych błędów, całe zapytanie kończy się niepowodzeniem.
- Jeśli wnioskowanie wiersza zakończyło się pomyślnie, pole
- W zależności od typu ciągu JSON określonego w
responseFormat
zwracana jest następująca odpowiedź:- W przypadku
responseFormat => '{“type”, “text”}'
odpowiedź jest ciągiem, takim jak“Here is the response”
. - W przypadku
responseFormat => '{“type”, “json_object”}'
odpowiedzią jest ciąg JSON w formie pary klucz-wartość, na przykład{“key”: “value”}
. - W przypadku
responseFormat => '{“type”, “json_schema”...}'
odpowiedź jest ciągiem JSON. Zobacz przykłady .
- W przypadku
- Jeśli
failOnError => false
i określonoresponseFormat
, funkcja zwraca przeanalizowaną odpowiedź i ciąg stanu błędu jako obiektSTRUCT
.
przykłady
W poniższym przykładzie określono format odpowiedzi json_schema
:
SELECT
ai_query(
"llama-3-1-70b",
<request>,
responseFormat =>'{
"type": "json_schema",
"json_schema":
{
"name": "research_paper_extraction",
"schema":
{
"type": "object",
"properties":
{
"title": { "type": "string" }
}
},
"strict": true
}
}'
)
Poniżej przedstawiono przykładowe dane wyjściowe dla określonego formatu odpowiedzi json_schema
:
{"title": "<the title of the paper>"}
Poniżej przedstawiono przykład wnioskowania wsadowego przy użyciu elementów failOnError
i modelParameters
i max_tokens
.temperature
W tym przykładzie pokazano również, jak połączyć monit dla modelu i proces wnioskowania column z użyciem concat()
.
Istnieje wiele sposobów łączenia, takich jak używanie ||
metody , concat()
lub format_string()
.
CREATE OR REPLACE TABLE ${output_table_name} AS (
SELECT
${input_column_name},
AI_QUERY(
"${endpoint}",
CONCAT("${prompt}", ${input_column_name}),
failOnError => false,
modelParameters => named_struct('max_tokens', ${num_output_tokens},'temperature', ${temperature})
) as response
FROM ${input_table_name}
LIMIT ${input_num_rows}
)
Aby wysłać zapytanie do zewnętrznego punktu końcowego obsługującego model:
> 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."
Aby wykonywać zapytania dotyczące modelu podstawowego obsługiwanego przez interfejsy API modelu usługi Databricks Foundation:
> SELECT *,
ai_query(
'databricks-meta-llama-3-1-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
Opcjonalnie można również opakowować wywołanie w ai_query()
funkcji zdefiniowanej przez użytkownika w celu wywoływania funkcji w następujący sposób:
> CREATE FUNCTION correct_grammar(text STRING)
RETURNS STRING
RETURN ai_query(
'databricks-meta-llama-3-1-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;
Aby wysłać zapytanie do punktu końcowego obsługującego model niestandardowy:
> 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-2-7b-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."]}
Przykładowe zapytanie dotyczące ustawiania kanału DLT na podgląd:
> create or replace materialized view
ai_query_mv
TBLPROPERTIES('pipelines.channel' = 'PREVIEW') AS
SELECT
ai_query("databricks-dbrx-instruct", text) as response
FROM
messages
LIMIT 10;