Package DBMS_CLOUD_AI

Le package DBMS_CLOUD_AI, avec Select AI, facilite et configure la traduction des invites de langage naturel pour générer, exécuter et expliquer des instructions SQL. Permet également l'extraction de la génération augmentée et des interactions basées sur le langage naturel, y compris le chat avec les LLM.

Prérequis

Une connectivité sortante doit avoir été configurée à l'aide d'une passerelle NAT, par l'administrateur de parc, comme décrit ci-dessous :
  • Créez une passerelle NAT dans le réseau cloud virtuel (VCN) où résident vos ressources Autonomous Database en suivant les instructions fournies dans Création d'une passerelle NAT dans la documentation Oracle Cloud Infrastructure.
  • Après avoir créé la passerelle NAT, ajoutez une règle de routage et une règle de sécurité sortante à chaque sous-réseau (dans le VCN) dans lesquelles résident les ressources Autonomous Database afin que ces ressources puissent utiliser la passerelle pour obtenir une clé publique à partir de votre instance Azure AD :
    1. Accédez à la page Détails du sous-réseau.
    2. Dans l'onglet Informations sur le sous-réseau, cliquez sur le nom de la table de routage du sous-réseau pour afficher la page Détails de la table de routage correspondante.
    3. Dans la table des règles de routage existantes, vérifiez s'il existe déjà une règle avec les caractéristiques suivantes :
      • Destination : 0.0.0.0/0
      • Type de cible : passerelle NAT
      • Cible : nom de la passerelle NAT que vous venez de créer dans le VCN

      Si une telle règle n'existe pas, cliquez sur Ajouter des règles de routage et ajoutez une règle possédant ces caractéristiques.

    4. Revenez à la page Détails du sous-réseau.
    5. Dans la table Listes de sécurité du sous-réseau, cliquez sur le nom de la liste de sécurité du sous-réseau pour afficher la page Détails de la liste de sécurité correspondante.
    6. Dans le menu latéral, sous Resources, cliquez sur Egress Rules.
    7. Dans la table des règles sortantes existantes, vérifiez s'il existe déjà une règle avec les caractéristiques suivantes :
      • Type de destination : CIDR
      • Destination : 0.0.0.0/0
      • Protocole IP : TCP
      • Plage de ports source: 443
      • Plage de ports de destination : Tout

      Si une telle règle n'existe pas, cliquez sur Ajouter des règles sortantes et ajoutez une règle présentant ces caractéristiques.

Les paramètres de proxy HTTP de votre environnement doivent permettre à la base de données d'accéder au fournisseur de services cloud.

Ces paramètres sont définis par l'administrateur de parc lors de la création de l'infrastructure Exadata Cloud@Customer, comme décrit dans Utilisation de la console pour provisionner Exadata Database Service on Cloud@Customer.

Remarques :

La configuration réseau, y compris le proxy HTTP, ne peut être modifiée que jusqu'à ce que l'infrastructure Exadata présente l'état Activation requise. Une fois activé, vous ne pouvez plus modifier ces paramètres.

La configuration d'un proxy HTTP pour une infrastructure Exadata déjà provisionnée nécessite une demande de service (SR) dans My Oracle Support. Pour plus d'informations, reportez-vous à Création d'une demande d'assistance dans My Oracle Support.

Récapitulatif des sous-programmes DBMS_CLOUD_AI

Cette section traite des sous-programmes DBMS_CLOUD_AI fournis avec Autonomous Database.

Sous-programme Description

CREATE_PROFILE Procédure

Cette procédure crée un nouveau profil AI pour traduire les invites en langage naturel en instructions SQL.

DISABLE_PROFILE Procédure

Cette procédure désactive un profil AI dans la base de données actuelle.

DROP_PROFILE Procédure

Cette procédure supprime un profil AI existant.

ENABLE_PROFILE Procédure

Cette procédure permet d'utiliser un profil AI dans la base de données actuelle.

