ai_query
Función
Se aplica a: Databricks SQL Databricks Runtime
Importante
Esta característica está en versión preliminar pública.
Invoca un punto de conexión existente del servicio de modelo de Azure Databricks y analiza y devuelve su respuesta.
Requisitos
- Esta función no está disponible en Azure Databricks SQL Classic.
- Querying Foundation Model API está habilitada de manera predeterminada. Para consultar puntos de conexión que atiendan modelos personalizados o modelos externos, habilite AI_Query para modelos personalizados y modelos externos en la interfaz de usuario de Databricks Previews.
- El canal de almacenamiento DLT actual no usa la versión más reciente de Databricks Runtime compatible con
ai_query()
. Establece en las propiedades depipelines.channel
la tabla como'preview'
para usarai_query()
. Consulta Ejemplos para una consulta de ejemplo.
Nota:
- En Databricks Runtime 14.2 y versiones posteriores, esta función se admite en cuadernos de Databricks, incluidos los cuadernos que se ejecutan como una tarea en un flujo de trabajo de Databricks.
- En Databricks Runtime 14.1 y versiones posteriores, esta función no se admite en cuadernos de Databricks.
Sintaxis
Para consultar un punto de conexión que sirve un modelo externo o un modelo de base de:
ai_query(endpointName, request)
Para consultar un punto de conexión de servicio de modelo personalizado con un esquema de modelo:
ai_query(endpointName, request)
Para consultar un punto de conexión de servicio de modelo personalizado sin un esquema de modelo:
ai_query(endpointName, request, returnType)
Argumentos
endpointName
: un literal STRING, el nombre de un punto de conexión de servicio de modelo de Databricks Foundation, un modelo externo que sirve un punto de conexión o un punto de conexión de modelo personalizado en la misma área de trabajo para las invocaciones. El definidor debe tener el permiso CAN QUERY en el punto de conexión.request
: una expresión, la solicitud utilizada para invocar el punto de conexión.- Si el punto de conexión es un modelo externo que atiende el punto de conexión o Databricks Foundation Model API, la solicitud debe ser una cadena.
- Si el punto de conexión es un punto de conexión de servicio de modelo personalizado, la solicitud puede ser una sola columna o una expresión de estructura. Los nombres de campo de estructura deben coincidir con los nombres de características de entrada esperados por el punto de conexión.
returnType
: una expresión, el valor returnType esperado del punto de conexión. Esto es similar al parámetro de esquema en from_json función, que acepta una expresión STRING o invocación de schema_of_json función.- En Databricks Runtime 14.2 y versiones posteriores, si no se proporciona esta expresión,
ai_query()
deduce automáticamente el tipo de valor devuelto del esquema de modelo del punto de conexión de servicio del modelo personalizado. - En Databricks Runtime 14.1 y versiones posteriores, esta expresión es necesaria para consultar un punto de conexión de servicio de modelo personalizado.
- En Databricks Runtime 14.2 y versiones posteriores, si no se proporciona esta expresión,
Devoluciones
Respuesta analizada del punto de conexión.
Ejemplos
Para consultar un punto final de servicio de modelo externo:
> 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."
Para consultar un modelo de base compatible con las API de modelo de 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
Opcionalmente, también puede encapsular una llamada a ai_query()
en una UDF para realizar llamadas de función como se indica a continuación:
> 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;
Para consultar un punto de conexión de servicio de modelo personalizado:
> 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."]}
Consulta de ejemplo para establecer el canal DLT en versión preliminar:
> create or replace materialized view
ai_query_mv
TBLPROPERTIES('pipelines.channel' = 'PREVIEW') AS
SELECT
ai_query("databricks-dbrx-instruct", text) as response
FROM
messages