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.
Zie de volgende handleidingen voor het gebruik ai_query
van verschillende gebruiksvoorbeelden:
- Batchdeductie uitvoeren met behulp van ai_query
- Een query uitvoeren op een extern model met ai_query()
- Een query uitvoeren op een geleverd model met ai_query()
Eisen
- 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.
- Het huidige DLT-magazijnkanaal gebruikt niet de nieuwste Databricks Runtime-versie die ondersteuning biedt
ai_query()
voor . Stel depipelines.channel
eigenschappen in de tabel zo in dat'preview'
deze moeten worden gebruiktai_query()
. Zie Voorbeelden voor een voorbeeldquery. - Een bestaand model dat het eindpunt bedient terwijl uw model is geladen. Zie Aangepast model maken voor eindpunten.
- Uw werkruimte moet zich in een ondersteunde regio voor het leveren van modellen bevinden.
- Query's uitvoeren op Foundation Model-API's is standaard ingeschakeld. Eindpunten opvragen die aangepaste modellen of externe modellen leveren:
- Schakel AI_Query in voor aangepaste modellen en externe modellen in de gebruikersinterface van Databricks Previews.
- Zie Een extern model opvragen met ai_query().
- Zie Batchdeductie uitvoeren met behulp van ai_query
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.
Syntaxis
Een query uitvoeren op een eindpunt dat een extern model of een basismodel dient:
ai_query(endpointName, request)
Een query uitvoeren op een aangepast model voor eindpunten met een modelschema:
ai_query(endpointName, request)
Een query uitvoeren op een aangepast model voor eindpunten zonder modelschema:
ai_query(endpointName, request, returnType, failOnError)
Argumenten
endpointName
: Een letterlijke tekenreeks, de naam van een Databricks Foundation-model voor eindpunten, een extern model dat eindpunt dient of een aangepast modeleindpunt in dezelfde werkruimte voor aanroepen. De definitier moet de machtiging CAN QUERY hebben voor het eindpunt.request
: Een expressie, de aanvraag die wordt gebruikt om het eindpunt aan te roepen.- Als het eindpunt een extern model is dat een eindpunt of Databricks Foundation Model-API-eindpunt biedt, moet de aanvraag een TEKENREEKS zijn.
- Als het eindpunt een aangepast model voor eindpunt is, kan de aanvraag één kolom of een struct-expressie zijn. De veldnamen van de struct moeten overeenkomen met de namen van invoerfuncties die door het eindpunt worden verwacht.
returnType
: Een expressie, het verwachte returnType van het eindpunt. Dit is vergelijkbaar met de schemaparameter in from_json functie, die zowel een tekenreeksexpressie als aanroep van schema_of_json functie accepteert.- Als deze expressie niet is opgegeven,
ai_query()
wordt in Databricks Runtime 14.2 en hoger automatisch het retourtype afgeleid van het modelschema van het aangepaste eindpunt voor het leveren van het model. - In Databricks Runtime 14.1 en lager is deze expressie vereist voor het uitvoeren van query's op een aangepast model voor eindpunten.
- Als deze expressie niet is opgegeven,
failOnError
: (optioneel) Een booleaanse letterlijke waarde die standaard waar is. Met deze vlag wordt aangegeven of de foutstatus in hetai_query
antwoord moet worden opgenomen. De antwoordindeling verschilt wanneer dit is ingesteld opfalse
.modelParameters
(optioneel): Een structveld dat chat-, voltooiings- en insluitingsmodelparameters bevat voor het leveren van basismodellen of externe modellen. Deze modelparameters moeten constante parameters zijn en niet gegevensafhankelijk. Wanneer deze modelparameters niet worden opgegeven of ingesteld opnull
de standaardwaarde, wordt gebruikt. Met uitzondering vantemperature
een standaardwaarde van 0.0 zijn de standaardwaarden voor deze modelparameters hetzelfde als de waarden die worden vermeld in de REST API-verwijzing van het Foundation-model.
Retouren
Het geparseerde antwoord van het eindpunt.
- Als
failOnError => true
, de functie retourneert hetzelfde resultaat als het bestaande gedrag. Dit is het geparseerde antwoord van het eindpunt. Het gegevenstype van het geparseerde antwoord wordt afgeleid van het modeltype, het eindpunt van het modelschema of dereturnType
parameter in deai_query
functie. - Als
failOnError => false
, de functie retourneert het geparseerde antwoord en de foutstatustekenreeks als een STRUCT-object.- Als de deductie van de rij is geslaagd, is het
errorStatus
veld null. - Als de deductie van de rij is mislukt vanwege fouten in het modeleindpunt, is het
response
veld null. - Als de deductie van de rij is mislukt vanwege andere fouten, mislukt de hele query.
- Als de deductie van de rij is geslaagd, is het
Voorbeelden
Hier volgt een voorbeeld van batchdeductie met behulp van en failOnError
modelParameters
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}
)
Een query uitvoeren op een extern model voor eindpunten:
> 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-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
U kunt desgewenst ook een aanroep in ai_query()
een UDF verpakken voor functie-aanroepen als volgt:
> 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;
Ga als volgende te werk om een query uit te voeren op een aangepast 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
> 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."]}
Voorbeeldquery voor het instellen van het DLT-kanaal als voorbeeld:
> create or replace materialized view
ai_query_mv
TBLPROPERTIES('pipelines.channel' = 'PREVIEW') AS
SELECT
ai_query("databricks-dbrx-instruct", text) as response
FROM
messages