Fonction GENERATE

Cette fonction génère une instruction SQL utilisant AI pour traduire.

SET_ATTRIBUTE Procédure

Cette procédure définit les attributs de profil AI.

SET_PROFILE Procédure

Cette procédure définit le profil AI pour la base de données actuelle.

CREATE_PROFILE Procédure

La procédure crée un nouveau profil AI pour traduire les invites en langage naturel en instruction SQL.

Syntaxe

DBMS_CLOUD_AI.CREATE_PROFILE
   profile_name        IN  VARCHAR2,
   attributes          IN  CLOB      DEFAULT NULL,
   status              IN  VARCHAR2  DEFAULT NULL,
   description         IN  CLOB      DEFAULT NULL
);

Paramètres

Paramètre Description

profile_name

Nom du profil AI. Le nom du profil doit respecter les règles de dénomination de l'identificateur SQL Oracle. La longueur maximale du nom de profil est de 125 caractères.

Ce paramètre est obligatoire.

attributes

Attributs de profil au format JSON. Pour plus d'informations, reportez-vous à Attributs de profil AI.

Valeur par défaut : NULL.

status

Statut du profil.

La valeur par défaut est Activer.

description

Description du profil AI.

Valeur par défaut : NULL.

Exemple

BEGIN
     DBMS_CLOUD_AI.CREATE_PROFILE(
          profile_name    => 'OpenAI,
          attributes      => JSON_OBJECT('provider' value 'openai',
                                         'credential_name' value 'openai_cred'),
          description     => 'AI profile to use OpenAI for SQL translation'
     );
END;
/

DROP_PROFILE Procédure

La procédure supprime un profil AI existant. Si le profil n'existe pas, la procédure génère une erreur.

Syntaxe

DBMS_CLOUD_AI.DROP_PROFILE(
       profile_name        IN   VARCHAR2,
       force               IN   BOOLEAN DEFAULT FALSE
 );

Paramètres

Paramètre Description

profile_name

Nom du profil AI

force

Si TRUE, la procédure ignore les erreurs si le profil AI n'existe pas.

La valeur par défaut de ce paramètre est FALSE.

Exemple

BEGIN
     DBMS_CLOUD_AI.DROP_PROFILE(profile_name => 'OPENAI');
END;
/

Remarques sur l'utilisation

Utilisez force pour supprimer un profil et ignorer les erreurs si le profil AI n'existe pas.

ENABLE_PROFILE Procédure

Cette procédure active le profil AI spécifié par l'utilisateur. La procédure modifie le statut du profil AI en ENABLED.

Syntaxe

DBMS_CLOUD_AI.ENABLE_PROFILE(
     profile_name         IN   VARCHAR2
 );

Paramètres

Paramètre Description

profile_name

Nom du profil AI à activer

Ce paramètre est obligatoire.

Exemple d'activation du profil AI

BEGIN
     DBMS_CLOUD_AI.ENABLE_PROFILE(
         profile_name    => 'OPENAI'
     );
END;
/

DISABLE_PROFILE Procédure

Cette procédure désactive le profil AI dans la base de données actuelle. Le statut du profil AI est remplacé par DISABLED par cette procédure.

Syntaxe

DBMS_CLOUD_AI.DISABLE_PROFILE(
      profile_name  IN  VARCHAR2
);

Paramètres

Paramètre Description

profile_name

Nom du profil AI.

Ce paramètre est obligatoire.

Exemple

BEGIN
     DBMS_CLOUD_AI.DISABLE_PROFILE(
         profile_name    => 'OPENAI'
     );
END;
/

SET_ATTRIBUTE Procédure

Cette procédure vous permet de définir des attributs de profil AI.

Syntaxe

DBMS_CLOUD_AI.SET_ATTRIBUTE(
      profile_name         IN   VARCHAR2,
      attribute_name       IN   VARCHAR2,
      attribute_value      IN   CLOB
);

