ai_queryFunción

Se aplica a: casilla marcada como Sí Databricks SQL casilla marcada como Sí 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 de pipelines.channel la tabla como 'preview' para usar ai_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.

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