Функции ИИ могут возвращать непредсказуемые результаты. Результат во многом зависит от качества промпта и используемой модели.
- Контроль квот: лимиты на количество токенов в рамках одного запроса (
ai_function_max_input_tokens_per_query,ai_function_max_output_tokens_per_query) и вызовов API (ai_function_max_api_calls_per_query). - Повторные попытки с задержкой: при временных сбоях выполняются повторные попытки (
ai_function_max_retries) с экспоненциально растущей задержкой (ai_function_retry_initial_delay_ms).
Конфигурация
Параметры именованной коллекции
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
provider | String | — | Провайдер модели. Поддерживаются: 'openai', 'anthropic'. См. примечание ниже. |
endpoint | String | — | URL конечной точки API. |
model | String | — | Имя модели (например, 'gpt-4o-mini', 'text-embedding-3-small'). |
api_key | String | — | Ключ аутентификации для провайдера. |
max_tokens | UInt64 | 1024 | Максимальное количество выходных токенов на один вызов API. |
api_version | String | — | Строка версии API. Используется в Anthropic ('2023-06-01'). |
Любой API, совместимый с OpenAI (например, vLLM, Ollama, LiteLLM), можно использовать, если задать
provider = 'openai' и указать в endpoint конечную точку вашего сервиса.Настройки на уровне запроса
ai_function_.
Ограничение хостов конечных точек
endpoint в именованной коллекции AI — это исходящий пункт назначения, к которому сервер подключается от своего имени, передавая api_key этой именованной коллекции в заголовках запроса. По умолчанию ClickHouse разрешает любой хост. Чтобы ограничить функции определённым набором провайдеров, настройте remote_url_allow_hosts в конфигурации сервера, например:
Поддерживаемые провайдеры
| Провайдер | Значение provider | Функции чата | Примечания |
|---|---|---|---|
| OpenAI | 'openai' | Да | Провайдер по умолчанию. |
| Anthropic | 'anthropic' | Да | Использует конечную точку /v1/messages. |
Обсервабилити
| ProfileEvent | Description |
|---|---|
AIAPICalls | Количество HTTP-запросов, отправленных провайдеру ИИ. |
AIInputTokens | Общее количество использованных входных токенов. |
AIOutputTokens | Общее количество использованных выходных токенов. |
AIRowsProcessed | Количество строк, для которых был получен результат. |
AIRowsSkipped | Количество пропущенных строк (превышена квота или возникла ошибка при ai_function_throw_on_error = 0). |
aiClassify
{"category": "..."}, метка извлекается, и функция возвращает строку этой метки.
Первый аргумент — именованная коллекция, в которой указываются провайдер, модель, конечная точка и ключ API.
Синтаксис
AIClassify
Аргументы
collection— Имя именованной коллекции, содержащей учетные данные провайдера и конфигурацию.Stringtext— Текст для классификации.Stringcategories— Константный список возможных меток категорий.Array(String)temperature— Температура сэмплирования, влияющая на случайность. По умолчанию:0.0.Float64
ai_function_throw_on_error отключен. String
Примеры
Классификация тональности
Query
Response
Query
Response
aiExtract
'the main complaint'), либо
JSON-кодированной схемой вида '{"field_a": "description of field a", "field_b": "description of field b"}'.
В режиме инструкции функция возвращает извлечённое значение в виде обычной строки или пустую строку, если ничего не найдено.
В режиме схемы функция возвращает строку с объектом JSON, ключи которого соответствуют запрошенной схеме; отсутствующие поля имеют значение null.
Первый аргумент — именованная коллекция, в которой задаются провайдер, модель, конечная точка и API-ключ.
Синтаксис
AIExtract
Аргументы
collection— Имя именованной коллекции, содержащей учетные данные провайдера и конфигурацию.Stringtext— Текст, из которого нужно извлечь информацию.Stringinstruction_or_schema— Инструкция для извлечения в свободной форме или константный объект JSON, описывающий извлекаемые поля.const Stringtemperature— Температура сэмплирования, определяющая степень случайности. По умолчанию:0.0.const Float64
ai_function_throw_on_error отключён. String
Примеры
Инструкция в свободной форме
Query
Response
Query
Response
aiGenerate
You are a helpful assistant. Provide a clear and concise response.
Первый аргумент — именованная коллекция, в которой задаются провайдер, модель, конечная точка и ключ API.
Синтаксис
AIGenerate
Аргументы
collection— Имя именованной коллекции, содержащей учётные данные провайдера и конфигурацию.Stringprompt— Промпт или вопрос пользователя, отправляемый модели.Stringsystem_prompt— Необязательная постоянная системная инструкция, определяющая поведение модели (например, роль или формат вывода), которая отправляется вместе с каждым промптом.Stringtemperature— Температура сэмплирования, управляющая случайностью. Значение по умолчанию:0.7.Float64
ai_function_throw_on_error отключён. String
Примеры
Простой вопрос
Query
Response
Query
Response
Query
Response
aiTranslate
'keep technical terms untranslated').
Первый аргумент — именованная коллекция, в которой указаны провайдер, модель, конечная точка и ключ API.
Синтаксис
AITranslate
Аргументы
collection— Имя именованной коллекции, содержащей учетные данные провайдера и конфигурацию.Stringtext— Текст для перевода.Stringtarget_language— Имя целевого языка или код BCP-47 (например,'French','es-MX').Stringinstructions— Необязательные дополнительные инструкции для переводчика в виде константы.Stringtemperature— Температура сэмплирования, управляющая случайностью. По умолчанию:0.3.Float64
ai_function_throw_on_error отключён. String
Примеры
Перевод на французский
Query
Response
Query
Response