Paramètres

Seul le propriétaire peut définir ou modifier les attributs du profil AI. Pour obtenir une liste des attributs pris en charge, reportez-vous à la section Profile Attributes.

Paramètre Description

profile_name

Nom du profil AI pour lequel vous voulez définir les attributs.

Ce paramètre est obligatoire.

attribute_name

Nom de l'attribut de profil AI

Ce paramètre est obligatoire.

attribute_value

Valeur de l'attribut de profil.

Valeur par défaut : NULL.

Exemple

BEGIN
 DBMS_CLOUD_AI.SET_ATTRIBUTE(
   profile_name    => 'OPENAI',
   attribute_name  => 'credential_name',
   attribute_value => 'OPENAI_CRED_NEW'
 );
END;
/

SET_PROFILE Procédure

Cette procédure définit le profil AI pour la session en cours.

Après avoir défini un profil AI pour la session de base de données, toute instruction SQL avec le préfixe SELECT AI est considérée comme une invite en langage naturel. En fonction de l'action indiquée avec le préfixe AI, une réponse est générée à l'aide du programme d'installation automatisée. Pour utiliser le préfixe AI, reportez-vous à Utilisation du mot-clé AI pour saisir des invites. Vous pouvez éventuellement remplacer les attributs de profil ou les modifier en les spécifiant au format JSON. Pour définir les attributs, reportez-vous à Procédure SET_ATTRIBUTE.

Le profil AI peut uniquement être défini pour la session en cours si le propriétaire du profil AI est l'utilisateur de la session.

Pour définir un profil AI pour toutes les sessions d'un utilisateur de base de données spécifique ou pour toutes les sessions utilisateur de la base de données, envisagez d'utiliser un déclencheur d'événement de base de données pour l'événement AFTER LOGON sur l'utilisateur spécifique ou sur l'ensemble de la base de données. Pour plus d'informations, reportez-vous à Instruction CREATE TRIGGER dans Référence de langage PL/SQL Database Oracle Database 19c ou Référence de langage PL/SQL Database Oracle Database 23ai.

Syntaxe

DBMS_CLOUD_AI.SET_PROFILE(
    profile_name      IN  VARCHAR2,
);

Paramètres

Paramètre Description

profile_name

Nom du profil AI dans la session en cours.

Ce paramètre est obligatoire.

Exemple


   BEGIN
        DBMS_CLOUD_AI.SET_PROFILE(
          profile_name    => 'OPENAI'
        );
   END;
   /

Fonction GENERATE

Cette fonction fournit une traduction AI sans conservation de statut. Avec votre profil AI existant, vous pouvez utiliser cette fonction pour effectuer les actions prises en charge, telles que showsql, narrate ou chat. L'action par défaut est showsql.

Le remplacement de tout ou partie des attributs de profil est également possible à l'aide de cette fonction.

Syntaxe

DBMS_CLOUD_AI.GENERATE(
    prompt          IN  CLOB,
    profile_name    IN  VARCHAR2 DEFAULT NULL,
    action          IN  VARCHAR2 DEFAULT NULL,
    attributes      IN  CLOB     DEFAULT NULL
) RETURN CLOB;

Paramètres

Paramètre Description

prompt

Invite de langage naturel à traduire à l'aide de l'IA.

L'invite peut inclure SELECT AI <action> comme préfixe. L'action peut également être fournie séparément en tant que paramètre "action". Le paramètre action fourni dans l'invite remplace le paramètre "action". L'action par défaut est showsql.

Ce paramètre est obligatoire.

profile_name

Nom du profil AI. Ce paramètre est facultatif si un profil AI est déjà défini dans la session à l'aide de DBMS_CLOUD_AI.SET_PROFILE.

Valeur par défaut : NULL.

