Appeler des modèles d'IA en SQL avec les fonctions IA de Trino
Le consommateur Trino AI functions connecte votre projet à un grand modèle de langage pour que vous puissiez appeler des fonctions d'IA directement en SQL
Objectif
Le consommateur Trino AI functions connecte votre projet à un grand modèle de langage pour que vous puissiez appeler des fonctions IA directement en SQL. Vous lui indiquez un fournisseur, une clé d'API et un modèle, et Data Platform crée un catalogue Trino dédié qui expose les fonctions IA de Trino : classer des tickets de support, traduire des descriptions de produits, extraire des champs d'avis clients rédigés librement ou masquer des données personnelles, le tout dans une requête.
Une fois le consommateur créé, les fonctions sont disponibles partout où une requête passe par Trino : l'Explorer du Lakehouse Manager, l'éditeur SQL de l'Analytics Manager, l'action SQL et les outils externes connectés avec un consommateur Trino.
OVHcloud AI Endpoints est le fournisseur par défaut. Tout fournisseur qui expose une API compatible OpenAI sur une adresse HTTPS publique convient également.
Toute personne qui peut interroger le projet peut appeler les fonctions IA, avec votre clé. Les appeler ne demande aucune permission au-delà du droit d'exécuter des requêtes : chaque utilisateur de l'Explorer, de l'Analytics Manager, des actions SQL ou d'un consommateur Trino peut envoyer des données au fournisseur et consommer des tokens facturés sur la clé d'API que vous avez configurée. Il vous revient de maîtriser cette dépense et les données envoyées.
Les données que vous passez à une fonction quittent Data Platform. Chaque appel envoie les valeurs qu'il reçoit, par exemple le contenu d'une colonne, à l'endpoint du fournisseur. Vérifiez que c'est autorisé pour les données que vous traitez.
Prérequis
- Une clé d'API pour votre fournisseur. Pour OVHcloud AI Endpoints, suivez Générer votre première clé d'accès API.
- La permission d'écrire des consommateurs dans le projet (voir Permissions).
Instructions
Créer le consommateur Trino AI functions
Dans le service Connectors, ouvrez l'onglet Consumers, cliquez sur New consumer, sélectionnez Trino AI Functions et cliquez sur Select.
Renseignez le champ Name du consommateur et, si besoin, les champs Description et Tags, puis remplissez la section Trino AI functions configuration.
-
Choisissez le Provider :
-
Saisissez votre API key.
-
Cliquez sur Test connection. Data Platform appelle le fournisseur avec votre clé. Si le test réussit, un sélecteur Model apparaît, avec tous les modèles que le fournisseur propose pour cette clé.
-
Choisissez le modèle (Model) qu'utiliseront les fonctions IA.
-
Cliquez sur Create.
Data Platform crée le catalogue db_<project_id>_ai.
Un projet ne peut contenir qu'un seul consommateur Trino AI functions.
Appeler les fonctions IA en SQL
Ouvrez le consommateur et allez dans son onglet Usage : il présente un exemple de requête pour chaque fonction IA, avec le nom du catalogue de votre projet déjà renseigné, prêt à copier.
Les fonctions se trouvent dans le schéma ai du catalogue : vous les appelez donc par leur nom complet, db_<project_id>_ai.ai.<function>. Sept fonctions sont disponibles :
Classer des tickets de support par catégorie :
Traduire des descriptions de produits en anglais :
Extraire des champs structurés d'avis clients :
Tester sur quelques lignes, puis enrichir la table avec une action
Une fonction IA envoie une requête au fournisseur pour chaque ligne qu'elle traite, et chaque requête attend la réponse du modèle. Une requête simple traite les lignes l'une après l'autre : sur une table entière, elle est lente. Lors de nos tests, ai_analyze_sentiment sur une table de 500 lignes a pris 5 à 6 minutes en requête.
Procédez en 2 temps :
- Testez avec
LIMIT. Exécutez la requête sur quelques lignes, comme dans les exemples ci-dessus, et vérifiez le résultat avant d'aller plus loin. - Enrichissez la table avec l'action d'enrichissement IA. Pour traiter une table entière, exécutez la fonction depuis une action Custom avec le script décrit dans Enrichir une table entière avec l'action d'enrichissement IA. Il répartit les lignes en lots traités en parallèle, jusqu'à 16 à la fois, écrit les résultats dans une table et reprend là où il s'était arrêté lorsque vous le relancez. Les lots étant traités en parallèle, une table entière est traitée bien plus vite qu'avec une requête.
Les durées dépendent du modèle, de l'heure et de l'état de l'endpoint du fournisseur.
Enrichir une table entière avec l'action d'enrichissement IA
L'action d'enrichissement IA est un script d'action Custom qui applique une fonction IA aux lignes d'une table et écrit les résultats dans une table cible. À chaque exécution, il :
- sélectionne jusqu'à
ROW_LIMITlignes dont la colonne de texte n'est pas nulle et qui ne figurent pas encore dans la table cible : relancer l'action reprend donc là où la dernière exécution s'est arrêtée ; - les répartit en
CHUNKSlots selon un hachage de leur identifiant, et exécute unINSERT ... SELECTpar lot, tous les lots en parallèle ; - écrit l'identifiant, le texte source, le nom de la fonction et son résultat dans la table cible, créée dans le dataset source à la première exécution avec les colonnes
<id>,source_text,ai_operationetai_output.
Pour la mettre en place :
-
Téléchargez le script : ai-enrichment-action.py.
-
Dans le Data Processing Engine, ouvrez l'onglet Actions, cliquez sur New Action et choisissez le type Custom. Glissez-déposez le script dans la zone Drag and drop et conservez
customfunccomme nom de fonction. -
Remplissez le bloc de configuration en haut du script :
-
Exécutez l'action. La première exécution crée la table cible et enrichit les
ROW_LIMITpremières lignes. -
Vérifiez le résultat dans l'Explorer, puis augmentez
ROW_LIMITet relancez l'action. Les lignes déjà présentes dans la table cible sont ignorées.
Pour modifier un paramètre le temps d'une exécution sans toucher au script, déclenchez l'action avec un corps qui surcharge les clés en minuscules, par exemple {"row_limit": 500, "chunks": 8}. Consultez Créer des actions de gestion d'événements pour savoir comment une action reçoit un corps.
Bon à savoir sur l'action :
- Chaque ligne est un appel facturé, comme dans une requête. Un lot en échec est relancé une fois, et ses lignes sont facturées à nouveau. Si la relance échoue aussi, l'exécution est marquée en échec, les lignes enrichies par les autres lots sont conservées, et relancer l'action traite le reste.
- Plus il y a de lots, plus l'exécution est rapide, dans la limite du débit de votre fournisseur. Chaque lot occupe un emplacement de requête Trino. Avec OVHcloud AI Endpoints, le plafond est de 400 requêtes par minute et par modèle, quel que soit le nombre de lots : si une exécution échoue avec des erreurs
429, réduisezCHUNKS. - N'exécutez pas deux instances à la fois. Elles sélectionneraient les mêmes lignes et les factureraient deux fois.
- Une table cible contient les résultats d'une seule fonction. Une exécution avec une autre fonction sur la même
TARGET_TABLEest refusée : indiquez-en une autre, ou laissez-la vide. ai_extractrenvoie une map. Stockez-la sous forme de texte JSON avecjson_format(cast(ai_extract({c}, ARRAY['price']) AS json)).- Gardez le script sous 10 Ko si vous l'adaptez : la plateforme refuse les fichiers plus lourds.
Changer de modèle
Ouvrez le consommateur, choisissez un autre modèle dans le sélecteur Model et enregistrez avec le bouton situé en dessous. Data Platform recrée le catalogue avec le nouveau modèle, sous le même nom.
Le modèle est le seul paramètre modifiable. Le fournisseur, l'endpoint et la clé d'API sont figés une fois le consommateur créé : pour changer l'un d'eux, supprimez le consommateur et créez-en un nouveau.
Supprimer le consommateur
Supprimer le consommateur supprime le catalogue db_<project_id>_ai. Toute requête, action SQL ou tableau de bord qui appelle une fonction IA échoue jusqu'à ce que vous créiez un nouveau consommateur Trino AI functions. La clé d'API enregistrée est supprimée avec lui.
Dans le service Connectors, ouvrez l'onglet Consumers et supprimez le consommateur de la liste.
Permissions
La gestion du consommateur relève des permissions Consumer de l'Identity Access Manager. L'appel des fonctions, non : toute personne qui peut exécuter des requêtes dans le projet peut les appeler.
Bon à savoir
- Votre fournisseur facture les appels. Les fonctions IA utilisent votre clé d'API : les tokens qu'elles consomment sont facturés sur votre compte chez le fournisseur, par exemple votre projet OVHcloud AI Endpoints (voir la facturation d'AI Endpoints). Comme l'indique la documentation de Trino, le coût dépend de la fonction, de la longueur de l'entrée et de celle de la sortie.
- Votre fournisseur limite le débit des requêtes. Avec OVHcloud AI Endpoints, une clé d'API autorise 400 requêtes par minute par projet Public Cloud et par modèle, et les appels au-delà échouent avec une erreur
429. Voir Limite de débit des modèles. - Les arguments doivent être du texte. Les fonctions prennent des arguments
varchar. Convertissez les autres types au préalable, par exempleCAST(order_total AS varchar). Voir Types de données et casts Trino. - Les résultats dépendent du modèle. La qualité, la vitesse et le coût varient selon le fournisseur et le modèle choisis. Vérifiez un échantillon du résultat avant de vous y fier.
- La clé d'API est en écriture seule. Data Platform la stocke chiffrée et ne la renvoie jamais, ni dans l'interface ni dans l'API.
Dépannage
Aller plus loin
Pour une formation ou une assistance technique sur la mise en œuvre de nos solutions, contactez votre commercial ou consultez la page Professional Services pour obtenir un devis et faire analyser votre projet par nos experts.
Posez vos questions, faites-nous part de vos commentaires et interagissez directement avec l’équipe qui développe la Data Platform sur le canal Discord dédié.
Si vous avez besoin d'une assistance concernant vos services OVHcloud, créez une demande depuis notre centre d'aide.
Rejoignez notre communauté d'utilisateurs.