Função ai_query
Aplica-se a: Databricks SQL Databricks Runtime
Importante
Esta funcionalidade está em Pré-visualização Pública.
Invoca um ponto de extremidade existente do Azure Databricks Model Serving e analisa e retorna sua resposta.
Requisitos
- Esta função não está disponível no Azure Databricks SQL Classic.
- O Querying Foundation Model APIs está habilitado por padrão. Para consultar pontos de extremidade que servem modelos personalizados ou modelos externos, habilite AI_Query para Modelos Personalizados e Modelos Externos na interface do usuário de Visualizações do Databricks.
- O canal de depósito DLT atual não usa a versão mais recente do Databricks Runtime que suporta
ai_query()
o . Defina aspipelines.channel
propriedades da tabela como'preview'
usarai_query()
. Consulte Exemplos para uma consulta de exemplo.
Nota
- No Databricks Runtime 14.2 e superior, essa função é suportada em blocos de anotações Databricks, incluindo blocos de anotações que são executados como uma tarefa em um fluxo de trabalho Databricks.
- No Databricks Runtime 14.1 e inferior, esta função não é suportada em blocos de notas Databricks.
Sintaxe
Para consultar um ponto de extremidade que serve um modelo externo ou um modelo básico:
ai_query(endpointName, request)
Para consultar um ponto de extremidade de serviço de modelo personalizado:
ai_query(endpointName, request, returnType)
Argumentos
endpointName
: Um literal STRING, o nome do ponto de extremidade Mosaic AI Model Serving existente no mesmo espaço de trabalho para invocações. O definer deve ter a permissão CAN QUERY no ponto de extremidade.request
: Uma expressão, a solicitação usada para invocar o ponto de extremidade.- Se o ponto de extremidade for um modelo externo que serve o ponto de extremidade ou o ponto de extremidade das APIs do Databricks Foundation Model, a solicitação deverá ser uma STRING.
- Se o ponto de extremidade for um modelo personalizado que serve o ponto de extremidade, a solicitação pode ser uma única coluna ou uma expressão struct. Os nomes de campo struct devem corresponder aos nomes de recursos de entrada esperados pelo ponto de extremidade.
returnType
: Uma expressão, o returnType esperado do ponto de extremidade. Isso é semelhante ao parâmetro schema em from_json função, que aceita uma expressão STRING ou a invocação de schema_of_json função. Necessário para consultar um ponto de extremidade de serviço de modelo personalizado.
Devoluções
A resposta analisada do ponto de extremidade.
Exemplos
Para consultar um modelo externo que serve o ponto de extremidade:
> 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 base suportado pelas APIs do Databricks Foundation Model:
> 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, você também pode encapsular uma chamada em um UDF para chamada de ai_query()
função da seguinte maneira:
> 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 um ponto de extremidade de serviço 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."]}
Exemplo de consulta para definir o canal DLT para visualização:
> create or replace materialized view
ai_query_mv
TBLPROPERTIES('pipelines.channel' = 'PREVIEW') AS
SELECT
ai_query("databricks-dbrx-instruct", text) as response
FROM
messages