Les conditions suivantes s'appliquent :
  • Si un profil est défini dans la session en cours, l'utilisateur peut omettre l'argument profile_name dans la fonction DBMS_CLOUD_AI.GENERATE.
  • Si l'argument profile_name est fourni dans la fonction DBMS_CLOUD_AI.GENERATE, il remplace toute valeur définie dans la session à l'aide de la procédure DBMS_CLOUD_AI.SET_PROFILE.
  • Si aucun profil n'est défini dans la session à l'aide de la procédure DBMS_CLOUD_AI.SET_PROFILE, l'argument profile_name doit être fourni dans la fonction DBMS_CLOUD_AI.GENERATE.

Remarques :

Pour Database Actions, vous pouvez indiquer l'argument profile_name dans DBMS_CLOUD_AI.GENERATE ou exécuter deux étapes en tant que script PL/SQL : DBMS_CLOUD_AI.SET_PROFILE et DBMS_CLOUD_AI.GENERATE.
EXEC DBMS_CLOUD_AI.set_profile('OPENAI');

-----------------------------------------------
SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'showsql')
FROM dual;

------------------------------------------------
SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'narrate')
FROM dual;
-------------------------------------------
SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'what is oracle autonomous database',
                              profile_name => 'OPENAI',
                              action       => 'chat')
FROM dual;
Pour plus d'informations, reportez-vous à Exécution d'instructions SQL dans l'éditeur de code.
action

Action permettant de traduire une invite naturelle à l'aide de l'IA. Les actions prises en charge sont showsql (par défaut), narrate et chat. Les descriptions des actions sont incluses dans Utilisation de mots-clés AI pour saisir des invites.

Remarques :

Cette fonction ne prend pas en charge l'action runsql. Si vous fournissez l'action runsql, elle renvoie l'erreur suivante :
ORA-20000: runsql action is not supported by generate function ORA-06512: at "C##CLOUD$SERVICE.DBMS_CLOUD", line xxxx 
ORA-06512: at "C##CLOUD$SERVICE.DBMS_CLOUD_AI", line 2696 ORA-06512: at line x
attributes Remplacer des attributs de profil AI spécifiques en fournissant des attributs au format JSON. Pour plus d'informations, reportez-vous à Attributs de profil.

Exemples 

Les exemples suivants illustrent les actions showsql, narrate et chat qui peuvent être utilisées avec la fonction DBMS_CLOUD_AI.GENERATE.

Voici un exemple avec l'action showsql :

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'showsql')
FROM dual;

Voici un exemple avec l'action narrate :

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'how many customers',
                              profile_name => 'OPENAI',
                              action       => 'narrate')
FROM dual;

Voici un exemple avec l'action chat :

SELECT DBMS_CLOUD_AI.GENERATE(prompt       => 'what is oracle autonomous database',
                              profile_name => 'OPENAI',
                              action       => 'chat')
FROM dual;

Attributs de profil

Les attributs d'un profil AI permettent de gérer et de configurer le comportement du profil AI. Certains attributs sont facultatifs et ont une valeur par défaut.

Attributs

Nom d'attribut Description

azure_deployment_name

Nom du modèle déployé de service OpenAI Azure. Le nom ne peut inclure que des caractères alphanumériques, un trait de soulignement (_) et un tiret (-). Le nom ne peut pas se terminer par un trait de soulignement (_) ou un trait d'union (-). Pour savoir comment obtenir azure_deployment_name, reportez-vous à Création et déploiement d'une ressource de service OpenAI Azure.

azure_resource_name

Nom de la ressource de service OpenAI Azure. Le nom de la ressource peut uniquement inclure des caractères alphanumériques et des tirets, et ne peut pas commencer ni se terminer par un tiret. Pour savoir comment obtenir azure_resource_name, reportez-vous à Création et déploiement d'une ressource de service OpenAI Azure.

comments

Incluez les commentaires de colonne dans les métadonnées utilisées pour traduire les invites en langage naturel à l'aide du programme AI. Le type de données BOOLEAN est pris en charge. Les valeurs valides sont TRUE ou FALSE pour une chaîne avec le type de données VARCHAR2.

