Sélectionner AI pour Python

Utilisez la bibliothèque client select_ai pour accéder aux fonctionnalités DBMS_CLOUD_AI dans Autonomous AI Database à partir d'applications Python.

Select AI for Python génère du code SQL à partir d'invites en langage naturel, exécute et explique le code SQL généré, gère les conversations contextuelles, résume et traduit le contenu, génère des données synthétiques et crée des workflows de génération augmentée par récupération (RAG).

Select AI for Python prend également en charge les réponses de texte en flux continu, la programmation synchrone et asynchrone, la gestion des accès réseau de l'hôte externe, le regroupement de connexions et une interface de ligne de commande facultative.

Plates-forme prises en charge

Select AI for Python est certifié pour Autonomous AI Database 26ai et 19c. D'autres plates-formes peuvent fonctionner avec la bibliothèque mais ne sont pas certifiées.

Signalez les problèmes de produit dans le référentiel GitHub python-select-ai.

Installer Select AI pour Python

Installez le package Select AI for Python avec pip :

python3 -m pip install select_ai

Pour installer les dépendances facultatives de l'interface de ligne de commande, utilisez :

python3 -m pip install 'select_ai[cli]'

Sélectionnez AI pour Python qui prend en charge Python 3.11, 3.12, 3.13 et 3.14.

Gérer les privilèges de base de données et l'accès réseau

Sélectionnez AI pour Python pour séparer les privilèges de package de base de données, l'accès HTTP et l'accès au réseau hôte externe.

Privilèges de package de base de données

Utilisez les API suivantes pour accorder ou révoquer des privilèges de package de base de données :

select_ai.grant_privileges(...)
select_ai.revoke_privileges(...)

Ces API prennent en charge les privilèges de package de base de données suivants :

  • DBMS_CLOUD
  • DBMS_CLOUD_AI
  • DBMS_CLOUD_AI_AGENT
  • DBMS_CLOUD_PIPELINE

Accès HTTP

Utilisez les API suivantes pour gérer l'accès HTTP :

select_ai.grant_http_access(...)
select_ai.revoke_http_access(...)

Accès réseau à l'hôte externe

Utilisez les API d'accès réseau pour gérer les entrées de liste de contrôle d'accès d'hôte pour les hôtes externes. Indiquez l'hôte, les privilèges requis et une plage de ports facultative.

API synchrones :

select_ai.grant_network_access(...)
select_ai.revoke_network_access(...)

API asynchrones :

await select_ai.async_grant_network_access(...)
await select_ai.async_revoke_network_access(...)

Tâches disponibles

Le tableau suivant récapitule les fonctionnalités principales de Select AI pour Python :

Capacité Description
Du langage naturel au langage SQL Générer du code SQL à partir d'invites en langage naturel, exécuter du code SQL généré, expliquer le code SQL et décrire les résultats des requêtes en langage naturel.
Génération augmentée de récupération Créez et gérez des index vectoriels qui extraient du contenu pertinent pour les réponses d'IA générative.
Conversations Tenir à jour l'historique des invites et le contexte conversationnel des demandes associées.
Profils IA Configurez les fournisseurs d'IA, les informations d'identification, les paramètres de modèle, les objets de base de données et les index vectoriels.
Données synthétiques Générer des données synthétiques en fonction des attributs spécifiés.
Synthèse Synthétiser les résultats des requêtes de texte ou de base de données.
Conversion Traduire du texte d'une langue source vers une langue cible.
Commentaires Enregistrer un retour positif ou négatif pour le code SQL généré et supprimer le retour existant.
API synchrones et asynchrones Utilisez des API synchrones ou des structures async et await Python en fonction des exigences de l'application.
Regroupement des connexions en pool Créez des pools de connexions synchrones ou asynchrones partagés pour les applications simultanées.
Réponses en continu Recevez le texte CLOB généré dans des blocs configurables à partir des méthodes de profil prises en charge.
Interface en mode ligne de commande Utiliser les discussions, les opérations SQL, les profils, les récapitulatifs et les traductions à partir d'un terminal.
Accès au réseau hôte externe Accordez ou révoquez l'accès à des hôtes externes avec des API synchrones ou asynchrones.
Agents d'IA Reportez-vous à Sélectionner un agent AI pour Python pour connaître les classes et les opérations propres à l'agent.

