ai_query
functie
Van toepassing op: Databricks SQL
Databricks Runtime
Belangrijk
Deze functie is beschikbaar als openbare preview.
Roept een bestaand Azure Databricks Model Serving-eindpunt aan en parseert en retourneert het antwoord.
Om ai_query
in productiewerkstromen te gebruiken, raadpleeg Voer batch LLM-afleiding uit met AI Functions.
Eisen
Notitie
- In Databricks Runtime 14.2 en hoger wordt deze functie ondersteund in Databricks-notebooks, waaronder notebooks die worden uitgevoerd als een taak in een Databricks-werkstroom.
- In Databricks Runtime 14.1 en lager wordt deze functie niet ondersteund in Databricks-notebooks.
Deze functie is niet beschikbaar in Azure Databricks SQL Classic.
U moet Azure Private Link inschakelen om deze functie te kunnen gebruiken in pro SQL Warehouses.
Databricks Runtime 15.3 of hoger wordt aanbevolen. Het gebruik van Databricks Runtime 15.2 of lager kan leiden tot tragere prestatiesnelheden.
Uw werkruimte moet zich in een ondersteunde regio voor het leveren van modellen bevinden.
Een bestaand model dat het eindpunt bedient terwijl uw model is geladen. Als u een door Databricks gehost basismodel gebruikt, wordt er een eindpunt voor u gemaakt. Zie anders Aangepast model maken voor eindpunten of Basismodel maken voor eindpunten.
Query's uitvoeren op Foundation Model-API's is standaard ingeschakeld. Eindpunten die specifieke aangepaste modellen of externe modellenbedienen, opvragen.
- Schakel AI_Query in voor aangepaste modellen en externe modellen in de gebruikersinterface van Databricks Previews.
Het huidigeDLT-magazijnkanaal gebruikt niet de nieuwste versie van Databricks Runtime die
ai_query()
ondersteunt. Stel depipelines.channel
in de tabeleigenschappen in als'preview'
omai_query()
te gebruiken.> 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;
Syntaxis
Een query uitvoeren op een eindpunt dat een basismodel dient, inclusief externe modellen of een aangepast basismodel:
ai_query(endpoint, request)
Een query uitvoeren op een aangepast model voor eindpunten met een modelschema:
ai_query(endpoint, request)
Een query uitvoeren op een aangepast model voor eindpunten zonder modelschema:
ai_query(endpoint, request, returnType, failOnError)
Argumenten en retourwaarden
Betoog | Beschrijving | Retouren |
---|---|---|
endpoint |
Een STRING literal, de naam van een Databricks Foundation Model voor het bedienen van een eindpunt, een extern model dat eindpunt bedient of een aangepast modeleindpunt in dezelfde werkruimte voor oproepen. De definieerder moet CAN QUERY machtiging hebben voor het eindpunt. |
|
request |
Een expressie, de aanvraag die wordt gebruikt om het eindpunt aan te roepen.
|
|
returnType |
Een expressie, de verwachte returnType van het eindpunt. Dit is vergelijkbaar met de schemaparameter in from_json functie, die zowel een STRING expressie als aanroep van schema_of_json functie accepteert.
|
|
failOnError |
(Optioneel) Een booleaanse letterlijke waarde die standaard waar is. Met deze vlag wordt aangegeven of de foutstatus in het ai_query antwoord moet worden opgenomen. |
Zie Fouten verwerken met behulp van failOnError voor een voorbeeld. |
modelParameters |
(Optioneel) Een structveld dat chat-, voltooiings- en insluitmodelparameters bevat voor het leveren van basismodellen of externe modellen. Deze modelparameters moeten constante parameters zijn en niet gegevensafhankelijk. Wanneer deze modelparameters niet zijn opgegeven of zijn ingesteld op null wordt de standaardwaarde gebruikt. Met uitzondering van temperature die een standaardwaarde van 0.0 heeft, zijn de standaardwaarden voor deze modelparameters hetzelfde als die worden vermeld in Rest API-verwijzingvan het Foundation-model.Zie Een model configureren door modelparameters door te geven voor een voorbeeld. |
|
responseFormat |
(Optioneel) Een JSON-tekenreeksveld dat de antwoordindeling aangeeft die het model moet volgen. Er worden drie tekenreekstypen van de antwoordindeling ondersteund:
|
Zie Handhaaf het uitvoerschema met gestructureerde uitvoer voor een voorbeeld. |
de prompt en deductiekolom samenvoegen
Er zijn meerdere manieren om de prompt en de deductiekolom samen te voegen, zoals het gebruik van ||
, CONCAT()
of format_string()
:
SELECT
CONCAT('${prompt}', ${input_column_name}) AS concatenated_prompt
FROM ${input_table_name};
U kunt ook het volgende doen:
SELECT
'${prompt}' || ${input_column_name} AS concatenated_prompt
FROM ${input_table_name};
Of met behulp van format_string()
:
SELECT
format_string('%s%s', '${prompt}', ${input_column_name}) AS concatenated_prompt
FROM ${input_table_name};
een model configureren door modelparameters door te geven
Pas modelgedrag aan door specifieke parameters, zoals maximumtokens en temperatuur, door te geven. Voorbeeld:
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;
fouten verwerken met behulp van failOnError
Gebruik het argument failOnError
voor ai_query
om fouten te verwerken. In het volgende voorbeeld ziet u hoe u ervoor kunt zorgen dat als één rij een fout bevat, de hele query niet wordt uitgevoerd. Zie Argumenten en retourneert voor verwacht gedrag op basis van hoe dit argument is ingesteld.
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;
Het uitvoerschema afdwingen met gestructureerde output
Zorg ervoor dat de uitvoer voldoet aan een specifiek schema voor eenvoudiger downstreamverwerking. U kunt bijvoorbeeld een JSON-schemaresponsformaat afdwingen.
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;
U kunt ook een JSON-schema in DDL-stijl gebruiken:
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;
Een verwachte uitvoer kan er als volgt uitzien:
{ "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
gebruiken in door de gebruiker gedefinieerde functies
U kunt een aanroep naar ai_query
in een UDF laten teruglopen, zodat u functies eenvoudig kunt gebruiken in verschillende werkstromen en deze kunt delen.
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;
voorbeeld: een query uitvoeren op een basismodel
Om een query uit te voeren op een extern model dat wordt bediend via een eindpunt:
> 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."
Een query uitvoeren op een basismodel dat wordt ondersteund door Databricks Foundation Model-API's:
> 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
U kunt desgewenst ook een oproep naar ai_query()
in een UDF verpakken om een functie als volgt aan te roepen:
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;
Voorbeeld: Gebruiksscenario voor batchafleiding
Hieronder volgt een voorbeeld van batch-inferentie met behulp van failOnError
en modelParameters
en met max_tokens
en temperature
.
In dit voorbeeld ziet u ook hoe u de prompt voor uw model en de deductiekolom kunt samenvoegen met behulp van CONCAT()
.
Er zijn meerdere manieren om samenvoeging uit te voeren, zoals het gebruik ||
, concat()
of 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}
)
Voorbeeld: Een query uitvoeren op een traditioneel ML-model
Een query uitvoeren op een aangepast model of een traditioneel ML-model voor eindpunten:
> 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."]}