As funções de IA são experimentais. Defina
allow_experimental_ai_functions para ativá-las.As funções de IA podem retornar saídas imprevisíveis. O resultado dependerá muito da qualidade do prompt e do modelo usado.
- Aplicação de cotas: Limites por consulta para tokens (
ai_function_max_input_tokens_per_query,ai_function_max_output_tokens_per_query) e chamadas de API (ai_function_max_api_calls_per_query). - Retentativas com backoff: Falhas transitórias são repetidas (
ai_function_max_retries) com backoff exponencial (ai_function_retry_initial_delay_ms).
Configuração
ai_function_credentials.
Exemplo de instrução para criar uma coleção nomeada com as credenciais do provedor:
ai_function_credentials, para a sessão ou para uma única consulta:
ai_function_credentials está vazio (o padrão), uma exceção é lançada.
Parâmetros da coleção nomeada
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
provider | String | — | Provedor do modelo. Compatível com: 'openai', 'anthropic'. Veja a observação abaixo. |
endpoint | String | — | URL do endpoint da API. |
model | String | — | Nome do modelo (por exemplo, 'gpt-4o-mini', 'text-embedding-3-small'). |
api_key | String | — | Chave de autenticação do provedor. Opcional: quando omitida, o header de autenticação não é enviado, o que permite apontar para servidores compatíveis com OpenAI que não exigem autenticação. |
max_tokens | UInt64 | 1024 | Número máximo de tokens de saída por chamada à API. |
api_version | String | — | String de versão da API. Usada pelo Anthropic ('2023-06-01'). |
Qualquer API compatível com OpenAI (por exemplo, vLLM, Ollama, LiteLLM) pode ser usada definindo
provider = 'openai' e apontando o endpoint para o seu serviço.Configurações no nível da consulta
ai_function_credentials. Todas as configurações relacionadas à IA estão listadas em Settings com o prefixo ai_function_.
Uso em colunas DEFAULT e MATERIALIZED
ai_function_credentials é lida quando a expressão padrão é avaliada, NÃO quando a coluna é definida. O nome da coleção não fica armazenado na definição da coluna:
allow_experimental_ai_functions e ai_function_credentials devem estar definidos, e o usuário que a avalia deve ter GRANT NAMED COLLECTION na collection (a resolução das credentials faz uma verificação de acesso a NAMED COLLECTION). A ausência de qualquer um deles gera uma exceção (SUPPORT_IS_DISABLED, um erro de credentials vazias ou ACCESS_DENIED).
Uma coluna DEFAULT é avaliada em INSERT, portanto ambas as configurações devem estar definidas na sessão ou consulta que faz a inserção:
MATERIALIZED é calculada durante o INSERT, como uma coluna DEFAULT, e também é recalculada por mutações, como ALTER TABLE ... MATERIALIZE COLUMN. As mutações são executadas fora da sessão de um usuário e não herdam a cláusula SETTINGS de uma consulta, mas herdam as configurações de um perfil de configurações. Defina ambas as configurações em um perfil de configurações e conceda NAMED COLLECTION ao proprietário da tabela para que a recomputação acionada por mutações seja concluída com êxito.
Restringindo hosts de endpoint
endpoint em uma coleção nomeada de IA é um destino de saída ao qual o servidor se conecta com sua própria identidade, potencialmente enviando (se especificada) a api_key da coleção nomeada nos cabeçalhos da solicitação. Por padrão, o ClickHouse permite qualquer host. Para restringir as funções a um conjunto específico de provedores, configure remote_url_allow_hosts na configuração do servidor, por exemplo:
Provedores compatíveis
| Provedor | valor de provider | Funções de chat | Observações |
|---|---|---|---|
| OpenAI | 'openai' | Sim | Provedor padrão. |
| Anthropic | 'anthropic' | Sim | Usa o endpoint /v1/messages. |
Observabilidade
| ProfileEvent | Description |
|---|---|
AIAPICalls | Número de solicitações HTTP feitas ao provedor de IA. |
AIInputTokens | Total de tokens de entrada consumidos. |
AIOutputTokens | Total de tokens de saída consumidos. |
AIRowsProcessed | Número de linhas que receberam um resultado. |
AIRowsSkipped | Número de linhas ignoradas (cota excedida ou erro com ai_function_throw_on_error = 0). |
aiClassify
{"category": "..."}, o rótulo é extraído, e a string do rótulo é retornada.
As credenciais do provedor e a configuração são obtidas da coleção nomeada especificada pela configuração ai_function_credentials.
Sintaxe
AIClassify
Argumentos
text— Texto a ser classificado.Stringcategories— Lista constante de rótulos de categorias possíveis.Array(String)temperature— Temperatura de amostragem que controla a aleatoriedade. Padrão:0.0.Float64
ai_function_throw_on_error esteja desabilitado. String
Exemplos
Classificar o sentimento
Query
Response
Query
Response
aiEmbed
Array(Float32).
Dentro de um único bloco de linhas, as entradas são agrupadas em lotes de até
ai_function_embedding_max_batch_size
itens por requisição HTTP para reduzir a sobrecarga por chamada.
As credenciais do provedor e a configuração são obtidas da coleção nomeada especificada pela configuração ai_function_credentials.
O argumento opcional dimensions, quando compatível com o modelo (por exemplo, text-embedding-3-* da OpenAI),
solicita um vetor do tamanho especificado; caso contrário, o tamanho nativo do modelo é retornado.
Sintaxe
text— Texto para gerar o embedding.Stringdimensions— Dimensionalidade de destino opcional para o vetor de saída.0ou omitido significa o tamanho nativo do modelo.UInt64
ai_function_throw_on_error estiver desabilitado, ou se uma cota for excedida com ai_function_throw_on_quota_exceeded desabilitado. Array(Float32)
Exemplos
Gerar embedding de uma única string
Query
Response
Query
Response
Query
Response
aiExtract
'a principal reclamação') ou um
schema codificado em JSON no formato '{"field_a": "description of field a", "field_b": "description of field b"}'.
No modo de instrução, a função retorna o valor extraído como uma string simples, ou uma string vazia se nada for encontrado.
No modo de schema, a função retorna uma string contendo um objeto JSON cujas chaves correspondem ao schema solicitado; os campos ausentes são null.
As credenciais do provedor e a configuração são obtidas da coleção nomeada especificada na configuração ai_function_credentials.
Sintaxe
AIExtract
Argumentos
text— Texto do qual extrair informações.Stringinstruction_or_schema— Instrução de extração em formato livre ou um objeto JSON constante que descreve os campos a serem extraídos.const Stringtemperature— Temperatura de amostragem que controla a aleatoriedade. Padrão:0.0.const Float64
ai_function_throw_on_error estiver desativado. String
Exemplos
Instrução em formato livre
Query
Response
Query
Response
aiGenerate
You are a helpful assistant. Provide a clear and concise response.
As credenciais do provedor e a configuração são obtidas da coleção nomeada especificada na configuração ai_function_credentials.
Sintaxe
AIGenerate
Argumentos
prompt— O prompt ou a pergunta do usuário a ser enviada ao modelo.Stringsystem_prompt— Instrução constante opcional em nível de sistema que orienta o comportamento do modelo (por exemplo, persona, formato de saída), enviada com cada prompt.Stringtemperature— Temperatura de amostragem que controla a aleatoriedade. Padrão:0.7.Float64
ai_function_throw_on_error estiver desabilitado. String
Exemplos
Pergunta simples
Query
Response
Query
Response
Query
Response
aiTranslate
'manter termos técnicos sem tradução').
As credenciais do provedor e a configuração são obtidas da coleção nomeada especificada pela configuração ai_function_credentials.
Sintaxe
AITranslate
Argumentos
text— Texto a ser traduzido.Stringtarget_language— Nome do idioma de destino ou código BCP-47 (por exemplo,'French','es-MX').Stringinstructions— Instruções adicionais constantes, opcionais, para o tradutor.Stringtemperature— Temperatura de amostragem que controla a aleatoriedade. Padrão:0.3.Float64
ai_function_throw_on_error esteja desabilitado. String
Exemplos
Traduzir para o francês
Query
Response
Query
Response