Classes prises en charge

Le tableau suivant récapitule le principal Select AI pour les classes Python :

Classe ou groupe de classes Objet
Classes de fournisseur Définissez le fournisseur d'IA associé à un profil.
Profile et AsyncProfile Créez et gérez des profils AI et des invites de processus.
ProfileAttributes Définissez des paramètres de profil tels que le fournisseur, les informations d'identification, le nombre maximal de jetons, la température, la liste d'objets et l'index vectoriel.
Conversation et AsyncConversation Créer et gérer des conversations contextuelles.
ConversationAttributes Définir les paramètres et le contexte des conversations.
VectorIndex et AsyncVectorIndex Créez et gérez des index vectoriels pour la RAG.
VectorIndexAttributes Définir les paramètres d'index vectoriel. Pour un index vectoriel avec une actualisation programmée, utilisez vector_index.get_next_refresh_timestamp() pour extraire l'horodatage UTC de la prochaine actualisation.
SyntheticDataAttributes Définir les paramètres de génération de données synthétiques.

Classes de fournisseur

Sélectionnez AI pour Python inclut les classes de fournisseur suivantes :

  • OpenAIProvider
  • AzureProvider
  • OCIGenAIProvider
  • AWSProvider
  • GoogleProvider
  • AnthropicProvider
  • CohereProvider
  • HuggingFaceProvider

Pour connaître les attributs propres au fournisseur et les paramètres pris en charge, reportez-vous à Sélectionner AI pour la référence d'API Python.

Utilisation des profils d'IA

Un profil AI connecte une application Python à un fournisseur AI et définit la façon dont les processus Select AI s'invitent. Un profil peut inclure des informations sur le fournisseur, des informations d'identification, des paramètres de modèle, des objets de base de données et des index vectoriels.

Sélectionnez AI pour Python fournit des classes de profil synchrones et asynchrones :

Traitement Class
Synchrone Profile
Asynchrone AsyncProfile

Utilisez un profil synchrone dans les applications qui traitent une opération à la fois. Utiliser un profil asynchrone dans les applications qui traitent des demandes simultanées ou utilisent une boucle d'événement.

Le tableau suivant décrit les fonctions de profil couramment utilisées :

Fonction Description
create() Crée un profil AI dans la base de données ou remplace un profil existant. Reportez-vous à la documentation create() GitHub.
delete() Supprime un profil AI. Reportez-vous à la documentation de delete() GitHub.
fetch() Extrait un profil existant de la base de données.
get_attributes() Renvoie les attributs de profil actuels. Reportez-vous à la documentation get_attributes() GitHub.
set_attribute() Met à jour un attribut de profil.
set_attributes() Met à jour plusieurs attributs de profil.
generate() Traite une invite en fonction de l'action spécifiée. Reportez-vous à la documentation sur generate() GitHub.
run_sql() Génère et exécute SQL. Il s'agit de l'action par défaut. Reportez-vous à la documentation run_sql() GitHub.
show_sql() Génère le code SQL sans l'exécuter. Reportez-vous à la documentation de show_sql() GitHub.
explain_sql() Explique le code SQL généré. Reportez-vous à la documentation sur GitHub Explain_sql().
narrate() Décrit les résultats des requêtes en langage naturel. Reportez-vous à la documentation narrate() GitHub.
chat() Envoie une invite de format libre au modèle d'IA générative. Reportez-vous à la documentation de chat() sur GitHub.
show_prompt() Renvoie l'invite construite envoyée au modèle d'IA générative. Reportez-vous à la documentation GitHub show_prompt().
summarize() Résume le contenu fourni. Reportez-vous à la documentation de summarize() GitHub.
translate() Traduit le texte d'une langue source vers une langue cible. Reportez-vous à la documentation sur transllate() GitHub.
generate_synthetic_data() Génère des données synthétiques en fonction des attributs fournis. Reportez-vous à la documentation sur GitHubgenerate_synthetic_data().
add_positive_feedback() Enregistre un retour positif pour le code SQL généré. Reportez-vous à la documentation GitHub add_positive_feedback().
add_negative_feedback() Enregistre les retours négatifs pour le code SQL généré. Reportez-vous à la documentation GitHub d'add_negative_feedback().
delete_feedback() Supprime les retours précédemment enregistrés. Reportez-vous à la documentation de GitHub delete_feedback().