Remarques :

Les valeurs booléennes ne sont pas applicables dans la procédure DBMS_CLOUD_AI.SET_ATTRIBUTE lors de la définition d'un attribut unique car le paramètre attribute_value est de type de données CLOB.

conversation

Attribut VARCHAR2 indiquant si l'historique des conversations est activé pour un profil. Seuls OpenAI et le service OpenAI Azure prennent en charge l'historique des conversations. Les valeurs valides sont true et false. Valeur par défaut : false. Les valeurs ne respectent pas la casse.

credential_name

Nom des informations d'identification permettant d'accéder aux API du fournisseur AI.

Vous pouvez créer des informations d'identification à l'aide de jetons de porteur en utilisant le nom de fournisseur comme nom d'utilisateur et le jeton de porteur comme mot de passe.

Il s'agit d'un attribut obligatoire. Reportez-vous à Procédure CREATE_CREDENTIAL.

max_tokens

Indique le nombre de sèmes à prévoir par génération. La valeur par défaut est 1024. Pour plus d'informations, reportez-vous à Jetons et jetons.

model

Nom du modèle AI utilisé pour générer les réponses.

Modèles pris en charge pour :

  • OpenAI : gpt-4, gpt-4-0613, gpt-4-32k, gpt-4-32k-0613, gpt-3.5-turbo (par défaut), gpt-3.5-turbo-0613, gpt-3.5-turbo-16k, gpt-3.5-turbo-16k-0613
  • Cohere : commande (par défaut), commande-nuit (expérimentale), commande-lumière et commande-lumière-nuit (expérimentale). Les modèles plus petits et "légers" sont plus rapides, tandis que les modèles plus grands fonctionnent mieux.Les modèles personnalisés peuvent également être fournis avec leur ID complet.
  • OCI Generative AI : pour OCI Generative AI : cohere.command (par défaut). Les modèles préentraînés pour OCI Generative AI sont tous pris en charge par Select AI. Les modèles personnalisés peuvent également être fournis avec leurs OCID complets.

    Pour en savoir plus sur les modèles pris en charge dans OCI Generative AI, reportez-vous à Modèles de base préentraînés dans Generative AI.

Remarques :

Ce paramètre n'est pas utilisé pour Azure car le modèle est déterminé lorsque vous créez votre déploiement dans le portail Service OpenAI Azure.

object_list

Tableau d'objets JSON indiquant le propriétaire et les noms d'objet éligibles pour la traduction en langage naturel en SQL. Pour inclure tous les objets d'un utilisateur donné, omettez le "nom" et indiquez uniquement la clé "propriétaire" dans l'objet JSON.

Pour la traduction du langage naturel en langage SQL, le nom de l'objet, le propriétaire de l'objet, les colonnes d'objet et les commentaires sont envoyés au fournisseur AI à l'aide de demandes HTTPS. Evitez de spécifier des objets avec un nom d'objet sensible, des noms de colonne ou des commentaires dans la liste d'objets.

Les fournisseurs d'IA peuvent avoir une limite sur la taille des métadonnées autorisées dans les demandes de traduction. Envisagez de limiter la liste des objets adaptés aux invites en langage naturel par les utilisateurs de l'application.

