AutoAI pour Python

Dernière mise à jour : 21 mars 2025
AutoAI pour Python

La bibliothèque autoai-lib pour Python contient un ensemble de fonctions qui vous aident à interagir avec les expériences IBM watsonx.ai Runtime AutoAI. En utilisant la bibliothèque autoai-lib, vous pouvez réviser et éditer les transformations de données qui ont lieu lors de la création du pipeline. De même, vous pouvez utiliser la bibliothèque autoai-ts-libs pour interagir avec des blocs-notes de pipeline pour des expérimentations de séries temporelles.

Installation d'autoai-lib ou autoai-ts-libs pour Python

Suivez les instructions de la rubrique Installation de bibliothèques personnalisées pour installer autoai-lib ou autoai-ts-libs.

Utilisation de autoai-lib et autoai-ts-libs pour Python

Les bibliothèques autoai-lib et autoai-ts-libs pour Python contiennent des fonctions qui vous aident à interagir avec les expériences AutoAI. A l'aide de la bibliothèque autoai-lib , vous pouvez examiner et éditer les transformations de données qui se produisent lors de la création de pipelines de classification et de régression. A l'aide de la bibliothèque autoai-ts-libs , vous pouvez passer en revue les transformations de données qui ont lieu lors de la création de pipelines de séries temporelles (prévisions).

Installation de autoai-lib et autoai-ts-libs pour Python

Suivez les instructions de la section Installation de bibliothèques personnalisées pour installer autoai-lib et autoai-ts-libs.

Configuration de la journalisation au niveau de la bibliothèque

Vous pouvez configurer le consignateur de bibliothèque autoai_libs en fonction de vos besoins. Par exemple, vous pouvez définir et associer des gestionnaires ou configurer des filtres pour personnaliser les détails du journal, tels que le traitement des avertissements et des erreurs.