Pour obtenir la liste complète des méthodes et des paramètres, reportez-vous à Sélectionner AI pour la référence d'API Python.

Pour plus d'informations sur les actions Select AI, reportez-vous également à Utiliser le mot-clé AI pour saisir des invites.

Réponses de profil de flux

Utilisez Streaming lorsqu'une application doit traiter le texte généré lorsqu'il devient disponible au lieu d'attendre la réponse CLOB complète.

Les classes Profile et AsyncProfile prennent en charge la transmission en continu via les paramètres suivants :

Paramètre Description
stream=True Renvoie le texte généré en tant que flux.
chunk_size Définit la quantité de texte généré renvoyée dans chaque bloc.

Streaming est pris en charge pour les méthodes de profil suivantes :

Méthode Prise en charge du streaming
chat() Oui
narrate() Oui
explain_sql() Oui
show_sql() Oui
show_prompt() Oui
run_sql() Non

La méthode run_sql() renvoie un résultat de base de données et ne prend pas en charge la transmission en continu.

Utiliser les conversations

Utilisez les conversations pour tenir à jour le contexte entre les invites associées. Une conversation stocke l'historique des invites afin que les demandes ultérieures puissent faire référence aux informations des demandes antérieures.

Sélectionnez AI pour Python fournit des classes de conversation synchrones et asynchrones :

Traitement Class
Synchrone Conversation
Asynchrone AsyncConversation

Utilisez ConversationAttributes pour définir les paramètres de conversation.

Utilisez une conversation lorsqu'une application nécessite une discussion contextuelle ou une séquence de demandes en langage naturel associées. Utilisez un profil directement lorsque chaque demande est indépendante.

Utiliser des index vectoriels

Utilisez un index vectoriel pour prendre en charge la génération augmentée par récupération. Un index vectoriel extrait le contenu pertinent et ajoute ce contenu à une invite avant que le modèle d'IA générative ne génère une réponse.

Sélectionnez AI pour Python fournit les classes d'index vectoriel suivantes :

Traitement Class
Synchrone VectorIndex
Asynchrone AsyncVectorIndex

Utilisez VectorIndexAttributes pour définir la configuration de l'index vectoriel.

La méthode VectorIndex.create() prend en charge le paramètre wait_for_completion. Définissez ce paramètre pour contrôler si la méthode attend la fin de la création de l'index vectoriel avant de revenir.

Utilisez vector_index.get_next_refresh_timestamp() pour extraire l'horodatage UTC de la prochaine actualisation programmée.

Pour plus de détails sur la base de données, reportez-vous à Procédure CREATE_VECTOR_INDEX.

Générer des données synthétiques

Utilisez generate_synthetic_data() pour générer des données synthétiques en fonction des attributs fournis.

Utilisez SyntheticDataAttributes pour définir des paramètres de données synthétiques. Ces paramètres décrivent les données à générer et les paramètres utilisés par le modèle d'IA générative.

Les données synthétiques peuvent prendre en charge le développement, les démonstrations et d'autres scénarios qui nécessitent des données représentatives sans utiliser d'enregistrements de production.

Extraire et mettre à jour des objets existants

Select AI for Python fournit des méthodes cohérentes pour extraire et mettre à jour des objets proxy soutenus par la base de données :

