Перейти к основному содержимому
Перейти к основному содержимому

AI-функции

AI-функции — это встроенные функции ClickHouse, которые можно использовать для обращения к ИИ или генерации эмбеддингов при работе с данными, извлечения информации, классификации данных и т. д.

Примечание

AI-функции могут возвращать непредсказуемые результаты. Итог во многом зависит от качества промпта и используемой модели.

Все функции используют общую инфраструктуру, которая обеспечивает:

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

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

Пример оператора для создания именованной коллекции с учетными данными провайдера:

CREATE NAMED COLLECTION ai_credentials AS
    provider = 'openai',
    endpoint = 'https://api.openai.com/v1/chat/completions',
    model = 'gpt-4o-mini',
    api_key = 'sk-...';

Параметры именованной коллекции

ПараметрТипПо умолчаниюОписание
providerStringПровайдер модели. Поддерживаются: 'openai', 'anthropic'. См. примечание ниже.
endpointStringURL конечной точки API.
modelStringИмя модели (например, 'gpt-4o-mini', 'text-embedding-3-small').
api_keyStringКлюч аутентификации провайдера.
max_tokensUInt641024Максимальное количество выходных токенов за один вызов API.
api_versionStringСтрока версии API. Используется в Anthropic ('2023-06-01').
Примечание

Можно использовать любой API, совместимый с OpenAI (например, vLLM, Ollama, LiteLLM), задав provider = 'openai' и указав в endpoint адрес вашего сервиса.

Настройки на уровне запроса

Все настройки, связанные с ИИ, перечислены в разделе Settings с префиксом ai_function_.

Поддерживаемые провайдеры

ПровайдерЗначение providerФункции чатаПримечания
OpenAI'openai'ДаИспользуется по умолчанию.
Anthropic'anthropic'ДаИспользует конечную точку /v1/messages.

Обсервабилити

Активность AI-функций отслеживается с помощью ClickHouse ProfileEvents:

ProfileEventDescription
AIAPICallsКоличество HTTP-запросов, отправленных AI-провайдеру.
AIInputTokensОбщее количество использованных входных токенов.
AIOutputTokensОбщее количество использованных выходных токенов.
AIRowsProcessedКоличество строк, для которых был получен результат.
AIRowsSkippedКоличество пропущенных строк (превышена квота или произошла ошибка при ai_function_throw_on_error = 0).

Запросите эти события:

SELECT
    ProfileEvents['AIAPICalls'] AS api_calls,
    ProfileEvents['AIInputTokens'] AS input_tokens,
    ProfileEvents['AIOutputTokens'] AS output_tokens
FROM system.query_log
WHERE query_id = 'query_id'
AND type = 'QueryFinish'
ORDER BY event_time DESC;