Функции AI#
Функции AI позволяют вызывать большую языковую модель (LLM) для выполнения различных текстовых задач. Поддерживаются несколько провайдеров LLM, в частности OpenAI и Anthropic напрямую, а также многие другие, такие как Llama, DeepSeek, Phi, Mistral или Gemma через Ollama.
LLM должна предоставляться вне Trino как внешний сервис.
Конфигурация#
Поскольку функции AI требуют внешний сервис LLM, по умолчанию они недоступны. Чтобы включить их, необходимо настроить файл свойств каталога, чтобы зарегистрировать функции, вызывающие настроенную LLM, с указанным именем каталога.
Создайте файл свойств каталога etc/catalog/llm.properties, который
ссылается на коннектор ai:
connector.name=ai
Функции AI доступны с именем схемы ai. Для приведенного выше примера
функции используют префикс каталога и схемы llm.ai.
Чтобы не указывать полное имя функций при каждом обращении, настройте
свойство SQL-окружения sql.path в
файле config.properties, чтобы включить префикс каталога и схемы:
sql.path=llm.ai
Настройте несколько каталогов, чтобы использовать одни и те же функции с разными провайдерами LLM. В этом случае функции нужно вызывать по полному имени, а не полагаться на SQL path.
Провайдеры#
Функции AI вызывают внешнюю LLM. Доступ к API LLM должен быть настроен в каталоге. Производительность, результаты и стоимость всех вызовов функций AI зависят от провайдера LLM и используемой модели. Необходимо указать модель, которая подходит для текстового анализа.
Имя свойства |
Описание |
|---|---|
|
Обязательное имя провайдера. Должно быть |
|
URL эндпоинта API Anthropic. По умолчанию
|
|
Значение API-ключа для доступа к API Anthropic. Обязательно при
|
|
URL эндпоинта API OpenAI или Ollama. По умолчанию
|
|
Значение API-ключа для доступа к API OpenAI. Обязательно при
|
Функции AI подключаются к провайдерам по HTTP. Настройте подключение,
используя префикс ai с HTTP client properties.
В следующих разделах приведены минимальные конфигурации для использования Anthropic, OpenAI и Ollama.
Anthropic#
Провайдер Anthropic использует API Anthropic для выполнения функций AI:
ai.provider=anthropic
ai.model=claude-3-5-sonnet-latest
ai.anthropic.api-key=xxx
Используйте secrets, чтобы не хранить реальные значения API-ключей в файлах свойств каталога.
OpenAI#
Провайдер OpenAI использует API OpenAI для выполнения функций AI:
ai.provider=openai
ai.model=gpt-4o-mini
ai.openai.api-key=xxx
Используйте secrets, чтобы не хранить реальные значения API-ключей в файлах свойств каталога.
Ollama#
Провайдер OpenAI можно использовать с Ollama для выполнения функций AI, поскольку Ollama совместим с API OpenAI:
ai.provider=openai
ai.model=llama3.3
ai.openai.endpoint=http://localhost:11434
ai.openai.api-key=none
API-ключ должен быть указан, но Ollama его игнорирует.
Ollama позволяет использовать Llama, DeepSeek, Phi, Mistral, Gemma и другие модели в self-hosted развертывании или у поставщика.
Конфигурация моделей#
Все провайдеры поддерживают ряд разных моделей. Для использования функций AI необходимо настроить как минимум одну модель. Модель должна подходить для текстового анализа. Выбор провайдера и модели влияет на производительность, результаты и стоимость всех функций AI.
Стоимость зависит от используемой функции AI и определяется размером implementation prompt, длиной входных данных и длиной вывода модели, потому что провайдеры моделей тарифицируют по входным и выходным токенам.
При необходимости можно настроить разные модели одного и того же провайдера для отдельных функций как override:
Имя свойства |
Описание |
|---|---|
|
Обязательное имя модели. Допустимые имена зависят от провайдера. Модель должна подходить для текстового анализа. Эта модель используется для всех функций, если для конкретной функции не настроена отдельная модель как override. |
|
Необязательный override для использования другой модели в
|
|
Необязательный override для использования другой модели в |
|
Необязательный override для использования другой модели в |
|
Необязательный override для использования другой модели в
|
|
Необязательный override для использования другой модели в |
|
Необязательный override для использования другой модели в |
|
Необязательный override для использования другой модели в
|
Функции#
Следующие функции доступны в каждом каталоге, настроенном с коннектором ai,
в схеме ai и используют настроенного провайдера LLM:
- ai_analyze_sentiment(text) varchar#
Анализирует тональность входного текста.
Результат тональности:
positive,negative,neutralилиmixed.SELECT ai_analyze_sentiment('I love Trino'); -- positive
- ai_classify(text, labels) varchar#
Классифицирует входной текст в соответствии с предоставленными метками.
SELECT ai_classify('Buy now!', ARRAY['spam', 'not spam']); -- spam
- ai_extract(text, labels)#
Извлекает значения для указанных меток из входного текста.
SELECT ai_extract('John is 25 years old', ARRAY['name', 'age']); -- {name=John, age=25}
- ai_fix_grammar(text) varchar#
Исправляет грамматические ошибки во входном тексте.
SELECT ai_fix_grammar('I are happy. What you doing?'); -- I am happy. What are you doing?
- ai_gen(prompt) varchar#
Генерирует текст на основе входного prompt.
SELECT ai_gen('Describe Trino in a few words'); -- Distributed SQL query engine.
- ai_mask(text, labels) varchar#
Маскирует значения для указанных меток во входном тексте, заменяя их текстом
[MASKED].SELECT ai_mask( 'Contact me at 555-1234 or visit us at 123 Main St.', ARRAY['phone', 'address']); -- Contact me at [MASKED] or visit us at [MASKED].
- ai_translate(text, language) varchar#
Переводит входной текст на указанный язык.
SELECT ai_translate('I like coffee', 'es'); -- Me gusta el café SELECT ai_translate('I like coffee', 'zh-TW'); -- 我喜歡咖啡