Compartilhar via


ai_query Função

Aplica-se a:seleção marcada como sim Databricks SQL seleção marcada como sim Databricks Runtime

Important

Essa funcionalidade está em conformidade com a Versão Prévia Pública e com HIPAA.

Durante a visualização:

Invoca um ponto de extremidade do Serviço de Modelo existente do Azure Databricks e analisa e retorna sua resposta.

ai_query é uma função de IA de uso geral que permite consultar pontos de extremidade existentes para cargas de trabalho de inferência em tempo real ou inferência em lotes.

Requisitos

Syntax

Para consultar um ponto de extremidade que serve a um modelo de base:

ai_query(endpoint, request)

Para consultar um modelo personalizado que serve o ponto de extremidade com um esquema de modelo:

ai_query(endpoint, request)

Para consultar um ponto de extremidade do Serviço de Modelo personalizado sem um esquema de modelo:

ai_query(endpoint, request, returnType, failOnError)

Argumentos e retornos

Argument Description Returns
endpoint O nome de um ponto de extremidade do Serviço de Modelo do Databricks Foundation, um ponto de extremidade do serviço externo ou um ponto de extremidade de modelo personalizado no mesmo workspace para invocações como um literal STRING. O definidor precisa ter a permissão CAN QUERY no ponto de extremidade.
request A solicitação usada para invocar o ponto de extremidade como uma expressão.
  • Se o ponto de extremidade for um ponto de extremidade do Serviço de Modelo externo ou um ponto de extremidade das APIs do Modelo de Base do Databricks, a solicitação deverá ser um STRING.
  • Se o ponto de extremidade for um modelo personalizado que serve o ponto de extremidade, a solicitação poderá ser uma única coluna ou uma expressão STRUCT. Os nomes de campo STRUCT devem corresponder aos nomes de características de entrada esperados pelo endpoint.
returnType (Opcional para Databricks Runtime 15.2 e superior) O esperado returnType do ponto de extremidade como uma expressão. Isso é semelhante ao parâmetro de esquema da função from_json, que aceita tanto uma STRING expressão quanto a invocação da schema_of_json função.
  • Para o Databricks Runtime 15.2 e superior, essa expressão é opcional. Se não for fornecido, ai_query() inferirá automaticamente o tipo de retorno do esquema de modelo do ponto de extremidade de serviço do modelo personalizado.
  • Para o Databricks Runtime 15.1 e abaixo, essa expressão é necessária para consultar um modelo personalizado que atende ao ponto de extremidade.

Use o responseFormat parâmetro para especificar formatos de resposta para modelos de base de chat.
failOnError (Opcional) Um literal booliano que usa como padrão verdadeiro. Requer o Databricks Runtime 15.3 ou superior. Esse sinalizador indica se o status do erro deve ser incluído na ai_query resposta.
Veja como lidar com erros usando failOnError como exemplo.
O seguinte descreve o comportamento de retorno com base no failOnError cenário:
  • Se failOnError => true, a função retornará o mesmo resultado que o comportamento existente, que é a resposta analisada do ponto de extremidade. O tipo de dados da resposta analisada é inferido do tipo de modelo, do ponto de extremidade do esquema de modelo ou do parâmetro returnType na função ai_query.
  • Se failOnError => false, a função retornará um STRUCT objeto que contém a resposta analisada e a cadeia de caracteres de status de erro.
    • Se a inferência da linha for bem-sucedida, o errorStatus campo será null.
    • Se a inferência da linha falhar devido a erros de ponto de extremidade de modelo, o campo response será null.
    • Se a inferência da linha falhar devido a outros erros, toda a consulta falhará.
modelParameters (Opcional) Um campo de struct que contém parâmetros de modelo de chat, conclusão e inserção para servir modelos de base ou modelos externos. Esses parâmetros de modelo devem ser parâmetros constantes e não dependentes de dados.
  • Requer o Databricks Runtime 15.3 ou superior.
  • Quando esses parâmetros de modelo não são especificados ou configurados para null o valor padrão, é usado. Com exceção de temperature que tem um valor padrão de 0.0, os valores padrão para esses parâmetros de modelo são os mesmos listados na referência da API REST do modelo do Foundation.

Consulte Configurar um modelo passando parâmetros de modelo para um exemplo.
responseFormat (Opcional) Especifique o formato de resposta que você deseja que o modelo de base de chat siga.
  • Requer o Databricks Runtime 15.4 LTS ou superior. Disponível apenas para consultar modelos de base de chat.
  • Há suporte para dois estilos de formato de resposta.
    • Uma cadeia de caracteres JSON de estilo DDL
    • Uma cadeia de caracteres JSON. Há suporte para três tipos de cadeia de caracteres JSON de formato de resposta:text, , json_objectjson_schema

Consulte Aplicar esquema de saída com saída estruturada para exemplos.
O seguinte descreve o que acontece quando failOnError também é definido quando responseFormat é especificado:
  • Se failOnError => false e você especificou responseFormat, a função retornará a resposta analisada e a cadeia de caracteres de status de erro como um objeto STRUCT.
  • Dependendo do tipo de cadeia de caracteres JSON especificado em responseFormat, a seguinte resposta é retornada:
    • Para responseFormat => '{"type": "text"}', a resposta é uma cadeia de caracteres como, “Here is the response”.
    • Para responseFormat => '{"type": "json_object"}', a resposta é uma cadeia de caracteres JSON de par chave-valor, como {“key”: “value”}.
    • Para responseFormat => '{"type": "json_schema", "json_schema"...}', a resposta é uma cadeia de caracteres JSON.
