Les fonctions d’IA sont expérimentales. Définissez
allow_experimental_ai_functions pour les activer.Les fonctions d’IA peuvent produire des résultats imprévisibles. Le résultat dépendra fortement de la qualité du prompt et du modèle utilisés.
- Application des quotas : limites par requête sur les tokens (
ai_function_max_input_tokens_per_query,ai_function_max_output_tokens_per_query) et sur les appels d’API (ai_function_max_api_calls_per_query). - Nouvelle tentative avec backoff : les échecs temporaires sont réessayés (
ai_function_max_retries) avec un backoff exponentiel (ai_function_retry_initial_delay_ms).
Configuration
ai_function_credentials.
Exemple d’instruction pour créer une collection nommée avec les identifiants du fournisseur :
ai_function_credentials, pour la session ou pour une seule requête :
ai_function_credentials est vide (par défaut), une exception est levée.
Paramètres de la collection nommée
| Paramètre | Type | Par défaut | Description |
|---|---|---|---|
provider | String | — | Fournisseur du modèle. Valeurs prises en charge : 'openai', 'anthropic'. Voir la note ci-dessous. |
endpoint | String | — | URL du point de terminaison de l’API. |
model | String | — | Nom du modèle (par ex. 'gpt-4o-mini', 'text-embedding-3-small'). |
api_key | String | — | Clé d’authentification du fournisseur. Facultatif : si elle est omise, l’en-tête d’authentification n’est pas envoyé, ce qui permet de cibler des serveurs compatibles OpenAI qui ne nécessitent pas d’authentification. |
max_tokens | UInt64 | 1024 | Nombre maximal de tokens de sortie par appel d’API. |
api_version | String | — | Chaîne de version de l’API. Utilisée par Anthropic ('2023-06-01'). |
Toute API compatible OpenAI (par ex. vLLM, Ollama, LiteLLM) peut être utilisée en définissant
provider = 'openai' et en pointant endpoint vers votre service.Paramètres au niveau de la requête
ai_function_credentials. Les autres paramètres liés à l’IA sont répertoriés dans Paramètres sous le préfixe ai_function_.
Utilisation dans les colonnes DEFAULT et MATERIALIZED
ai_function_credentials est lu au moment de l’évaluation de l’expression par défaut, et NON lors de la définition de la colonne. Le nom de la collection n’est pas stocké dans la définition de la colonne :
allow_experimental_ai_functions et ai_function_credentials doivent être définis, et l’utilisateur qui l’évalue doit disposer de GRANT NAMED COLLECTION sur la collection nommée (la résolution des identifiants déclenche une vérification d’accès NAMED COLLECTION). Si l’un d’eux manque, une exception est levée (SUPPORT_IS_DISABLED, une erreur d’identifiants vides ou ACCESS_DENIED).
Une colonne DEFAULT est évaluée au moment de l’INSERT, les deux paramètres doivent donc être définis dans la session ou la requête d’insertion :
MATERIALIZED est calculée lors d’un INSERT, comme une colonne DEFAULT, et elle est également recalculée par des mutations telles que ALTER TABLE ... MATERIALIZE COLUMN. Les mutations s’exécutent en dehors d’une session utilisateur et n’héritent pas de la clause SETTINGS d’une requête, mais elles héritent des paramètres d’un profil de paramètres. Définissez les deux paramètres dans un profil de paramètres et accordez le privilège NAMED COLLECTION au propriétaire de la table pour que le recalcul déclenché par une mutation puisse aboutir.
Restreindre les hôtes de point de terminaison
endpoint d’une collection nommée d’IA est une destination sortante à laquelle le serveur se connecte avec sa propre identité, en transmettant potentiellement (si elle est spécifiée) l’api_key de la collection nommée dans les en-têtes de requête. Par défaut, ClickHouse autorise n’importe quel hôte. Pour limiter les fonctions à un ensemble spécifique de fournisseurs, configurez remote_url_allow_hosts dans la configuration du serveur, par exemple :
Fournisseurs pris en charge
| Fournisseur | valeur de provider | Fonctions de chat | Notes |
|---|---|---|---|
| OpenAI | 'openai' | Oui | Fournisseur par défaut. |
| Anthropic | 'anthropic' | Oui | Utilise le point de terminaison /v1/messages. |
Observabilité
| ProfileEvent | Description |
|---|---|
AIAPICalls | Nombre de requêtes HTTP envoyées au fournisseur d’IA. |
AIInputTokens | Nombre total de tokens d’entrée consommés. |
AIOutputTokens | Nombre total de tokens de sortie consommés. |
AIRowsProcessed | Nombre de lignes ayant reçu un résultat. |
AIRowsSkipped | Nombre de lignes ignorées (quota dépassé ou erreur avec ai_function_throw_on_error = 0). |
aiClassify
{"category": "..."}, le libellé est extrait et sa chaîne de caractères est renvoyée.
Les identifiants du fournisseur et la configuration sont récupérés à partir de la collection nommée spécifiée par le paramètre ai_function_credentials.
Syntaxe
AIClassify
Arguments
text— Texte à classifier.Stringcategories— Liste constante des libellés des catégories candidates.Array(String)temperature— Température d’échantillonnage contrôlant l’aléa. Par défaut :0.0.Float64
ai_function_throw_on_error est désactivé. String
Exemples
Classifier le sentiment
Query
Response
Query
Response
aiEmbed
Array(Float32).
Au sein d’un même bloc de lignes, les entrées sont regroupées en lots de
ai_function_embedding_max_batch_size
entrées maximum par requête HTTP afin de réduire la surcharge de chaque appel.
Les identifiants du fournisseur et la configuration sont récupérés à partir de la collection nommée spécifiée par le paramètre ai_function_credentials.
L’argument facultatif dimensions, lorsqu’il est pris en charge par le modèle (par exemple text-embedding-3-* d’OpenAI),
demande un vecteur de la taille indiquée ; sinon, la taille native du modèle est renvoyée.
Syntaxe
text— Texte à encoder.Stringdimensions— Nombre de dimensions cible facultatif pour le vecteur de sortie.0ou l’omission de ce paramètre signifie utiliser la dimension native du modèle.UInt64
ai_function_throw_on_error est désactivé, ou si un quota a été dépassé alors que ai_function_throw_on_quota_exceeded est désactivé. Array(Float32)
Exemples
Encoder une seule chaîne
Query
Response
Query
Response
Query
Response
aiExtract
'the main complaint'), soit un
schéma au format JSON de la forme '{"field_a": "description of field a", "field_b": "description of field b"}'.
En mode instruction, la fonction renvoie la valeur extraite sous la forme d’une simple chaîne de caractères, ou une chaîne vide si rien n’a été trouvé.
En mode schéma, la fonction renvoie une chaîne JSON représentant un objet dont les clés correspondent au schéma demandé ; les champs manquants sont null.
L’identifiant du fournisseur et la configuration proviennent de la collection nommée spécifiée par le paramètre ai_function_credentials.
Syntaxe
AIExtract
Arguments
text— Texte à partir duquel extraire des informations.Stringinstruction_or_schema— Instruction d’extraction en texte libre, ou objet JSON constant décrivant les champs à extraire.const Stringtemperature— Température d’échantillonnage qui contrôle le caractère aléatoire. Par défaut :0.0.const Float64
ai_function_throw_on_error est désactivé. String
Exemples
Instruction en texte libre
Query
Response
Query
Response
aiGenerate
You are a helpful assistant. Provide a clear and concise response.
Les identifiants du fournisseur et la configuration sont extraits de la collection nommée spécifiée par le paramètre ai_function_credentials.
Syntaxe
AIGenerate
Arguments
prompt— Le prompt ou la question de l’utilisateur à envoyer au modèle.Stringsystem_prompt— Instruction système constante facultative qui guide le comportement du modèle (par ex. persona, format de sortie) et est envoyée avec chaque prompt.Stringtemperature— Température d’échantillonnage contrôlant le caractère aléatoire. Par défaut :0.7.Float64
ai_function_throw_on_error est désactivé. String
Exemples
Question simple
Query
Response
Query
Response
Query
Response
aiTranslate
'keep technical terms untranslated').
L’identifiant du fournisseur et la configuration sont récupérés à partir de la collection nommée spécifiée par le paramètre ai_function_credentials.
Syntaxe
AITranslate
Arguments
text— Texte à traduire.Stringtarget_language— Nom de la langue cible ou code BCP-47 (par exemple,'French','es-MX').Stringinstructions— Instructions supplémentaires facultatives et constantes destinées au traducteur.Stringtemperature— Température d’échantillonnage qui contrôle le caractère aléatoire. Valeur par défaut :0.3.Float64
ai_function_throw_on_error est désactivé. String
Exemples
Traduire en français
Query
Response
Query
Response