Utiliser des ressources approuvées dans les espaces AI/BI Genie
Cet article définit les ressources approuvées et explique comment les utiliser pour fournir des réponses vérifiées dans un espace Genie.
Que sont les ressources approuvées ?
Les ressources approuvées sont des fonctions prédéfinies et des exemples de requêtes destinés à fournir des réponses vérifiées aux questions des utilisateurs que vous anticipez. Lorsqu’un utilisateur envoie une question qui invoque une ressource approuvée, cela est indiqué dans la réponse, ce qui ajoute une couche supplémentaire de garantie dans la précision des résultats.
Voici des exemples de ressources approuvées :
- Exemples de requêtes SQL paramétrables : lorsqu’une requête SQL paramétrable est utilisée pour générer une réponse, la réponse est étiquetée comme ressource approuvée. La réponse inclut les valeurs utilisées comme arguments dans la requête.
- Fonctions de table définies par l’utilisateur (UDF) : vous pouvez définir des fonctions personnalisées et les inscrire auprès Unity Catalog. Ensuite, vous pouvez ajouter ces fonctions en tant que ressources approuvées lorsque vous configurez des instructions dans votre espace Genie. Consultez Créer une fonction de table SQL et Fonctions définies par l’utilisateur (UDF) dans Unity Catalog.
Remarque
Les ressources approuvées ne remplacent pas toutes les autres instructions. Databricks recommande d’utiliser des ressources approuvées pour des questions récurrentes bien établies. Elles fournissent des réponses exactes à des questions spécifiques.
Pourquoi créer des ressources approuvées ?
Lorsqu’ils utilisent un outil IA, les utilisateurs doivent évaluer la précision des réponses générées. En règle générale, ils font cela en évaluant si la réponse est logique et répond efficacement à leur question. Avec Genie, une réponse est fournie sous la forme d’une table de résultats. Les utilisateurs peuvent passer en revue le code SQL généré qui crée le jeu de résultats, mais les utilisateurs non techniques peuvent ne pas avoir l’arrière-plan pour interpréter l’instruction SQL ou évaluer la justesse de la réponse. Les ressources approuvées permettent de réduire la probabilité que ces utilisateurs rencontrent des réponses trompeuses, incorrectes ou difficiles à interpréter.
Lorsqu’un utilisateur reçoit une réponse étiquetée comme ressource approuvée, il peut être sûr qu’un expert du domaine a examiné l’instruction SQL qui remplit les résultats.
Quelle est la différence entre les ressources approuvées et les exemples de requêtes SQL ?
Les ressources approuvées fournissent des réponses vérifiées aux questions auxquelles vous vous attendez de la part des utilisateurs de l’espace Genie. Lorsqu’une ressource approuvée peut répondre à la question d’un utilisateur, l’instruction que vous avez stockée en tant que ressource approuvée s’exécute et retourne le jeu de résultats spécifié. Toutes les fonctions SQL que vous incluez dans les instructions sont traitées comme des ressources approuvées. Les exemples de requêtes SQL qui incluent des paramètres peuvent également être traités comme des ressources approuvées.
- Fonctions SQL : vous pouvez écrire des fonctions SQL personnalisées adaptées pour gérer vos données et répondre à des questions spécifiques à l’entreprise. Genie ne considère pas le contenu SQL de vos ressources approuvées lors de la réponse aux questions.
- Exemples de requêtes SQL (avec paramètres) : lorsque le texte exact d’une requête d’exemple paramétrable est utilisé pour générer une réponse, la réponse est automatiquement étiquetée comme ressource approuvée. Si le texte exact de la requête n’est pas utilisé ou si l’exemple de requête n’utilise pas de paramètres, la requête fournit un contexte et guide Genie dans la génération des instructions SQL pour traiter d’autres questions.
Définir une ressource approuvée
La définition d’une ressource approuvée commence par identifier une question probable. Par exemple, supposons que vous travaillez avec un jeu de données de pipeline de vente et qu’une question courante qu’un responsable des ventes peut poser est « Quelles sont les opportunités de vente ouvertes dans mon pipeline ? »
Exemple : utiliser une fonction UDF
Les étapes suivantes décrivent les étapes permettant de créer une ressource approuvée, en tant qu’UDF, qui répond à cette question :
Définissez et testez une requête SQL qui répond à la question.
Cette requête joint deux tables et retourne un jeu de données d’opportunités ouvertes listées dans la catégorie de prévision « Pipeline ». Dans cette étape, l’objectif est d’écrire une requête de base qui retourne les résultats attendus.
SELECT o.id AS `OppId`, a.region__c AS `Region`, o.name AS `Opportunity Name`, o.forecastcategory AS `Forecast Category`, o.stagename, o.closedate AS `Close Date`, o.amount AS `Opp Amount` FROM users.user_name.opportunity o JOIN catalog.schema.accounts a ON o.accountid = a.id WHERE o.forecastcategory = 'Pipeline' AND o.stagename NOT LIKE '%closed%';
Définissez une fonction de catalogue Unity.
Votre fonction Unity Catalog doit paramétrer la requête et produire des résultats correspondant aux conditions spécifiques auxquelles vous vous attendez de la part des utilisateurs. Supposons que le responsable des ventes souhaite affiner le jeu de résultats en se concentrant sur une région ou un groupe de régions en particulier.
L’exemple suivant définit une fonction Unity Catalog qui prend une liste de régions en tant que paramètre et retourne une table. Le retour de la fonction est presque identique à l’instruction SQL de l’étape précédente, sauf que la clause
WHERE
a été modifiée pour filtrer les résultats par région si une région a été fournie. Les commentaires fournis dans les définitions de fonction sont essentiels pour indiquer à l’espace Génie quand et comment appeler cette fonction.- Commentaires de paramètre : la fonction
open_opps_in_region
attend un tableau de chaînes en tant que paramètre. Le commentaire inclut un exemple de l’entrée attendue. Si aucun paramètre n’est fourni, la valeur par défaut estNULL
. Consultez Conseils pour écrire des fonctions pour plus d’informations sur l’inclusion de paramètres et de commentaires facultatifs. - Commentaires de fonction : le commentaire dans la fonction de table SQL fournit une explication détaillée de ce que fait la fonction. Cette explication est essentielle, car elle informe Genie quand utiliser la fonction comme réponse aux questions des utilisateurs. Le commentaire doit décrire l’objectif de la fonction aussi précisément que possible. Ces informations guident Genie dans la reconnaissance de la pertinence de la fonction à des questions spécifiques.
CREATE OR REPLACE FUNCTION users.user_name.open_opps_in_region ( regions ARRAY < STRING > COMMENT 'List of regions. Example: ["APAC", "EMEA"]' DEFAULT NULL ) RETURNS TABLE COMMENT 'Addresses questions about the pipeline in the specified regions by returning a list of all the open opportunities. If no region is specified, returns all open opportunities. Example questions: "What is the pipeline for APAC and EMEA?", "Open opportunities in APAC"' RETURN SELECT o.id AS `OppId`, a.region__c AS `Region`, o.name AS `Opportunity Name`, o.forecastcategory AS `Forecast Category`, o.stagename, o.closedate AS `Close Date`, o.amount AS `Opp Amount` FROM catalog.schema.opportunity o JOIN catalog.schema.accounts a ON o.accountid = a.id WHERE o.forecastcategory = 'Pipeline' AND o.stagename NOT LIKE '%closed%' AND ( isnull(open_opps_in_region.regions) OR array_contains(open_opps_in_region.regions, region__c) );
Lorsque vous exécutez le code pour créer une fonction, celle-ci est enregistrée par défaut dans le schéma actif. Consultez les Fonctions définies par l’utilisateur (UDF) dans Unity Catalog. Consultez Créer une fonction de table SQL pour obtenir une syntaxe et des exemples.
- Commentaires de paramètre : la fonction
Ajoutez une ressource approuvée.
Une fois que la fonction est créée dans Unity Catalog, un utilisateur disposant au moins d’une autorisation CAN EDIT sur l’espace Genie peut l’ajouter depuis l’onglet Instructions de l’espace Genie.
Autorisations requises
Les utilisateurs disposant au moins d’une autorisation CAN EDIT sur un espace Genie peuvent ajouter ou supprimer des ressources approuvées.
Les utilisateurs de l’espace Genie doivent disposer de l’autorisation CAN USE
sur le catalogue et le schéma qui contient la fonction. Pour invoquer une ressource approuvée, ils doivent disposer de l’autorisation EXECUTE
sur la fonction dans Unity Catalog. Les objets sécurisables du catalogue Unity héritent des autorisations de leurs conteneurs parents. Consultez Objets sécurisables dans le catalogue Unity.
Pour simplifier le partage dans un espace Genie, Databricks recommande de créer un schéma dédié pour contenir toutes les fonctions que vous souhaitez utiliser dans votre espace Genie.
Conseils pour écrire des fonctions
Passez en revue les exemples suivants pour découvrir comment créer des fonctions dynamiques pour les ressources approuvées.
Inclure une valeur de paramètre par défaut
Vous pouvez spécifier une valeur par défaut pour un paramètre. Utilisez la clause DEFAULT
dans la signature de fonction, comme indiqué dans l’exemple suivant :
countries ARRAY<STRING> COMMENT 'List of countries' DEFAULT ARRAY()
Inclure des exemples de valeurs de paramètres
Pour les colonnes avec une énumération définie de valeurs, augmentez la précision en les définissant clairement dans le commentaire. L’exemple suivant fournit une liste d’exemples de valeurs :
regions ARRAY < STRING > COMMENT 'List of regions. Values: ["AF","AN","AS", "EU", "NA", "OC", "SA", NULL]'
Créer un paramètre facultatif
Pour créer un paramètre facultatif, définissez le paramètre par défaut sur NULL
, comme indiqué dans l’exemple suivant :
min_date STRING DEFAULT NULL
Spécifier la mise en forme avec des commentaires
Vous pouvez spécifier le format exact d’un paramètre en l’incluant dans un commentaire, comme illustré dans l’exemple suivant :
min_date STRING COMMENT 'minimum date (included) for a transaction, in `yyyy-mm-dd` format'
Vérifier explicitement les valeurs NULL
Si vous incluez un paramètre facultatif, NULL
est une valeur possible à laquelle vous devez vous attendre. Étant donné que la comparaison avec NULL
peut générer des résultats imprévisibles, vous devez générer explicitement une vérification des valeurs NULL
dans votre fonction. L’exemple suivant fournit un exemple de syntaxe :
WHERE (isnull(min_date) OR created_date >= min_date)