Las funciones de IA son experimentales. Configura
allow_experimental_ai_functions para habilitarlas.Las funciones de IA pueden devolver resultados impredecibles. El resultado dependerá en gran medida de la calidad del prompt y del modelo utilizado.
- Aplicación de cuotas: Límites por consulta de tokens (
ai_function_max_input_tokens_per_query,ai_function_max_output_tokens_per_query) y llamadas a la API (ai_function_max_api_calls_per_query). - Reintentos con backoff: Los fallos transitorios se reintentan (
ai_function_max_retries) con backoff exponencial (ai_function_retry_initial_delay_ms).
Configuración
ai_function_credentials.
Ejemplo de sentencia para crear una colección nombrada con credenciales del proveedor:
ai_function_credentials, para la sesión o para una sola consulta:
ai_function_credentials está vacío (valor predeterminado), se genera una excepción.
Parámetros de la colección nombrada
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
provider | String | — | Proveedor del modelo. Admitidos: 'openai', 'anthropic'. Consulte la nota a continuación. |
endpoint | String | — | URL del endpoint de la API. |
model | String | — | Nombre del modelo (p. ej. 'gpt-4o-mini', 'text-embedding-3-small'). |
api_key | String | — | Clave de autenticación del proveedor. Opcional: cuando se omite, no se envía el header de autenticación, lo que permite usar servidores compatibles con OpenAI que no requieren autenticación. |
max_tokens | UInt64 | 1024 | Número máximo de tokens de salida por llamada a la API. |
api_version | String | — | Cadena de versión de la API. La utiliza Anthropic ('2023-06-01'). |
Se puede usar cualquier API compatible con OpenAI (p. ej. vLLM, Ollama, LiteLLM) configurando
provider = 'openai' y apuntando endpoint a su servicio.Configuración a nivel de consulta
ai_function_credentials. Toda la configuración relacionada con la IA se enumera en Configuración con el prefijo ai_function_.
Uso en columnas DEFAULT y MATERIALIZED
ai_function_credentials se lee cuando se evalúa la expresión por defecto, NO cuando se define la columna. El nombre de la colección no se almacena en la definición de la columna:
allow_experimental_ai_functions y ai_function_credentials, y el usuario que la evalúa debe tener GRANT NAMED COLLECTION sobre la colección (resolver las credenciales ejecuta una comprobación de acceso de NAMED COLLECTION). Si falta cualquiera de ellas, se genera una excepción (SUPPORT_IS_DISABLED, un error de credenciales vacías o ACCESS_DENIED).
Una columna DEFAULT se evalúa en INSERT, por lo que ambas opciones de configuración deben establecerse en la sesión o consulta que realiza la inserción:
MATERIALIZED se calcula en INSERT igual que una columna DEFAULT, y también se vuelve a calcular mediante mutaciones como ALTER TABLE ... MATERIALIZE COLUMN. Las mutaciones se ejecutan fuera de una sesión de usuario y no heredan la cláusula SETTINGS de una consulta, pero sí heredan la configuración de un perfil de configuración. Configure ambas opciones en un perfil de configuración y conceda NAMED COLLECTION al propietario de la tabla para que el recálculo iniciado por mutaciones se realice correctamente.
Restricción de hosts de endpoint
endpoint en una colección nombrada de IA es un destino saliente al que el servidor se conecta con su propia identidad, y puede enviar (si se especifica) la api_key de la colección nombrada en los encabezados de la solicitud. De forma predeterminada, ClickHouse permite cualquier host. Para restringir las funciones a un conjunto específico de proveedores, configure remote_url_allow_hosts en la configuración del servidor, por ejemplo:
Proveedores compatibles
| Proveedor | Valor de provider | Funciones de chat | Notas |
|---|---|---|---|
| OpenAI | 'openai' | Sí | Proveedor por defecto. |
| Anthropic | 'anthropic' | Sí | Usa el endpoint /v1/messages. |
Observabilidad
| ProfileEvent | Description |
|---|---|
AIAPICalls | Número de solicitudes HTTP realizadas al proveedor de IA. |
AIInputTokens | Total de tokens de entrada consumidos. |
AIOutputTokens | Total de tokens de salida consumidos. |
AIRowsProcessed | Número de filas que recibieron un resultado. |
AIRowsSkipped | Número de filas omitidas (se superó la cuota o hubo un error con ai_function_throw_on_error = 0). |
aiClassify
{"category": "..."}, se extrae la etiqueta y se devuelve su cadena de texto.
Las credenciales y la configuración del proveedor se toman de la colección nombrada especificada en la setting ai_function_credentials.
Sintaxis
AIClassify
Argumentos
text— Texto que se va a clasificar.Stringcategories— Lista constante de etiquetas de categorías candidatas.Array(String)temperature— Temperatura de muestreo que controla la aleatoriedad. Valor predeterminado:0.0.Float64
ai_function_throw_on_error está deshabilitada. String
Ejemplos
Clasificación de sentimiento
Query
Response
Query
Response
aiEmbed
Array(Float32).
Dentro de un solo bloque de filas, las entradas se agrupan en lotes de hasta
ai_function_embedding_max_batch_size
entradas por solicitud HTTP para reducir la sobrecarga por llamada.
Las credenciales del proveedor y la configuración se toman de la colección nombrada especificada por el ajuste ai_function_credentials.
El argumento opcional dimensions, cuando el modelo lo admite (p. ej., text-embedding-3-* de OpenAI),
solicita un vector del tamaño indicado; de lo contrario, se devuelve el tamaño nativo del modelo.
Sintaxis
text— Texto para generar el embedding.Stringdimensions— Dimensionalidad de destino opcional para el vector de salida.0, o si se omite, significa el tamaño nativo del modelo.UInt64
ai_function_throw_on_error está deshabilitado, o si se excedió una cuota con ai_function_throw_on_quota_exceeded deshabilitado. Array(Float32)
Ejemplos
Generar el embedding de un único texto
Query
Response
Query
Response
Query
Response
aiExtract
'the main complaint') o un
esquema codificado en JSON con la forma '{"field_a": "description of field a", "field_b": "description of field b"}'.
En el modo de instrucción, la función devuelve el valor extraído como una cadena de texto simple, o una cadena vacía si no se encuentra nada.
En el modo de esquema, la función devuelve una cadena que contiene un objeto JSON cuyas claves coinciden con el esquema solicitado; los campos ausentes son null.
Las credenciales del proveedor y la configuración se toman de la colección nombrada especificada por la configuración ai_function_credentials.
Sintaxis
AIExtract
Argumentos
text— Texto del que extraer información.Stringinstruction_or_schema— Instrucción de extracción en formato libre, o un objeto JSON constante que describe los campos que se deben extraer.const Stringtemperature— Temperatura de muestreo que controla la aleatoriedad. Valor predeterminado:0.0.const Float64
ai_function_throw_on_error está deshabilitado. String
Ejemplos
Instrucción en formato libre
Query
Response
Query
Response
aiGenerate
You are a helpful assistant. Provide a clear and concise response.
Las credenciales del proveedor y la configuración se toman de la colección nombrada especificada en la configuración ai_function_credentials.
Sintaxis
AIGenerate
Argumentos
prompt— El prompt o la pregunta del usuario que se enviará al modelo.Stringsystem_prompt— Instrucción opcional y constante a nivel de sistema que guía el comportamiento del modelo (p. ej., persona, formato de salida), enviada junto con cada prompt.Stringtemperature— Temperatura de muestreo que controla la aleatoriedad. Valor predeterminado:0.7.Float64
ai_function_throw_on_error está deshabilitado. String
Ejemplos
Pregunta simple
Query
Response
Query
Response
Query
Response
aiTranslate
'mantener los términos técnicos sin traducir').
Las credenciales del proveedor y la configuración se toman de la colección nombrada especificada en el setting ai_function_credentials.
Sintaxis
AITranslate
Argumentos
text— Texto que se va a traducir.Stringtarget_language— Nombre del idioma de destino o código BCP-47 (p. ej.,'French','es-MX').Stringinstructions— Instrucciones adicionales constantes opcionales para el traductor.Stringtemperature— Temperatura de muestreo que controla la aleatoriedad. Valor predeterminado:0.3.Float64
ai_function_throw_on_error está deshabilitado. String
Ejemplos
Traducir al francés
Query
Response
Query
Response