Funktionen ai_query
Gäller för: Databricks SQL Databricks Runtime
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Anropar en befintlig Azure Databricks Model Serving-slutpunkt och parsar och returnerar svaret.
Krav
- Den här funktionen är inte tillgänglig i Azure Databricks SQL Classic.
- Att köra frågor mot Foundation Model-API:er är aktiverat som standard. Om du vill fråga efter slutpunkter som hanterar anpassade modeller eller externa modeller aktiverar du AI_Query för anpassade modeller och externa modeller i användargränssnittet för Databricks Previews.
- Den aktuella DLT-lagerkanalen använder inte den senaste Databricks Runtime-versionen som stöder
ai_query()
.pipelines.channel
Ange i tabellegenskaperna som'preview'
att användaai_query()
. Se Exempel för en exempelfråga.
Kommentar
- I Databricks Runtime 14.2 och senare stöds den här funktionen i Databricks Notebooks, inklusive notebook-filer som körs som en uppgift i ett Databricks-arbetsflöde.
- I Databricks Runtime 14.1 och nedan stöds inte den här funktionen i Databricks Notebooks.
Syntax
Så här frågar du en slutpunkt som hanterar en extern modell eller en grundmodell:
ai_query(endpointName, request)
Så här frågar du en anpassad modell som betjänar slutpunkten med ett modellschema:
ai_query(endpointName, request)
Så här frågar du en anpassad modell som betjänar slutpunkten utan ett modellschema:
ai_query(endpointName, request, returnType)
Argument
endpointName
: En STRING-literal, namnet på en Databricks Foundation-modell som betjänar slutpunkten, en extern modell som betjänar slutpunkten eller en anpassad modellslutpunkt på samma arbetsyta för anrop. Definieraren måste ha behörigheten CAN QUERY på slutpunkten.request
: Ett uttryck, den begäran som används för att anropa slutpunkten.- Om slutpunkten är en extern modell som betjänar slutpunkten eller Databricks Foundation-modell-API:ernas slutpunkt måste begäran vara en STRING.
- Om slutpunkten är en anpassad modell som betjänar slutpunkten kan begäran vara en enda kolumn eller ett struct-uttryck. Fältnamnen för struct ska matcha de indatafunktionsnamn som förväntas av slutpunkten.
returnType
: Ett uttryck, den förväntade returnType från slutpunkten. Detta liknar schemaparametern i from_json funktion, som accepterar både ett STRING-uttryck eller anrop av schema_of_json funktion.- I Databricks Runtime 14.2 och senare, om det här uttrycket inte tillhandahålls,
ai_query()
härleds automatiskt returtypen från modellschemat för den anpassade modell som betjänar slutpunkten. - I Databricks Runtime 14.1 och nedan krävs det här uttrycket för att köra frågor mot en anpassad modell som betjänar slutpunkten.
- I Databricks Runtime 14.2 och senare, om det här uttrycket inte tillhandahålls,
Returer
Det tolkade svaret från slutpunkten.
Exempel
Så här frågar du en extern modell som betjänar slutpunkten:
> 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."
Så här frågar du en grundmodell som stöds av Api:er för Databricks Foundation-modell:
> 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
Du kan också omsluta ett anrop till ai_query()
i en UDF för funktionsanrop enligt följande:
> CREATE FUNCTION correct_grammar(text STRING)
RETURNS STRING
RETURN ai_query(
'databricks-llama-2-70b-chat',
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;
Så här frågar du en anpassad modell som betjänar slutpunkten:
> 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."]}
Exempelfråga för att ställa in DLT-kanalen som förhandsversion:
> create or replace materialized view
ai_query_mv
TBLPROPERTIES('pipelines.channel' = 'PREVIEW') AS
SELECT
ai_query("databricks-dbrx-instruct", text) as response
FROM
messages