files (Opcional) Especifique quais arquivos e conteúdo usar em suas solicitações de entrada multimodal usando files=>content. files é o nome do parâmetro esperado pelo modelo para entrada multimodal e content refere-se à coluna no DataFrame que contém o conteúdo binário dos arquivos de imagem que você deseja usar em sua consulta.
  • Necessário para solicitações multimodais.
  • Somente entradas de imagem: JPEG ou PNG têm suporte. Veja as entradas multimodais como exemplo. Como visto neste exemplo, você pode especificar a coluna content da saída de read_files ao parâmetro files.

Exemplo: consultar um modelo de base

Para consultar um ponto de extremidade do serviço 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 um modelo de fundação compatível com as APIs de Modelo do Databricks Foundation:

> 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

Opcionalmente, você também pode encapsular uma chamada a ai_query() em um UDF para chamada de função da seguinte maneira:

 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;

Entradas multimodais

ai_query dá suporte nativo a entradas de imagem multimodal. Consulte os tipos de modelo de Foundation para os modelos de visão com suporte do Databricks.

Veja a seguir os tipos de entrada com suporte:

  • JPEG
  • PNG

O exemplo a seguir mostra como consultar um modelo de fundação com suporte das APIs de Modelo do Databricks Foundation para entrada multimodal. Neste exemplo, o files => content parâmetro é usado para passar os dados do arquivo de imagem para ai_query

  • files: o nome do parâmetro esperado pelo modelo para entrada multimodal
  • content: a coluna no DataFrame retornada por READ_FILES, que contém o conteúdo binário do arquivo de imagem.

> SELECT *, ai_query(
  'databricks-llama-4-maverick',
 'what is this image about?', files => content)
as output FROM READ_FILES("/Volumes/main/multimodal/unstructured/image.jpeg");

Para consultar um modelo fundamental com suporte pelas APIs do Databricks para Modelos Fundamentais, para entrada multimodal, e especificar a saída estruturada:

> SELECT *, ai_query(
  'databricks-llama-4-maverick', 'What is interesting or important about this image?',
    responseFormat => ‘{
      "type": "json_schema",
        "json_schema": {
          "name": "output",
          "schema": {
            "type": "object",
            "properties": {
              "summary": {"type": "string"},
              "num_people": {"type": "integer"},
              "num_animals": {"type": "integer"},
              "interesting_fact": {"type": "string"},
              "possible_context": {"type": "string"}
            }
        },
        "strict": true
      }
    }’,
    files => content
  )
  as output FROM READ_FILES("/Volumes/main/user/volume1/image.jpeg");

Exemplo: consultar um modelo de ML tradicional

Para consultar um modelo personalizado ou um ponto de extremidade do Serviço de Modelo de ML tradicional:


> 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

Exemplos de cenários avançados

As seções a seguir fornecem exemplos para casos de uso avançados, como tratamento de erros ou como incorporar ai_query em uma função definida pelo usuário.

Passar uma matriz de mensagens

O exemplo a seguir mostra como passar uma matriz de mensagens para seu modelo ou aplicativo de agente usando ai_query.

> 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."]}

Concatenar a coluna de solicitação e inferência

Há várias maneiras de concatenar o prompt e a coluna de inferência, como usar ||, CONCAT()ou format_string():

SELECT
CONCAT('${prompt}', ${input_column_name}) AS concatenated_prompt
FROM ${input_table_name};

Alternatively:

SELECT
'${prompt}' || ${input_column_name} AS concatenated_prompt
FROM ${input_table_name};

Ou usando format_string():

SELECT
format_string('%s%s', '${prompt}', ${input_column_name}) AS concatenated_prompt
FROM ${input_table_name};

Configurar um modelo passando parâmetros de modelo

Personalize o comportamento do modelo passando parâmetros específicos, como tokens máximos e temperatura. Por exemplo:

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;

Manipular erros usando failOnError

Use o failOnError argumento para ai_query a fim de lidar com erros. O exemplo a seguir mostra como garantir que, se uma linha tiver um erro, ela não impedirá a execução de toda a consulta. Consulte Argumentos e retornos para comportamentos esperados com base em como esse argumento é definido.


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;

Impor o esquema de saída com saída estruturada

Verifique se a saída está em conformidade com um esquema específico para facilitar o processamento downstream usando responseFormat. Consulte Saídas estruturadas no Azure Databricks.

O exemplo a seguir impõe um esquema de cadeia de caracteres JSON de estilo DDL:

SELECT ai_query(
    "databricks-gpt-oss-20b",
    "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;

Como alternativa, usando um formato de resposta de esquema JSON:

SELECT ai_query(
    "databricks-gpt-oss-20b",
    "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;

Uma saída esperada pode ser semelhante a:

{ "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"] }

Usar ai_query em funções definidas pelo usuário

Você pode encapsular uma chamada a ai_query em uma UDF, o que facilita o uso e o compartilhamento de funções em diferentes fluxos de trabalho.

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;