Utilisation de SELECT AI pour générer des instructions SQL à partir d'invites en langage naturel
La fonctionnalité Sélectionner l'IA permet à Autonomous Database d'utiliser l'IA générative avec les grands modèles de langage (LLM) pour convertir le texte d'entrée de l'utilisateur en code SQL Oracle. Sélectionnez AI traite l'invite en langage naturel, complète l'invite avec des métadonnées, puis génère et exécute une requête SQL.
Rubriques connexes
Terminologie
Il est important de comprendre les différents termes utilisés avec Select AI avant de l'utiliser.
Les termes suivants sont liés à la fonction Sélectionner IA :
Terme | Définition |
---|---|
Informations d'identification de base de données |
Les informations d'identification de base de données sont des informations d'identification d'authentification utilisées pour accéder aux bases de données et interagir avec elles. Ils se composent généralement d'un nom d'utilisateur et d'un mot de passe, parfois complétés par des facteurs d'authentification supplémentaires tels que des jetons de sécurité. Ces informations d'identification sont utilisées pour établir une connexion sécurisée entre une application ou un utilisateur et une base de données, garantissant que seules les personnes ou les systèmes autorisés peuvent accéder aux données stockées dans la base et les manipuler. |
Hallucination en LLM |
L'hallucination dans le contexte des grands modèles de langage fait référence à un phénomène dans lequel le modèle génère un texte incorrect, absurde ou sans rapport avec l'invite d'entrée. En dépit d'être le résultat de la tentative du modèle de générer un texte cohérent, ces cas peuvent contenir des informations qui sont fabriquées, trompeuses ou purement imaginatives. L'hallucination peut se produire en raison de biais dans les données d'entraînement, d'un manque de compréhension correcte du contexte ou de limites dans le processus d'entraînement du modèle. |
IAM | Oracle Cloud Infrastructure Identity and Access Management (IAM) vous permet de contrôler qui a accès à vos ressources cloud. Vous pouvez contrôler le type d'accès affecté à un groupe d'utilisateurs et les ressources spécifiques auxquelles ces utilisateurs ont accès. Pour plus d'informations, reportez-vous à Présentation d'Identity and Access Management. |
Modèle de langue large (LLM) |
Les grands modèles de langage font référence à des modèles d'intelligence artificielle avancés qui sont entraînés sur des quantités massives de données textuelles pour comprendre et générer du langage, du code logiciel et des requêtes de base de données de type humain. Ces modèles sont capables d'effectuer un large éventail de tâches de traitement du langage naturel, y compris la génération de texte, la traduction, la synthèse, la réponse aux questions, l'analyse des sentiments, etc. Les LLM sont généralement des architectures de réseau neuronal qui apprennent les modèles, le contexte et la sémantique à partir des données d'entrée, ce qui leur permet de générer un texte cohérent et pertinent sur le plan contextuel. |
Invites en langage naturel |
Les invites de langage naturel sont des instructions lisibles par l'homme ou des demandes fournies pour guider les modèles d'IA générative, tels que les grands modèles de langage. Au lieu d'utiliser des langages de programmation ou des commandes spécifiques, les utilisateurs peuvent interagir avec ces modèles en entrant des invites sous une forme plus conversationnelle ou en langage naturel. Les modèles génèrent ensuite une sortie en fonction de l'invite fournie. |
Liste de contrôle d'accès réseau (ACL) |
Une liste de contrôle d'accès réseau est un ensemble de règles ou d'autorisations qui définissent le trafic réseau autorisé à passer par un périphérique réseau, tel qu'un routeur, un pare-feu ou une passerelle. Les ACL sont utilisées pour contrôler et filtrer le trafic entrant et sortant en fonction de divers critères tels que les adresses IP, les numéros de port et les protocoles. Ils jouent un rôle crucial dans la sécurité du réseau en permettant aux administrateurs de gérer et de restreindre le trafic réseau afin d'empêcher les accès non autorisés, les attaques potentielles et les violations de données. |
Exemples d'utilisation de Select AI
Découvrez comment intégrer l'IA Select d'Oracle à divers fournisseurs d'IA tels que OpenAI, Cohere, Azure Open AI et OCI Generative AI pour générer des requêtes SQL directement à partir du langage naturel.
Ces exemples présentent les actions communes Sélectionner l'IA et vous guident tout au long de la configuration de votre profil avec différents fournisseurs d'IA pour tirer parti de ces actions.
Exemple : Sélectionner des actions AI
L'exemple suivant illustre des actions telles que runsql
, showsql
, narrate
, chat
et explainsql
que vous pouvez effectuer avec SELECT AI
. Ces exemples utilisent le schéma sh
avec le fournisseur AI et les attributs de profil définis dans la fonction DBMS_CLOUD_AI.CREATE_PROFILE
.
SQL> select ai how many customers exist;
CUSTOMER_COUNT
--------------
55500
SQL> select ai showsql how many customers exist;
RESPONSE
----------------------------------------------------
SELECT COUNT(*) AS total_customers
FROM SH.CUSTOMERS
SQL> select ai narrate how many customers exist;
RESPONSE
------------------------------------------------------
There are a total of 55,500 customers in the database.
SQL> select ai chat how many customers exist;
RESPONSE
--------------------------------------------------------------------------------
It is impossible to determine the exact number of customers that exist as it con
stantly changes due to various factors such as population growth, new businesses
, and customer turnover. Additionally, the term "customer" can refer to individu
als, businesses, or organizations, making it difficult to provide a specific num
ber.
SQL> select ai explainsql how many customers in San Francisco are married;
RESPONSE
--------------------------------------------------------------------------------
SELECT COUNT(*) AS customer_count
FROM SH.CUSTOMERS AS c
WHERE c.CUST_STATE_PROVINCE = 'San Francisco' AND c.CUST_MARITAL_STATUS = 'Married';
Explanation:
- We use the 'SH' table alias for the 'CUSTOMERS' table for better readability.
- The query uses the 'COUNT(*)' function to count the number of rows that match the given conditions.
- The 'WHERE' clause is used to filter the results:
- 'c.CUST_STATE_PROVINCE = 'San Francisco'' filters customers who have 'San Francisco' as their state or province.
- 'c.CUST_MARITAL_STATUS = 'Married'' filters customers who have 'Married' as their marital status.
The result of this query will give you the count of customers in San Francisco who are married, using the column alias 'customer_count' for the result.
Remember to adjust the table and column names based on your actual schema if they differ from the example.
Feel free to ask if you have more questions related to SQL or database in general.
Instructions d'utilisation
Fournit des consignes d'utilisation qui garantissent une utilisation efficace et correcte des invites en langage naturel pour la génération SQL afin de garantir une expérience utilisateur améliorée.
Utilisation prévue
Cette fonctionnalité est destinée à la génération et à l'exécution de requêtes SQL résultant d'invites en langage naturel fournies par l'utilisateur. Il automatise ce qu'un utilisateur peut faire manuellement en fonction de ses métadonnées de schéma, en combinaison avec un grand modèle de langage (LLM) de son choix.
Bien que n'importe quelle invite puisse être fournie, y compris celles qui ne sont pas liées à la production de résultats de requête SQL, Select AI se concentre sur la génération de requête SQL. Sélectionnez AI pour soumettre des demandes générales avec l'action chat
.
Données d'augmentation d'invite
La base de données augmente l'invite spécifiée par l'utilisateur avec les métadonnées de la base de données pour atténuer les hallucinations du LLM. L'invite augmentée est ensuite envoyée au LLM spécifié par l'utilisateur pour produire la requête.
La base de données augmente l'invite avec des métadonnées de schéma uniquement. Ces métadonnées peuvent inclure des définitions de schéma, des commentaires de table et de colonne, ainsi que du contenu disponible à partir du dictionnaire de données et du catalogue. Dans le cadre de la génération SQL, la base de données ne fournit pas de contenu de table ou de vue (valeurs réelles de ligne ou de colonne) lors de l'augmentation de l'invite.
Toutefois, l'action narrate
fournit le résultat de la requête, qui peut contenir des données de base de données, au LLM spécifié par l'utilisateur à partir duquel générer du texte en langage naturel décrivant les résultats de la requête.
Avertissement :
Les grands modèles de langage (LLM) ont été formés à un large éventail de documents et de contenus textuels, généralement à partir d'Internet. En conséquence, les LLM peuvent avoir incorporé des modèles de contenu non valide ou malveillant, y compris l'injection SQL. Ainsi, bien que les LLM soient capables de générer du contenu utile et pertinent, ils peuvent également générer des informations incorrectes et fausses, y compris des requêtes SQL qui produisent des résultats inexacts et / ou compromettent la sécurité de vos données.
Les requêtes générées en votre nom par le fournisseur de LLM spécifié par l'utilisateur seront exécutées dans votre base de données. Votre utilisation de cette fonctionnalité est uniquement à vos propres risques et, nonobstant toutes autres conditions générales relatives aux services fournis par Oracle, constitue votre acceptation de ce risque et votre exclusion expresse de la responsabilité ou de la responsabilité d'Oracle pour tout dommage résultant de cette utilisation.
A propos de la génération SQL
L'utilisation du langage naturel pour interagir avec les données de votre base de données est désormais possible avec les LLM. Cela signifie que vous pouvez utiliser le langage naturel, par exemple l'anglais brut, pour interroger la base de données.
Lorsque vous utilisez Select AI, Autonomous Database gère le processus de conversion du langage naturel en SQL. Cela signifie que vous pouvez fournir une invite en langage naturel au lieu d'un code SQL pour interagir avec vos données. Select AI sert d'outil de productivité pour les utilisateurs et les développeurs SQL et permet aux utilisateurs SQL non experts de tirer des informations utiles de leurs données, sans avoir à comprendre les structures de données ou les langages techniques.
DBMS_CLOUD_AI
dans Autonomous Database permet l'intégration avec un LLM spécifié par l'utilisateur pour générer du code SQL à l'aide d'invites en langage naturel. Le package aide le LLM à connaître le schéma de base de données et lui demande d'écrire une requête SQL cohérente avec ce schéma. Le package DBMS_CLOUD_AI
fonctionne avec des fournisseurs d'IA tels que OpenAI, Cohere, Azure OpenAI Service et Oracle Cloud Infrastructure Generative AI.
Remarques :
Les utilisateurs doivent disposer d'un compte auprès du fournisseur d'IA et fournir leurs informations d'identification via les objetsDBMS_CLOUD_AI
utilisés par Autonomous Database.
Utilisation de DBMS_CLOUD_AI pour configurer les profils AI
Autonomous Database utilise les profils d'IA pour faciliter et configurer l'accès à un LLM et pour configurer la génération d'instructions SQL à partir d'invites en langage naturel.
Les profils AI incluent les objets de base de données qui sont la cible des requêtes en langage naturel. Les métadonnées utilisées à partir de ces cibles peuvent inclure des noms de table de base de données, des noms de colonne, des types de données de colonne et des commentaires. Vous créez et configurez des profils AI à l'aide des procédures DBMS_CLOUD_AI.CREATE_PROFILE
et DBMS_CLOUD_AI.SET_PROFILE
.
Configuration requise pour configurer le package DBMS_CLOUD_AI
Les éléments suivants sont requis pour exécuter DBMS_CLOUD_AI
:
- Accès à un compte cloud Oracle Cloud Infrastructure et à une instance Autonomous Database.
- Compte d'API payant pour un fournisseur d'IA pris en charge, parmi les suivants :
-
OpenAI : pour permettre à OpenAI de générer du code SQL à partir d'invites en langage naturel, obtenez les clés d'API à partir de votre compte payant OpenAI.
Vous pouvez trouver votre clé d'API secrète dans les paramètres utilisateur.
-
Cohere : pour permettre à Cohere de générer du code SQL à partir d'invites en langage naturel, obtenez des clés d'API à partir de votre compte payant Cohere.
Cliquez sur Tableau de bord, puis sur Clés d'API dans la navigation de gauche. Copiez la clé d'API par défaut ou créez une autre clé. Pour plus d'informations, reportez-vous à API-Keys.
-
Service OpenAI Azure : permet à Service OpenAI Azure de générer du code SQL à partir d'invites en langage naturel, de configurer et de fournir un accès au fournisseur d'IA.
Pour utiliser le service OpenAI Azure, procédez comme suit :
- Obtenez vos clés d'API secrètes. Vous pouvez trouver vos clés d'API dans la section Resource Management de votre portail Azure. Sur la page Ressource de service Azure OpenAI, cliquez sur Clés et adresse. Vous pouvez copier KEY1 ou KEY2.
- Créez une ressource de service OpenAI Azure et déployez un modèle : Créer et déployer une ressource de service OpenAI Azure.
Conseil :
- Notez le nom de la ressource et le nom du déploiement car ces paramètres sont utilisés pour fournir des droits d'accès réseau et créer votre profil de service OpenAI Azure à l'aide de la procédure
DBMS_CLOUD_AI.CREATE_PROFILE
. - Pour en savoir plus sur les limites de débit pour le jeton par minute sur un modèle, reportez-vous à Quota et limites de service Azure OpenAI.
- Notez le nom de la ressource et le nom du déploiement car ces paramètres sont utilisés pour fournir des droits d'accès réseau et créer votre profil de service OpenAI Azure à l'aide de la procédure
- Autoriser l'accès au service OpenAI Azure :
- Vous pouvez utiliser votre clé d'API secrète pour autoriser l'accès au service OpenAI Azure. Pour en savoir plus, reportez-vous à l'exemple de la section Examples of Using Select AI.
- OCI Generative AI : reportez-vous à Comment générer la clé de signature d'API.
- Google : pour permettre à Google AI Studio de générer des réponses SQL et textuelles à vos invites en langage naturel, obtenez les clés d'API à partir de votre compte payant Google AI Studio.
- Accédez à Google AI Studio.
- Cliquez sur Connexion à Google AI Studio.
- Cliquez sur Get API key dans l'écran d'invite.
- Sélectionnez toutes les options applicables sur la page suivante.
- Cliquez sur Create API key.
-
Cliquez sur Créer une clé d'API dans le nouveau projet.
L'écran affiche la progression et génère une clé d'API. Copiez la clé et enregistrez-la.
- Anthropique : pour permettre à Anthropic Developer Console de générer des réponses SQL et textuelles à vos invites en langage naturel, obtenez les clés d'API à partir de votre compte payant Anthropic Developer Console.
- Accédez à Console de développeur anthropique.
- Créez un compte si vous n'en avez pas déjà un.
- Une fois connecté, accédez à la section API ou au tableau de bord.
- Recherchez une option pour générer ou afficher les clés d'API.
- Cliquez sur cette option pour créer une clé d'API.
-
Copiez la clé d'API générée et enregistrez-la.
L'API Claude est un service payant. Vous devrez ajouter des crédits à votre compte avant de pouvoir utiliser la clé d'API.
- Hugging Face : pour permettre à Hugging Face en tant que fournisseur d'IA de générer des réponses SQL et textuelles à vos invites en langage naturel, obtenez les clés d'API de votre compte payant Hugging Face.
- Accédez à Hugging Face.
- Créez un compte si vous n'en avez pas déjà un.
- Accédez aux paramètres de votre compte.
- Dans le menu de navigation, localisez les jetons d'accès.
- Cliquez sur cette option pour créer une clé d'API.
- Copiez la clé d'API générée et enregistrez-la.
-
- Privilèges d'ACL réseau pour accéder à votre fournisseur d'IA externe.
Remarques :
L'ACL de réseau n'est pas applicable pour OCI Generative AI. - Informations d'identification qui fournissent l'accès au fournisseur AI.
Configurer le package DBMS_CLOUD_AI
Avant d'utiliser Select AI, voici les étapes à suivre pour activer DBMS_CLOUD_AI
.
DBMS_CLOUD_AI
:
-
Accordez le privilège
EXECUTE
sur le packageDBMS_CLOUD_AI
à l'utilisateur qui souhaite utiliser Select AI.Par défaut, seul l'utilisateur ADMIN dispose du privilège
EXECUTE
. L'utilisateur ADMIN peut accorder le privilègeEXECUTE
à d'autres utilisateurs. -
Accordez l'accès aux listes de contrôle d'accès réseau à l'utilisateur qui souhaite utiliser Select AI et à l'adresse du fournisseur AI.
L'utilisateur ADMIN peut accorder l'accès à la liste de contrôle d'accès réseau. Pour plus d'informations, reportez-vous à APPEND_HOST_ACE - Procédure dans le manuel Référence de types et de packages Oracle Database 19c PL/SQL ou Référence de types et de packages Oracle Database 23ai PL/SQL.
- Créez des informations d'identification pour activer l'accès à votre fournisseur AI.
Pour plus d'informations, reportez-vous à Procédure CREATE_CREDENTIAL.
EXECUTE
à ADB_USER
:grant execute on DBMS_CLOUD_AI to ADB_USER;
L'exemple suivant accorde à ADB_USER
le privilège d'utiliser l'adresse api.openai.com.
BEGIN
DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
host => 'api.openai.com',
ace => xs$ace_type(privilege_list => xs$name_list('http'),
principal_name => 'ADB_USER',
principal_type => xs_acl.ptype_db)
);
END;
/
APPEND_HOST_ACE Paramètres de fonction
Paramètre | Description |
---|---|
|
Hôte, qui peut être le nom ou l'adresse IP de l'hôte. Vous pouvez utiliser un caractère générique pour spécifier un domaine ou un sous-réseau IP. Le nom d'hôte ou de domaine ne distingue pas les majuscules des minuscules. Pour OpenAI, utilisez api.openai.com. Pour Cohere, utilisez api.cohere.ai. Pour Service OpenAI Azure, utilisez <azure_resource_name>.openai.azure.com. Pour en savoir plus sur Pour Google, utilisez generativelanguage.googleapis.com. Pour Anthropic, utilisez api.anthropic.com. Pour Hugging Face, utilisez api-inference.huggingface.co. |
|
Entrées de contrôle d'accès (ACE). Le type |
Voici un exemple de création d'informations d'identification pour activer l'accès à OpenAI.
EXEC DBMS_CLOUD.CREATE_CREDENTIAL
('OPENAI_CRED', 'OPENAI', 'your_api_token');
Paramètres DBMS_CLOUD.CREATE_CREDENTIAL
Paramètre | Description |
---|---|
|
Nom des informations d'identification à stocker. Le paramètre |
|
Les arguments
|
|
Les arguments
|
Création et définition d'un profil AI
Décrit les étapes de création et d'activation d'un profil AI.
Utilisez DBMS_CLOUD_AI.CREATE_PROFILE
pour créer un profil AI. Démarrez ensuite DBMS_CLOUD_AI.SET_PROFILE
pour activer le profil AI afin de pouvoir utiliser SELECT AI
avec une invite en langage naturel.
Remarques :
Vous devez exécuter DBMS_CLOUD_AI.SET_PROFILE
dans chaque nouvelle session de base de données (connexion) avant d'utiliser SELECT
AI
.
L'exemple suivant avec le fournisseur OpenAI crée un profil AI
appelé OPENAI
et définit le profil OPENAI
pour la session utilisateur en cours.
-- Create AI profile
--
SQL> BEGIN
DBMS_CLOUD_AI.create_profile(
'OPENAI',
'{"provider": "openai",
"credential_name": "OPENAI_CRED",
"object_list": [{"owner": "SH", "name": "customers"},
{"owner": "SH", "name": "sales"},
{"owner": "SH", "name": "products"},
{"owner": "SH", "name": "countries"}]
}');
END;
/
PL/SQL procedure successfully completed.
--
-- Enable AI profile in current session
--
SQL> EXEC DBMS_CLOUD_AI.set_profile('OPENAI');
PL/SQL procedure successfully completed.
Utiliser le mot-clé AI pour saisir des invites
Utilisez AI
comme mot-clé dans une instruction SELECT
pour interagir avec la base de données à l'aide d'invites en langage naturel.
Le mot-clé AI
dans une instruction SELECT
indique au moteur d'exécution SQL d'utiliser le LLM identifié dans le profil AI actif pour traiter le langage naturel et générer du code SQL.
Vous pouvez utiliser le mot-clé AI
dans une requête avec des clients Oracle, tels que SQL Developer, OML Notebooks et des outils tiers, pour interagir avec la base de données en langage naturel.
Remarques :
Vous ne pouvez pas exécuter d'instructions PL/SQL, DDL ou DML à l'aide du mot-cléAI
.
Syntaxe
SELECT AI action natural_language_prompt
Paramètres
Paramètre | Description |
---|---|
|
Exécutez la commande SQL fournie à l'aide d'une invite en langage naturel. Il s'agit de l'action par défaut et il est facultatif de spécifier ce paramètre. |
|
Affiche l'instruction SQL d'une invite en langage naturel. |
|
La sortie de l'invite est expliquée en langage naturel. Cette option envoie le résultat SQL au fournisseur d'IA pour produire un récapitulatif du langage naturel. |
|
Génère une réponse directement à partir du LLM en fonction de l'invite. Si |
|
Le code SQL généré à partir de l'invite est expliqué en langage naturel. Cette option envoie le code SQL généré au fournisseur AI pour produire une explication en langage naturel. |
Remarques sur l'utilisation
-
L'option
AI
n'est pas prise en charge dans Database Actions ou le service APEX. Vous pouvez utiliser uniquement la fonctionDBMS_CLOUD_AI.GENERATE
. -
Le mot-clé
AI
est pris en charge uniquement dans une instructionSELECT
. -
Vous ne pouvez pas exécuter d'instructions PL/SQL, DDL ou DML à l'aide du mot-clé
AI
. -
La séquence est
SELECT
, suivie deAI
. Ces mots-clés ne respectent pas la casse. Une fois qu'un fichierDBMS_CLOUD_AI.SET_PROFILE
est configuré, le texte aprèsSELECT AI
est une invite en langage naturel. Si aucun profil AI n'est défini,SELECT
AI
signale l'erreur suivante :ORA-00923: FROM keyword not found where expected 00923. 00000 - "FROM keyword not found where expected"
-
Les règles d'utilisation de caractères spéciaux s'appliquent conformément aux directives Oracle. Par exemple, utilisez deux apostrophes si vous utilisez une apostrophe dans une phrase.
select ai how many customers in SF don''t own their own home
-
Les LLM sont soumis à des hallucinations et les résultats ne sont pas toujours corrects :
-
Il est possible que
SELECT AI
ne puisse pas exécuter le code SQL généré pour une invite de langage naturel spécifique. -
Il est possible que
SELECT AI
ne puisse pas générer de code SQL pour une invite de langage naturel spécifique.
Dans un tel scénario,
SELECT AI
répond avec des informations pour vous aider à générer des instructions SQL valides. -
-
Utilisez l'action
chat
, avecSELECT AI chat
, pour en savoir plus sur les structures SQL. Pour obtenir de meilleurs résultats avec l'actionchat
, utilisez des vues de base de données ou des tables avec des noms de colonne contextuels ou envisagez d'ajouter des commentaires de colonne expliquant les valeurs stockées dans les colonnes. -
Pour accéder aux vues DBA ou USER, reportez-vous à la section DBMS_CLOUD_AI Views.