Функции ИИ#

Функции ИИ позволяют вызывать большую языковую модель (LLM) для выполнения различных текстовых задач. Поддерживаются несколько провайдеров LLM, в частности OpenAI и Anthropic напрямую, а также многие другие, такие как Llama, DeepSeek, Phi, Mistral или Gemma, через Ollama.

LLM должна быть предоставлена вне CedrusData как внешний сервис.

Конфигурация#

Поскольку функции ИИ требуют внешнего сервиса LLM, они недоступны по умолчанию. Для их включения необходимо настроить файл свойств каталога, чтобы зарегистрировать функции, вызывающие настроенную LLM, с указанным именем каталога.

Создайте файл свойств каталога etc/catalog/llm.properties, который ссылается на коннектор ai:

connector.name=ai

Функции ИИ доступны с именем схемы ai. Для приведенного примера функции используют префикс каталога и схемы llm.ai.

Чтобы не указывать полное квалифицированное имя функций, настройте свойство sql.path окружения SQL в файле config.properties, включив префикс каталога и схемы:

sql.path=llm.ai

Можно настроить несколько каталогов для использования одних и тех же функций с разными провайдерами LLM. В этом случае функции должны вызываться по полному квалифицированному имени, а не через SQL path.

Провайдеры#

Функции ИИ вызывают внешнюю LLM. Доступ к API LLM должен быть настроен в каталоге. Производительность, результаты и стоимость всех вызовов функций ИИ зависят от провайдера LLM и используемой модели. Необходимо указать модель, подходящую для текстового анализа.

Свойства конфигурации провайдеров функций ИИ#

Имя свойства

Описание

ai.provider

Обязательное имя провайдера. Должно быть anthropic для использования провайдера Anthropic или openai для OpenAI или Ollama.

ai.anthropic.endpoint

URL конечной точки API Anthropic. По умолчанию https://api.anthropic.com.

ai.anthropic.api-key

Значение API-ключа для доступа к API Anthropic. Обязательно при ai.provider, установленном в anthropic.

ai.openai.endpoint

URL конечной точки API OpenAI или Ollama. По умолчанию https://api.openai.com. Установите URL конечной точки Ollama при использовании моделей через Ollama и добавьте любую строку для ai.openai.api-key.

ai.openai.api-key

Значение API-ключа для доступа к API OpenAI. Обязательно при ai.provider, установленном в openai. Обязательно, но игнорируется при использовании Ollama.

Функции ИИ подключаются к провайдерам по HTTP. Настройте подключение, используя префикс ai с Конфигурация HTTP-клиента.

В следующих разделах приведены минимальные конфигурации для использования Anthropic, OpenAI и Ollama.

Anthropic#

Провайдер Anthropic использует API Anthropic для выполнения функций ИИ:

ai.provider=anthropic
ai.model=claude-3-5-sonnet-latest
ai.anthropic.api-key=xxx

Используйте секреты, чтобы не указывать фактические значения API-ключей в файлах свойств каталога.

OpenAI#

Провайдер OpenAI использует API OpenAI для выполнения функций ИИ:

ai.provider=openai
ai.model=gpt-4o-mini
ai.openai.api-key=xxx

Используйте секреты, чтобы не указывать фактические значения API-ключей в файлах свойств каталога.

Ollama#

Провайдер OpenAI может использоваться с Ollama для выполнения функций ИИ, так как 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 и другие модели на собственном развертывании или через вендора.

Конфигурация модели#

Все провайдеры поддерживают несколько различных моделей. Необходимо настроить хотя бы одну модель для использования функциями ИИ. Модель должна быть пригодна для текстового анализа. Выбор провайдера и модели влияет на производительность, результаты и стоимость всех функций ИИ.

Стоимость варьируется в зависимости от используемой функции ИИ, размера внутреннего промпта, длины входных данных и длины выходных данных модели, поскольку провайдеры моделей взимают плату на основе входных и выходных токенов.

Опционально можно настроить различные модели одного и того же провайдера для каждой функции в качестве переопределения:

Свойства конфигурации моделей функций ИИ#

Имя свойства

Описание

ai.model

Обязательное имя модели. Допустимые имена зависят от провайдера. Модель должна быть пригодна для текстового анализа. Модель используется для всех функций, если для конкретной функции не настроена отдельная модель.

ai.analyze-sentiment.model

Необязательное переопределение для использования другой модели для ai_analyze_sentiment().

ai.classify.model

Необязательное переопределение для использования другой модели для ai_classify().

ai.extract.model

Необязательное переопределение для использования другой модели для ai_extract().

ai.fix-grammar.model

Необязательное переопределение для использования другой модели для ai_fix_grammar().

ai.generate.model

Необязательное переопределение для использования другой модели для ai_gen().

ai.mask.model

Необязательное переопределение для использования другой модели для ai_mask().

ai.translate.model

Необязательное переопределение для использования другой модели для ai_translate().

Функции#

Следующие функции доступны в каждом каталоге, настроенном с коннектором 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#

Генерирует текст на основе входного промпта.

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');
-- 我喜歡咖啡