Format:
[
  {"owner": "SH", "name": "SALES",
  {"owner": "TEST_USER"}
]

oci_compartment_id

Indique l'OCID du compartiment auquel vous êtes autorisé à accéder lors de l'appel du service OCI Generative AI. L'ID de compartiment peut contenir des caractères alphanumériques, des tirets et des points.

La valeur par défaut est l'ID de compartiment de l'instance Autonomous Database.

oci_endpoint_id

Cet attribut indique l'OCID d'adresse du cluster d'hébergement d'IA dédié Oracle. L'ID d'adresse peut contenir des caractères alphanumériques, des tirets et des points. Pour rechercher l'OCID d'adresse, reportez-vous à Obtention des détails d'une adresse dans Generative AI.

Pour utiliser le cluster d'IA dédié Oracle, vous devez fournir l'OCID d'adresse du cluster d'hébergement.

Par défaut, l'ID d'adresse est vide et le modèle est à la demande sur une infrastructure partagée.

oci_runtimetype

Cet attribut indique le type d'exécution du modèle fourni. Cet attribut est requis lorsque l'attribut model est spécifié et est applicable aux modèles de génération OCI.

Toutes les valeurs autorisées sont disponibles dans OCI Generative AI runtimeType. Reportez-vous à Référence LlmInferenceRequest.

Les valeurs prises en charge sont les suivantes :
  • COHERE
  • LLAMA

provider

Fournisseur d'IA pour le profil d'IA.

Fournisseurs pris en charge :

  • openai
  • cohere
  • azur
  • oci
  • Google
  • anthropique
  • visage câlin

Il s'agit d'un attribut obligatoire.

region

Cet attribut indique l'emplacement du cluster Generative AI que vous souhaitez utiliser. La région peut contenir des caractères alphanumériques et des tirets.

Remarques :

Le cluster d'IA générative Oracle est disponible dans les régions de Chicago, Francfort et Londres. Reportez-vous à Modèles de base préentraînés dans Generative AI.
La région par défaut est us-chicago-1.

stop_tokens

Le texte généré se terminera au début de la séquence d'arrêt la plus ancienne. La séquence sera incorporée dans le texte. La valeur d'attribut doit être un tableau valide de valeurs de chaîne au format JSON. stop_tokens prend un tableau JSON en entrée. Pour en savoir plus sur les jetons d'arrêt ou les séquences d'arrêt, reportez-vous à la documentation OpenAI ou Cohere.

temperature

L'échantillonnage à partir des modèles Générer du texte intègre le caractère aléatoire, de sorte que la même invite peut générer des sorties différentes chaque fois que vous cliquez sur "Générer". La température est un nombre flottant non négatif utilisé pour régler le degré d'aléatoire. Des températures plus basses signifient des générations moins aléatoires. Pour plus d'informations, reportez-vous à la section Temperature. Ce paramètre est applicable à tous les fournisseurs de services pris en charge.

L'exemple suivant utilise Cohere comme fournisseur et affiche des attributs de profil personnalisés :
BEGIN
  DBMS_CLOUD_AI.CREATE_PROFILE(
     profile_name => 'COHERE',
     attributes =>
      '{"provider": "cohere",
        "credential_name": "COHERE_CRED",
        "object_list": [{"owner": "ADB_USER"}],
        "max_tokens":512,
        "stop_tokens": [";"],
        "model": "command-nightly",
        "temperature": 0.5,
        "comments": true
       }');
END;
/

L'exemple suivant présente les attributs de profil personnalisés utilisant OCI Generative AI :

BEGIN                                                                        
  DBMS_CLOUD_AI.CREATE_PROFILE(                                              
      profile_name => 'GENAI',                                                             
      attributes => '{"provider": "oci",                                                                   
        "credential_name": "GENAI_CRED",                                     
        "object_list": [{"owner": "SH", "name": "customers"},                
                        {"owner": "SH", "name": "countries"},                
                        {"owner": "SH", "name": "supplementary_demographics"},
                        {"owner": "SH", "name": "profits"},                  
                        {"owner": "SH", "name": "promotions"},               
                        {"owner": "SH", "name": "products"}],
        "oci_compartment_id": "ocid1.compartment.oc1...",
	"oci_endpoint_id": "ocid1.generativeaiendpoint.oc1.us-chicago-1....",
	"region": "us-chicago-1",
	"model": "cohere.command-light",
	"oci_runtimetype": "COHERE"            
       }');                                                                  
END;                                                                         
/