Méthode Objet
fetch() Extrait un objet de base de données existant et renvoie l'objet proxy correspondant.
set_attribute() Met à jour un attribut sur un objet proxy.
set_attributes() Met à jour plusieurs attributs sur un objet proxy.

Ces méthodes fournissent un moyen cohérent d'utiliser les profils, les conversations, les index vectoriels et d'autres objets proxy pris en charge.

Supprimer des objets avec des méthodes de classe

Utilisez des méthodes de suppression de niveau classe lorsqu'une application doit supprimer un objet sans créer ni extraire d'abord un objet proxy.

Profile.delete_profile(profile_name)
VectorIndex.delete_index(index_name)

Utiliser des API synchrones et asynchrones

Sélectionnez AI pour Python fournit des API synchrones et asynchrones pour ses opérations principales.

Le tableau suivant met en correspondance les classes et les opérations synchrones avec leurs équivalents asynchrones :

Classe ou opération synchrone Equivalent asynchrone
Profile AsyncProfile
Conversation AsyncConversation
VectorIndex AsyncVectorIndex
select_ai.create_pool() select_ai.create_pool_async()
select_ai.grant_network_access() select_ai.async_grant_network_access()
select_ai.revoke_network_access() select_ai.async_revoke_network_access()

Utilisez des API asynchrones dans les applications qui :

  • Traitez plusieurs invites simultanément.
  • Utilisez une boucle d'événement.
  • Intégration aux structures Python asynchrones.
  • Vous devez éviter le blocage en attendant les opérations de base de données.

Utilisez select_ai.create_pool_async() pour créer un pool de connexions partagé pour les workflows asynchrones.

AsyncProfile prend en charge la transmission en continu à partir des mêmes méthodes de texte que Profile. Définissez stream=True et indiquez chunk_size si nécessaire.

Pour obtenir la référence complète d'API asynchrone, reportez-vous à Sélectionner AI pour la référence d'API Python.

Gérer les pools de connexions

Utilisez un pool de connexions lorsqu'une application traite des demandes de base de données répétées ou simultanées.

Sélectionnez AI pour Python pour fournir les fonctions de création de pool suivantes :

Traitement Fonction
Synchrone select_ai.create_pool()
Asynchrone select_ai.create_pool_async()

Une zone de mémoire partagée réduit la nécessité de créer une nouvelle connexion de base de données pour chaque demande et prend en charge les charges globales des applications simultanées.

Utilisation de l'interface de ligne de commande

L'interface de ligne de commande facultative select-ai fournit un accès terminal aux opérations Select AI courantes.

Installez les dépendances de l'interface de commande :

python3 -m pip install 'select_ai[cli]'

Exécutez l'interface de ligne de commande :

select-ai

Le tableau suivant récapitule les commandes prises en charge :

Commande Objet
select-ai chat Démarre une session de discussion interactive et contextuelle.
select-ai sql show Génère et affiche le code SQL sans l'exécuter.
select-ai sql run Génère et exécute SQL.
select-ai sql explain Explique le code SQL généré.
select-ai sql narrate Décrit les résultats des requêtes en langage naturel.
select-ai profile list Répertorie les profils AI.
select-ai profile summarize Résume le contenu avec un profil AI.
select-ai profile translate Traduit le contenu avec un profil AI.

Fournissez des valeurs de connexion à la base de données en tant qu'options de commande ou définissez les variables d'environnement suivantes :

Variable d'environnement Description
SELECT_AI_USER Spécifie le nom utilisateur de la base de données.
SELECT_AI_PASSWORD Spécifie le mot du passe de la base de données.
SELECT_AI_DB_CONNECT_STRING Spécifie la chaîne d'établissement de la connexion à la base.

Sélectionner un agent AI pour Python

Pour sélectionner des classes, des opérations d'outil, des paramètres instruction et des méthodes de suppression au niveau de la classe propres à l'agent AI, reportez-vous à Sélectionner un agent AI pour Python.

Ressources connexes