Si vous ne mettez pas à jour la configuration, vous obtiendrez le comportement par défaut de la journalisation. Par exemple, les messages de niveau de gravité Avertissement et supérieur (c'est-à-dire Avertissement, Erreur et Critique) seront imprimés dans stderr (erreur standard) sans formatage spécial. Par exemple, les messages d'avertissement s'affichent sous la forme WARNING sans formatage spécial. Pour plus d'informations sur la configuration de la journalisation et pour voir des exemples, reportez-vous à la documentation d' autoai-lib.

Fonctions autoai-lib

L'objet de projet instancié créé après l'importation de la bibliothèque autoai-lib expose les fonctions suivantes:

autoai_libs.transformers.exportable.NumpyColumnSelector()

Cette fonction permet de sélectionner un sous-ensemble de colonnes d'un tableau numpy.

Utilisation :

autoai_libs.transformers.exportable.NumpyColumnSelector(columns=None)
Option Descriptif
columns liste des index de colonne à sélectionner

autoai_libs.transformers.exportable.CompressStrings()

Cette fonction permet de retirer des espaces et des caractères spéciaux des colonnes de chaîne d'un tableau numpy d'entrée X.

Utilisation :

autoai_libs.transformers.exportable.CompressStrings(compress_type='string', dtypes_list=None, misslist_list=None, missing_values_reference_list=None, activate_flag=True)
Option Descriptif
compress_type Type de compression de chaîne. 'string'pour supprimer des espaces d'une chaîne et'hash'pour créer un hachage int. La valeur par défaut est'string'. 'hash'est utilisé pour les colonnes avec des chaînes et cat_imp_strategy ='most_frequemment'
dtypes_list Liste contenant des chaînes qui indiquent le type de chaque colonne du tableau numpy en entrée X (les chaînes sont parmi'char_str','int_str','float_str','float_num','float_int_num','int_num','boolean','Unknown'). Si la valeur est None, le types de colonne sont reconnus. La valeur par défaut est None.
misslist_list liste contient des listes de valeurs manquantes de chaque colonne du tableau numpy d'entrée X. Si aucune, les valeurs manquantes de chaque colonne sont reconnues. La valeur par défaut est None.
missing_values_reference_list Liste de référence des valeurs manquantes dans le tableau numpy d'entrée X
activate_flag qui indique que ce transformateur est actif. Si la valeur est False, transform(X) génère le tableau numpy d'entrée X non modifié.

autoai_libs.transformers.exportable.NumpyReplaceMissingValues()

Sur la base d'un tableau numpy et d'une liste de référence de valeurs manquantes pour ce tableau, cette fonction remplace les valeurs manquantes par une valeur spéciale (généralement une valeur manquante spéciale telle que np.nan).

Utilisation :

autoai_libs.transformers.exportable.NumpyReplaceMissingValues(missing_values, filling_values=np.nan)
Option Descriptif
missing_values Liste de référence des valeurs manquantes
filling_values valeur spéciale affectée à des valeurs inconnues

autoai_libs.transformers.exportable.NumpyReplaceUnknownValues()

Sur la base d'un tableau numpy et d'une liste de référence de valeurs connues pour chaque colonne, cette fonction remplace les valeurs qui ne font pas partie d'une liste de référence par une valeur spéciale (généralement, np.nan). Cette méthode est généralement utilisée pour supprimer les libellés des colonnes d'un jeu de données de test qui n'a pas été vu dans les colonnes correspondantes du jeu de données d'apprentissage.

Utilisation :

autoai_libs.transformers.exportable.NumpyReplaceUnknownValues(known_values_list=None, filling_values=None, missing_values_reference_list=None)
Option Descriptif
known_values_list Liste de référence des listes de valeurs connues pour chaque colonne
filling_values valeur spéciale affectée à des valeurs inconnues
missing_values_reference_list Liste de référence des valeurs manquantes

autoai_libs.transformers.exportable.boolean2float()

Convertit un tableau booléen NumPy en valeurs flottantes, en remplaçant les valeurs manquantes par des valeurs uniques. Il modifie également le type de tableau de " objet " vers " float ".

Utilisation :

autoai_libs.transformers.exportable.boolean2float(activate_flag=True)
Option Descriptif
activate_flag qui indique que ce transformateur est actif. Si la valeur est False, transform(X) génère le tableau numpy d'entrée X non modifié.

autoai_libs.transformers.exportable.CatImputer()

Ce transformateur est un encapsuleur pour les variables catégorielles. Actuellement, il utilise sklearn SimpleImputer en interne.

Utilisation :

autoai_libs.transformers.exportable.CatImputer(strategy, missing_values, sklearn_version_family=global_sklearn_version_family, activate_flag=True)
Option Descriptif
strategy Chaîne facultative (par défaut, ”mean”). Stratégie d'imputation pour les valeurs manquantes.
-mean: remplacez en utilisant la moyenne de chaque colonne. Ne peut être utilisé qu'avec des données numériques.
- median:replace en utilisant la médiane le long de chaque colonne. Ne peut être utilisé qu'avec des données numériques.
- most_frequent:replace en utilisant la valeur la plus fréquente dans chaque colonne. Utilisé avec des chaînes ou des données numériques.
- constant : replace avec fill_value. Peut être utilisée avec des chaînes ou des données numériques.
missing_values Nombre, chiffre, np.nan (par défaut) ou valeur None. Marque de réservation pour les valeurs manquantes. Toutes les occurrences de missing_values sont imputées.
sklearn_version_family Chaîne indiquant la version sklearn pour la compatibilité amont avec les versions 019 et 020dev. Actuellement inutilisée. La valeur par défaut est None.
activate_flag qui indique que ce transformateur est actif. Si la valeur est False, transform(X) génère le tableau numpy d'entrée X non modifié.

autoai_libs.transformers.exportable.CatEncoder()

Cette méthode est un encapsuleur pour l'encodeur catégoriel. Si le paramètre de codage est " ordinal ", il utilise actuellement le sklearn OrdinalEncoder en interne. Si le paramètre d'encodage est 'onehot', ou 'onehot-dense' en interne, il utilise le OneHotEncoder sklearn

Utilisation :

autoai_libs.transformers.exportable.CatEncoder(encoding, categories, dtype, handle_unknown, sklearn_version_family=global_sklearn_version_family, activate_flag=True)
Option Descriptif
encoding Str,'onehot','onehot-dense'ou'ordinal'. Le type de codage à utiliser (la valeur par défaut est'ordinal')
'onehot': coder les fonctions à l'aide d'un schéma one-hot aka one-of-K (ou également appelé codage'dummy'). Ce codage crée une colonne binaire pour chaque catégorie et renvoie une matrice éparse.
'onehot-dense': identique à'onehot', mais renvoie un tableau dense au lieu d'une matrice éparse.
'ordinal': code les fonctions en tant qu'entiers ordinaux. Le résultat est une colonne unique d'entiers (0 à n_categories-1) par fonction.
categories 'auto' ou une liste de listes / tableaux de valeurs. Catégories (valeurs uniques) par fonction:
'auto': détermine automatiquement les catégories à partir des données d'apprentissage.
list : categories[i] contient les catégories attendues dans la ième colonne. Les catégories transmises doivent être triées et ne peuvent pas mélanger des chaînes et des valeurs numériques. Les catégories utilisées se trouvent dans l'attribut encoder.categories_.
dtype Type numérique, par défaut np.float64, dtype de sortie souhaité.
handle_unknown " erreur " (par défaut) ou " ignore ". Indique s'il convient de générer une erreur ou d'ignorer si une fonction de catégorie inconnue est présente lors de la transformation (par défaut, une erreur est générée). Lorsque ce paramètre est défini sur'ignore'et qu'une catégorie inconnue est rencontrée lors de la transformation, les colonnes codées à chaud résultantes pour cette fonction sont toutes des zéros. Dans la transformation inverse, une catégorie inconnue est notée comme Néant. Les catégories inconnues ne sont pas prises en charge pour encoding='ordinal'.
sklearn_version_family Chaîne indiquant la version sklearn pour la compatibilité amont avec les versions 019 et 020dev. Actuellement inutilisée. La valeur par défaut est None.
activate_flag qui indique que ce transformateur est actif. Si la valeur est False, transform(X) génère le tableau numpy d'entrée X non modifié.

autoai_libs.transformers.exportable.float32_transform()

Cette fonction permet de transformer un tableau numpy float64 en float32.

Utilisation :

autoai_libs.transformers.exportable.float32_transform(activate_flag=True)
Option Descriptif
activate_flag qui indique que ce transformateur est actif. Si la valeur est False, transform(X) génère le tableau numpy d'entrée X non modifié.

autoai_libs.transformers.exportable.FloatStr2Float()

Étant donné le tableau numpy X et dtypes_list qui dénote les types de ses colonnes, il remplace les colonnes de chaînes qui représentent des flotteurs (type'float_str'dans dtypes_list) à des colonnes de flotteurs et remplace leurs valeurs manquantes par np.nan.

Utilisation :

autoai_libs.transformers.exportable.FloatStr2Float(dtypes_list, missing_values_reference_list=None, activate_flag=True)
Option Descriptif
dtypes_list list contient des chaînes qui indiquent le type de chaque colonne du tableau numpy d'entrée X (les chaînes sont parmi'char_str','int_str','float_str','float_num','float_int_num','int_num','Boolean','Unknown').
missing_values_reference_list Liste de référence des valeurs manquantes
activate_flag qui indique que ce transformateur est actif. Si la valeur est False, transform(X) génère le tableau numpy d'entrée X non modifié.

autoai_libs.transformers.exportable.NumImputer()

Cette méthode est un encapsuleur pour numérique.

Utilisation :

autoai_libs.transformers.exportable.NumImputer(strategy, missing_values, activate_flag=True)
Option Descriptif
strategy num_imp_strategy: chaîne, facultatif (valeur par défaut = moyenne). Stratégie d'imputation:
-Si la valeur est "moyenne, remplacer les valeurs manquantes en utilisant la moyenne le long de l'axe.
-Si la valeur est" médiane, remplacer les valeurs manquantes en utilisant la médiane le long de l'axe.
-Si la valeur est " la plus fréquente, remplacer les valeurs manquantes en utilisant la valeur la plus fréquente le long de l'axe.
missing_values Entier ou “NaN”, facultatif (par défaut = ”NaN”). Marque de réservation pour les valeurs manquantes. Toutes les occurrences de missing_values sont imputées
Pour les valeurs manquantes codées en np.nan, utiliser la chaîne de valeur “NaN”
activate_flag: drapeau qui indique que ce transformateur est actif. Si la valeur est False, transform(X) génère le tableau numpy d'entrée X non modifié.

autoai_libs.transformers.exportable.OptStandardScaler()

Ce paramètre est un encapsuleur pour la mise à l'échelle des variables numériques. Il utilise actuellement le sklearn StandardScaler en interne.

Utilisation :

autoai_libs.transformers.exportable.OptStandardScaler(use_scaler_flag=True, num_scaler_copy=True, num_scaler_with_mean=True, num_scaler_with_std=True)
Option Descriptif
num_scaler_copy Valeur booléenne, facultative (par défaut, True). Si la valeur est False, tâchez d'éviter d'utiliser une copie et effectuez plutôt une mise à l'échelle en interne. Il n'est pas garanti que cette action fonctionne toujours. Par exemple, si les données ne sont pas un tableau NumPy ou une matrice CSR scipy.sparse , une copie peut toujours être renvoyée.
num_scaler_with_mean Valeur booléenne (par défaut, True). Si la valeur est True, centrez les données avant d'effectuer la mise à l'échelle. Une exception est générée lors d'une tentative sur des matrices éparses car leur centrage implique la création d'une matrice dense, qui, dans les cas d'utilisation courants, est probablement trop grande pour tenir en mémoire.
num_scaler_with_std Valeur booléenne (par défaut, True). Si la valeur est True, effectuez une mise à l'échele des données vers l'écart d'unité (ou l'écart type d'unité).
use_scaler_flag Booléen, indicateur qui indique que ce transformateur est actif. Si la valeur est False, transform(X) génère le tableau numpy d'entrée X non modifié. La valeur par défaut est True.

autoai_libs.transformers.exportable.NumpyPermuteArray()

Réorganise les colonnes ou les lignes d'un tableau numpy en fonction d'une liste d'index.

Utilisation :

autoai_libs.transformers.exportable.NumpyPermuteArray(permutation_indices=None, axis=None)
Option Descriptif
permutation_indices liste des index en fonction desquels les colonnes sont réorganisées
axis 0 permuter le long des colonnes. 1 permuté le long des lignes.

Transformation des fonctions

Ces méthodes s'appliquent aux transformations de fonction décrites dans Détails de l'implémentation AutoAI.

autoai_libs.cognito.transforms.transform_utils.TA1(fun, name=None, datatypes=None, feat_constraints=None, tgraph=None, apply_all=True, col_names=None, col_dtypes=None)

Pour les fonctions sans état unaires, telles que le carré ou le journal, utilisez TA1.

Utilisation :

autoai_libs.cognito.transforms.transform_utils.TA1(fun, name=None, datatypes=None, feat_constraints=None, tgraph=None, apply_all=True, col_names=None, col_dtypes=None)
Option Descriptif
fun Pointeur de fonction
name Nom (sous forme de chaîne) qui identifie de manière unique ce transformateur par rapport aux autres
datatypes une liste de types de données dont l'un ou l'autre est une entrée valide pour la fonction de transformation (numérique, variable flottante, int, etc.)
feat_constraints toutes les contraintes, qui doivent être satisfaites par une colonne pour être considérées comme une entrée valide de cette transformation
tgraph L'objet tgraph doit être le TGraph () de départ . Ce paramètre est facultatif et vous pouvez transmettre Aucun, mais cela peut entraîner un échec de la détection de certaines inefficacités en raison d'un manque de mise en cache
apply_all Utilisez uniquement applyAll = True. Cela signifie que le transformateur énumère toutes les fonctions (ou ensembles de fonctions) qui correspondent aux critères spécifiés et qu'il applique la fonction fournie à chacune d'elles.
col_names Noms des colonnes de fonction répertoriés dans une liste
col_dtypes Liste des types de données des colonnes de fonction

autoai_libs.cognito.transforms.transform_utils.TA2()

Pour les fonctions sans état binaires, telles que sum, product, utilisez TA2.

Utilisation :

autoai_libs.cognito.transforms.transform_utils.TA2(fun, name, datatypes1, feat_constraints1, datatypes2, feat_constraints2, tgraph=None, apply_all=True, col_names=None, col_dtypes=None)
Option Descriptif
fun Pointeur de fonction
name: nom de chaîne qui identifie de manière unique ce transformateur à partir d'autres
datatypes1 une liste de types de données qui sont des entrées valides (premier paramètre) de la fonction du transformateur (numérique, variable flottante, int, etc.)
feat_constraints1 toutes les contraintes, qui doivent être satisfaites par une colonne pour être considérées comme une entrée valide (premier paramètre) de cette transformation
datatypes2 une liste de types de données qui sont des entrées valides (second paramètre) de la fonction de transformation (numérique, variable flottante, int, etc.)
feat_constraints2 toutes les contraintes, qui doivent être satisfaites par une colonne pour être considérées comme une entrée valide (deuxième paramètre) de cette transformation
tgraph L'objet tgraph doit être l'objet TGraph () appelant . Notez que ce paramètre est facultatif et que vous pouvez transmettre None, mais cela entraîne des inefficacités manquantes en raison d'un manque de mise en cache
apply_all Utilisez uniquement applyAll = True. Cela signifie que le transformateur énumère toutes les fonctions (ou ensembles de fonctions) qui correspondent aux critères spécifiés et qu'il applique la fonction fournie à chacune d'elles.
col_names Noms des colonnes de fonction répertoriés dans une liste
col_dtypes liste des types de données des colonnes de caractéristiques

autoai_libs.cognito.transforms.transform_utils.TB1()

Pour l'utilisation de transformations basées sur un état unaire (avec ajustement/transformation), telles que le comptage fréquent.

Utilisation :

autoai_libs.cognito.transforms.transform_utils.TB1(tans_class, name, datatypes, feat_constraints, tgraph=None, apply_all=True, col_names=None, col_dtypes=None)
Option Descriptif
tans_class une classe qui implémente fit( ) et transform( ) conformément à la définition de la fonction de transformation
name Nom (sous forme de chaîne) qui identifie de manière unique ce transformateur par rapport aux autres
datatypes liste de types de données dont l'un ou l'autre est une entrée valide de la fonction du transformateur (numérique, flottant, entier, etc.)
feat_constraints toutes les contraintes, qui doivent être satisfaites par une colonne pour être considérées comme une entrée valide de cette transformation
tgraph L'objet tgraph doit être l'objet TGraph () appelant . Notez que cette option est facultative et que vous risquez de passer la valeur None, mais cela entraîne des inefficacités manquantes en raison d'un manque de mise en cache
apply_all Utilisez uniquement applyAll = True. Cela signifie que le transformateur énumère toutes les fonctions (ou ensembles de fonctions) qui correspondent aux critères spécifiés et qu'il applique la fonction fournie à chacune d'elles.
col_names Noms des colonnes de caractéristiques répertoriés dans une liste
col_dtypes liste des types de données des colonnes de fonction.

autoai_libs.cognito.transforms.transform_utils.TB2()

Pour l'utilisation de transformations basées sur un état binaire (avec ajustement/transformation), telles que le regroupement par.

Utilisation :

autoai_libs.cognito.transforms.transform_utils.TB2(tans_class, name, datatypes1, feat_constraints1, datatypes2, feat_constraints2, tgraph=None, apply_all=True)
Option Descriptif
tans_class Classe qui implémente fit( ) et transform( ) conformément à la définition de fonction de transformation
name Nom (sous forme de chaîne) qui identifie de manière unique ce transformateur par rapport aux autres
datatypes1 une liste de types de données qui sont des entrées valides (premier paramètre) de la fonction de transformation (numérique, variable flottante, int, etc.)
feat_constraints1 toutes les contraintes, qui doivent être satisfaites par une colonne pour être considérées comme une entrée valide (premier paramètre) de cette transformation
datatypes2 une liste de types de données qui sont des entrées valides (second paramètre) de la fonction de transformation (numérique, variable flottante, int, etc.)
feat_constraints2 toutes les contraintes, qui doivent être satisfaites par une colonne pour être considérées comme une entrée valide (deuxième paramètre) de cette transformation
tgraph L'objet tgraph doit être l'objet TGraph () appelant . Ce paramètre est facultatif et vous pouvez transmettre None, mais cela entraîne des inefficacités manquantes en raison d'un manque de mise en cache
apply_all Utilisez uniquement applyAll = True. Cela signifie que le transformateur énumère toutes les fonctions (ou ensembles de fonctions) qui correspondent aux critères spécifiés et qu'il applique la fonction fournie à chacune d'elles.

autoai_libs.cognito.transforms.transform_utils.TAM()

Pour une transformation qui s'applique au niveau des données, telle que PCA, utilisez TAM.

Utilisation :

autoai_libs.cognito.transforms.transform_utils.TAM(tans_class, name, tgraph=None, apply_all=True, col_names=None, col_dtypes=None)
Option Descriptif
tans_class une classe qui implémente fit( ) et transform( ) conformément à la définition de la fonction de transformation
name Nom (sous forme de chaîne) qui identifie de manière unique ce transformateur par rapport aux autres
tgraph L'objet tgraph doit être l'objet TGraph () appelant . Ce paramètre est facultatif et vous pouvez transmettre Aucun, mais il en résulte des inefficacités manquantes dues à un manque de mise en cache
apply_all Utilisez uniquement applyAll = True. Cela signifie que le transformateur énumère toutes les fonctions (ou ensembles de fonctions) qui correspondent aux critères spécifiés et qu'il applique la fonction fournie à chacune d'elles.
col_names Noms des colonnes de fonction répertoriés dans une liste
col_dtypes Liste des types de données des colonnes de fonction

autoai_libs.cognito.transforms.transform_utils.TGen()

TGen est un encapsuleur général et peut être utilisé pour la plupart des fonctions (peut ne pas être le plus efficace cependant).

Utilisation :

autoai_libs.cognito.transforms.transform_utils.TGen(fun, name, arg_count, datatypes_list, feat_constraints_list, tgraph=None, apply_all=True, col_names=None, col_dtypes=None)
Option Descriptif
fun Pointeur de fonction
name Nom (sous forme de chaîne) qui identifie de manière unique ce transformateur par rapport aux autres
arg_count nombre d'entrées de la fonction, dans cet exemple il est 1, pour binaire, il est 2, et ainsi de suite
datatypes_list Liste de listes arg_count correspondant aux types de données d'entrée acceptables pour chaque paramètre. Dans l'exemple précédent, puisque `arg_count=1``, le résultat est une liste dans la liste externe et contient un type unique appelé'numérique'. Dans un autre cas, il peut s'agir d'un cas spécifique'int'ou même d'un cas plus spécifique'int64'.
feat_constraints_list une liste de listes arg_count correspondant à certaines contraintes qui peuvent être imposées sur la sélection des fonctions d'entrée
tgraph L'objet tgraph doit être l'objet TGraph () appelant . Notez que ce paramètre est facultatif et que vous pouvez transmettre None, mais cela entraîne des inefficacités manquantes en raison d'un manque de mise en cache
apply_all Utilisez uniquement applyAll = True. Cela signifie que le transformateur énumère toutes les fonctions (ou ensembles de fonctions) qui correspondent aux critères spécifiés et qu'il applique la fonction fournie à chacune d'elles.
col_names Noms des colonnes de fonction répertoriés dans une liste
col_dtypes liste des types de données des colonnes de caractéristiques

autoai_libs.cognito.transforms.transform_utils.FS1()

Sélection de fonction, type 1 (utilisant une corrélation appariée entre chaque fonction et cible)

Utilisation :

autoai_libs.cognito.transforms.transform_utils.FS1(cols_ids_must_keep, additional_col_count_to_keep, ptype)
Option Descriptif
cols_ids_must_keep Numéros de série des colonnes qui doivent être conservées indépendamment de l'importance de leur fonction
additional_col_count_to_keep Nombre de colonnes à conserver
ptype Classification ou régression

autoai_libs.cognito.transforms.transform_utils.FS2()

Sélection de fonction, type 2.

Utilisation :

autoai_libs.cognito.transforms.transform_utils.FS2(cols_ids_must_keep, additional_col_count_to_keep, ptype, eval_algo)
Option Descriptif
cols_ids_must_keep Numéros de série des colonnes qui doivent être conservées indépendamment de l'importance de leur fonction
additional_col_count_to_keep Nombre de colonnes à conserver
ptype Classification ou régression

Les fonctions autoai-ts-libs

La combinaison de transformateurs et d'estimateurs est conçue et choisie pour chaque pipeline par le système de séries temporelles AutoAI . La modification des transformateurs ou des estimateurs dans le bloc-notes de pipeline généré peut entraîner des résultats inattendus ou même un échec. Nous ne vous recommandons pas de modifier le bloc-notes pour les pipelines générés. Par conséquent, nous n'offrons pas actuellement la spécification des fonctions pour la bibliothèque autoai-ts-libs .

En savoir plus

Sélection d'un modèle AutoAI

Rubrique parent: Sauvegarde d'un bloc-notes généré par AutoAI