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ź.
Aby użyć ai_query
w produkcyjnych procesach roboczych, zobacz Przeprowadzanie wsadowego wnioskowania LLM przy użyciu AI Functions.
Wymagania
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.
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.
Obszar roboczy musi znajdować się w obsługiwanym regionie serwowania modeli.
Istniejący model obsługujący punkt końcowy z załadowanym modelem. Jeśli używasz modelu podstawowego hostowanego w usłudze Databricks, zostanie utworzony punkt końcowy. W przeciwnym razie zobacz Tworzenie niestandardowego modelu obsługującego punkty końcowe lub Tworzenie modelu podstawowego obsługującego punkty końcowe.
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 modeli zewnętrznych:
- Włącz AI_Query dla modeli niestandardowych i modeli zewnętrznych w interfejsie użytkownika wersji zapoznawczej usługi Databricks.
Bieżący kanał magazynu DLT nie używa najnowszej wersji środowiska Databricks Runtime obsługującej program
ai_query()
. Ustawpipelines.channel
we właściwościach tabeli jako'preview'
, aby użyćai_query()
.> 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;
Składnia
Aby wysłać zapytanie do punktu końcowego obsługującego model bazowy, w tym modele zewnętrzne lub niestandardowy model bazowy :
ai_query(endpoint, request)
Aby wysłać zapytanie do niestandardowego modelu obsługującego punkt końcowy za pomocą schematu modelu :
ai_query(endpoint, request)
Aby wykonywać zapytania dotyczące niestandardowego punktu końcowego obsługującego model bez schematu modelu:
ai_query(endpoint, request, returnType, failOnError)
Argumenty i wartości zwracane
Argumentacja | Opis | Zwraca |
---|---|---|
endpoint |
Literał STRING , nazwa punktu końcowego usługi Databricks Foundation Model, zewnętrznego punktu końcowego do obsługi modelu lub niestandardowego punktu końcowego modelu w tym samym obszarze roboczym dla wywołań. Definiujący musi mieć uprawnienia CAN QUERY na końcówce. |
|
request |
Wyrażenie , żądanie użyte do wywołania punktu końcowego.
|
|
returnType |
Wyrażenie oczekiwane returnType z punktu końcowego. Jest to podobne do parametru schematu w funkcji from_json , która akceptuje zarówno wyrażenie STRING , jak i wywołanie funkcji schema_of_json .
|
|
failOnError |
(Opcjonalnie) Literał logiczny domyślnie ma wartość true. Ta flaga wskazuje, czy w odpowiedzi ma być uwzględniny stan błędu ai_query . |
Zobacz Obsługuj błędy używając failOnError jako przykład. |
modelParameters |
(Opcjonalnie) Pole struktury zawierające parametry modelu czatu, uzupełniania i osadzania, przeznaczone dla modeli podstawowych lub modeli zewnętrznych. Te parametry modelu muszą być stałymi parametrami, a nie zależne od danych. Jeśli te parametry modelu nie są określone lub ustawione na null jest używana wartość domyślna. Z wyjątkiem temperature , który ma wartość domyślną 0.0 , wartości domyślne tych parametrów modelu są takie same jak te wymienione w Foundation model REST API reference.Zobacz Konfigurowanie modelu, przekazując parametry modelu na przykład. |
|
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:
|
Zobacz Wymuszanie schematu danych wyjściowych ze strukturą na przykład. |
Konfigurowanie modelu przez przekazywanie parametrów modelu
Dostosuj zachowanie modelu, przekazując określone parametry, takie jak maksymalne tokeny i temperatura. Na przykład:
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;
Obsługa błędów przy użyciu failOnError
Użyj argumentu failOnError
dla ai_query
do obsługi błędów. W poniższym przykładzie pokazano, jak upewnić się, że jeśli jeden wiersz zawiera błąd, nie zatrzyma uruchomienia całego zapytania. Zobacz Argumenty i zwracane wartości dla oczekiwanych zachowań na podstawie sposobu ustawienia tego argumentu.
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;
Wymuszanie schematu wyjściowego poprzez uporządkowaną strukturę
Upewnij się, że dane wyjściowe są zgodne z określonym schematem w celu łatwiejszego przetwarzania podrzędnego. Można na przykład wymusić format odpowiedzi schematu 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;
Alternatywnie należy użyć schematu JSON stylu DDL:
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;
Oczekiwane dane wyjściowe mogą wyglądać następująco:
{ "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"] }
Używanie ai_query
w funkcjach zdefiniowanych przez użytkownika
Można opakować wywołanie ai_query
w funkcji zdefiniowanej przez użytkownika, co ułatwia użycie funkcji w różnych przepływach pracy i ich udostępnianie.
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;
Przykład: wykonywanie zapytań względem modelu podstawowego
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 do modelu bazowego obsługiwanego przez API Databricks Foundation Model:
> 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
Opcjonalnie, można również owinąć wywołanie ai_query()
w UDF w celu wywołania funkcji w następujący sposób:
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;
Połącz kolumny monitu i wnioskowania
Istnieje wiele sposobów łączenia monitu i kolumny wnioskowania, takich jak używanie ||
, CONCAT()
lub format_string()
:
SELECT
CONCAT('${prompt}', ${input_column_name}) AS concatenated_prompt
FROM ${input_table_name};
Inna możliwość:
SELECT
'${prompt}' || ${input_column_name} AS concatenated_prompt
FROM ${input_table_name};
lub używając format_string()
:
SELECT
format_string('%s%s', '${prompt}', ${input_column_name}) AS concatenated_prompt
FROM ${input_table_name};
Przekazywanie failOnError
i modelParameters
dla modeli podstawowych
W poniższym przykładzie pokazano, jak przekazać parametry failOnError
i modelParameters
, w tym max_tokens
i temperature
, dla modeli podstawowych.
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}
);
Przykład: przypadek użycia wnioskowania wsadowego
Poniżej przedstawiono przykład wnioskowania wsadowego przy użyciu elementów failOnError
i modelParameters
oraz max_tokens
i temperature
.
W tym przykładzie pokazano również, jak połączyć monit dla modelu i kolumnę wnioskowania przy użyciu CONCAT()
.
Istnieje wiele sposobów łączenia, takich jak używanie ||
, 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}
)
Przykład: Wykonywanie zapytań względem tradycyjnego modelu uczenia maszynowego
Aby wysłać zapytanie do modelu niestandardowego lub tradycyjnego modelu uczenia maszynowego obsługującego punkt końcowy:
> 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."]}