Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция
Применяется к: Databricks SQL
Databricks Runtime
Внимание
Эта функция предоставляется в режиме общедоступной предварительной версии.
Вызывает существующую конечную точку обслуживания модели Azure Databricks и анализирует ее и возвращает ответ.
Сведения об использовании ai_query
в рабочих рабочих процессах см. в статье Выполнение пакетного вывода LLM с помощью функций ИИ.
Требования
Эта функция недоступна в Классической версии SQL Azure Databricks.
Необходимо включить Приватный канал Azure, чтобы использовать эту функцию в pro SQL хранилищах.
Рекомендуется использовать Databricks Runtime 15.4 LTS или более поздней версии. Использование Databricks Runtime 15.3 или ниже может привести к снижению скорости производительности.
Рабочая область должна находиться в поддерживаемом регионе обслуживания моделей.
Существующую конечную точку обслуживания модели с загруженной моделью. Если вы используете базовую модель Databricks, для вас создается конечная точка. В противном случае см. статью Создание пользовательских конечных точек модели или Создание базовой модели обслуживания конечных точек.
По умолчанию api модели запросов к модели Foundation включена. Чтобы выполнить запрос конечных точек, которые обслуживают пользовательские модели или внешние модели:
Текущийдекларативный конвейерный канал хранилища Lakeflow не использует последнюю версию среды выполнения Databricks, которая поддерживает
ai_query()
. Задайтеpipelines.channel
в свойствах таблицы как'preview'
для использованияai_query()
.> create or replace materialized view ai_query_mv TBLPROPERTIES('pipelines.channel' = 'PREVIEW') AS SELECT ai_query("databricks-meta-llama-3-3-70b-instruct", text) as response FROM messages LIMIT 10;
Синтаксис
Чтобы запросить конечную точку, которая служит базовой моделью:
ai_query(endpoint, request)
Сделать запрос к конечной точке обслуживания пользовательской модели с использованием схемы модели .
ai_query(endpoint, request)
Чтобы запросить пользовательскую конечную точку обслуживания модели без схемы модели:
ai_query(endpoint, request, returnType, failOnError)
аргументы и возвращаемые значения
Аргумент | Описание | Возвраты |
---|---|---|
endpoint |
Имя конечной точки обслуживания модели Databricks Foundation, внешней конечной точки обслуживания модели или пользовательской конечной точки модели в той же рабочей области для вызовов в качестве STRING литерала. Определитель должен иметь CAN QUERY разрешение на доступ к конечной точке. |
|
request |
Запрос, используемый для вызова конечной точки в качестве выражения.
|
|
returnType |
Ожидаемое returnType от конечной точки в виде выражения. Это аналогично параметру схемы в from_json функции, которая принимает как выражение STRING , так и вызов функции schema_of_json .
|
|
failOnError |
(Необязательно) Логический литерал, который по умолчанию имеет значение true. Требуется Databricks Runtime 15.3 или более поздней версии. Этот флаг указывает, нужно ли включать статус ошибки в ответ ai_query . |
Пример см. в разделе Обработка ошибок с помощью failOnError . |
modelParameters |
(Необязательно) Поле структуры, содержащее параметры моделей чата, моделей завершения и моделей встраивания для поддержки базовых моделей или внешних моделей. Эти параметры модели должны быть постоянными параметрами, а не зависимыми от данных. Требуется Databricks Runtime 15.3 или более поздней версии. Если эти параметры модели не указаны или заданы для null , используется значение по умолчанию. За исключением Пример см. в статье Настройка модели путем передачи параметров модели. |
|
responseFormat |
(Необязательно) Укажите формат ответа, который будет соответствовать модели чата. Требуется Databricks Runtime 15.4 LTS или более поздней версии. Доступно только для запросов моделей основы чата. Поддерживаются два стиля формата ответа.
Примеры см. в разделе "Принудительное применение схемы выходных данных с структурированными выходными данными ". |
Примеры см. в разделе "Принудительное применение схемы выходных данных с структурированными выходными данными ". |
пример . Запрос базовой модели
Чтобы запросить внешнюю конечную точку обслуживания модели:
> 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."
Чтобы запросить базовую модель, поддерживаемую API модели 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
При необходимости можно также упаковать вызов ai_query()
в UDF для вызова функции следующим образом:
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;
Пример. Запрос традиционной модели машинного обучения
Чтобы запросить пользовательскую модель или традиционную конечную точку обслуживания модели машинного обучения:
> 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
> 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."]}
Примеры для расширенных сценариев
В следующих разделах приведены примеры для расширенных вариантов использования, таких как обработка ошибок или включение ai_query
в определяемую пользователем функцию.
Объедините столбцы запроса и вывода
Существует несколько способов объединения запроса и столбца вывода, например использование ||
, CONCAT()
или format_string()
:
SELECT
CONCAT('${prompt}', ${input_column_name}) AS concatenated_prompt
FROM ${input_table_name};
Еще один вариант:
SELECT
'${prompt}' || ${input_column_name} AS concatenated_prompt
FROM ${input_table_name};
Или с format_string()
:
SELECT
format_string('%s%s', '${prompt}', ${input_column_name}) AS concatenated_prompt
FROM ${input_table_name};
Настройка модели путем передачи параметров модели
Настройте поведение модели путем передачи определенных параметров, таких как максимальные маркеры и температура. Рассмотрим пример.
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;
обработка ошибок с помощью failOnError
Используйте аргумент failOnError
для ai_query
обработки ошибок. В следующем примере показано, как убедиться, что если одна строка имеет ошибку, она не остановит весь запрос от выполнения. См. Аргументы и возвраты для ожидаемых действий в зависимости от задания аргумента.
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;
Обеспечение соблюдения схемы вывода с помощью структурированных выходных данных
Убедитесь, что выходные данные соответствуют определенной схеме для упрощения последующей обработки с помощью responseFormat
. См. структурированные выходные данные в Azure Databricks.
В следующем примере применяется схема строки JSON стиля DDL:
SELECT ai_query(
"databricks-meta-llama-3-3-70b-instruct",
"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;
Кроме того, используя формат ответа схемы JSON:
SELECT ai_query(
"databricks-meta-llama-3-3-70b-instruct",
"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;
Ожидаемые выходные данные могут выглядеть следующим образом:
{ "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"] }
Использование ai_query
в определяемых пользователем функциях
Вы можете упаковать вызов ai_query
в UDF, что упрощает использование функций в разных рабочих процессах и совместное использование их.
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;