Aller au contenu
Accueil » Exemple d’outil Python créé avec ChatGPT

Exemple d’outil Python créé avec ChatGPT

    Bonjour à tous, dans cet article, je souhaite vous montrer un exemple d’un outil Python créé avec l’aide de ChatGPT. L’idée est de vous montrer comment cet outil peut vous faire gagner énormément de temps. L’intelligence artificielle va vous permettre de générer du code facilement et rapidement.

    Pour créer vos outils en python, aller plus vite avec ChatGPT

    La problématique est la suivante :

    Rajouter un préfixe ou un suffixe à tous les fichiers présents dans un dossier qui contient plusieurs centaines de fichiers.

    En Python, il est très simple de créer un script qui exécute ce type d’action. Néanmoins, nous allons utiliser notre cher assistant ChatGPT pour gagner du temps.

    Dans cet article, je vous expliquais pourquoi ChatGPT est presque votre meilleur ami. En effet, il va vous permettre de générer votre code en quelques secondes. Néanmoins, le résultat n’est jamais parfait. C’est là que vous intervenez !

    En effet, la conclusion de cet article montre que ChatGPT est comme un stagiaire personnel. Il va vous mâcher 80% du travail mais vous devrez être là pour terminer et corriger les éventuelles erreurs. Il est donc primordial que vous ayez des connaissances sur le sujet, au moins pour détecter et corriger les coquilles ou corriger le comportement du code.

    Etape 1 : le prompt avec ChatGPT

    Voici le prompt utilisé : « write for me a python script to loop over all the files in a given folder and add a suffix to its name. The folder path and the suffix will be given by the user ». J’ai préféré l’écrire en anglais mais ChatGPT fonctionne également en français.

    L’objectif initial de l’outil était simplement d’ajouter un suffixe. Sur quelques fichiers, cela peut être fait facilement à la main mais pour plusieurs centaines, l’automatisation est de mise. Voici le résultat donné par ChatGPT.

    import os
    
    def add_suffix_to_files(folder_path, suffix):
        try:
            # List all files in the given folder
            for filename in os.listdir(folder_path):
                file_path = os.path.join(folder_path, filename)
                
                # Check if it is a file (not a directory)
                if os.path.isfile(file_path):
                    # Extract the file extension
                    file_root, file_ext = os.path.splitext(filename)
                    
                    # Create a new file name by appending the suffix
                    new_filename = f"{file_root}{suffix}{file_ext}"
                    new_file_path = os.path.join(folder_path, new_filename)
                    
                    # Rename the file
                    os.rename(file_path, new_file_path)
                    print(f"Renamed file: {filename} -> {new_filename}")
        except Exception as e:
            print(f"An error occurred: {str(e)}")
    
    if __name__ == "__main__":
        # Get the folder path and suffix from the user
        folder_path = input("Enter the folder path: ")
        suffix = input("Enter the suffix: ")
        
        # Add suffix to all files in the folder
        add_suffix_to_files(folder_path, suffix)
    
    Python

    Le résultat est vraiment intéressant. Le code est fonctionnel, il n’y a pas d’erreur. En deux minutes, nous avons déjà un outil fonctionnel.

    Généralement, pour des applications simples comme celle-ci, notre ami ChatGPT est très efficace. Nous allons maintenant voir comment rajouter des fonctions à notre programme.

    Etape 2 : Ajouter des critères

    ChatGPT conserve l’historique de la conversation. Vous pouvez donc faire mention de ce qui a déjà été mentionné et l’outil IA fera le lien. Par exemple, pour ce cas concret, nous lui avons demandé de rajouter une option pour que ce soit un préfixe ou un suffixe ou les deux ! Voici le prompt utilisé : « add a new argument with prefix, suffix or both to modifiy the name ». Et voici le résultat :

    import os
    
    def modify_file_names(folder_path, prefix, suffix, action):
        try:
            # List all files in the given folder
            for filename in os.listdir(folder_path):
                file_path = os.path.join(folder_path, filename)
                
                # Check if it is a file (not a directory)
                if os.path.isfile(file_path):
                    # Extract the file extension
                    file_root, file_ext = os.path.splitext(filename)
                    
                    # Create a new file name based on the action
                    if action == "prefix":
                        new_filename = f"{prefix}{file_root}{file_ext}"
                    elif action == "suffix":
                        new_filename = f"{file_root}{suffix}{file_ext}"
                    elif action == "both":
                        new_filename = f"{prefix}{file_root}{suffix}{file_ext}"
                    else:
                        print("Invalid action. Choose from 'prefix', 'suffix', or 'both'.")
                        return
                    
                    # Rename the file
                    new_file_path = os.path.join(folder_path, new_filename)
                    os.rename(file_path, new_file_path)
                    print(f"Renamed file: {filename} -> {new_filename}")
        except Exception as e:
            print(f"An error occurred: {str(e)}")
    
    if __name__ == "__main__":
        # Get the folder path, prefix, suffix, and action from the user
        folder_path = input("Enter the folder path: ")
        prefix = input("Enter the prefix: ")
        suffix = input("Enter the suffix: ")
        action = input("Choose action ('prefix', 'suffix', or 'both'): ")
        
        # Modify file names in the folder
        modify_file_names(folder_path, prefix, suffix, action)
    
    Python

    A nouveau le code est fonctionnel. Un test rapide sur un dossier (dont vous aurez fait une copie bien sûr) vous montrera la rapidité d’exécution. Néanmoins, si ce petit applicatif est destiné à d’autres utilisateurs, il n’est pas complètement fonctionnel. Je pense notamment au fait de gérer la demande de préfixe ou suffixe suivant l’action à réaliser. Ainsi, on ne demande d’informations inutiles.

    De plus, il serait également bien de mettre un contrôle sur le chemin du dossier dans le but de vérifier que celui-ci existe bien. Si l’utilisateur s’est trompé, le programme pourra demander une nouvelle fois la réponse. Dans le cas où l’utilisateur se tromperait encore, le programmera s’arrêtera. Je rappelle, ceci est juste un exemple.

    Voici les prompts utilisées :

    • add a control to check the answer for action. if the answer is not in prefix, suffix or both, ask again just once
    • add a control if the path exists otherwise print an error message

    Avec ces prompts successifs, votre assistant personnel va reprendre le code généré et le modifier en fonction de vos demandes. Et tout ça, en quelques secondes !

    import os
    import sys
    
    def modify_file_names(folder_path, prefix, suffix, action):
        try:
            # List all files in the given folder
            for filename in os.listdir(folder_path):
                file_path = os.path.join(folder_path, filename)
                
                # Check if it is a file (not a directory)
                if os.path.isfile(file_path):
                    # Extract the file extension
                    file_root, file_ext = os.path.splitext(filename)
                    
                    # Create a new file name based on the action
                    if action == "prefix":
                        new_filename = f"{prefix}{file_root}{file_ext}"
                    elif action == "suffix":
                        new_filename = f"{file_root}{suffix}{file_ext}"
                    elif action == "both":
                        new_filename = f"{prefix}{file_root}{suffix}{file_ext}"
                    else:
                        print("Invalid action. Choose from 'prefix', 'suffix', or 'both'.")
                        return
                    
                    # Rename the file
                    new_file_path = os.path.join(folder_path, new_filename)
                    os.rename(file_path, new_file_path)
                    print(f"Renamed file: {filename} -> {new_filename}")
        except Exception as e:
            print(f"An error occurred: {str(e)}")
    
    if __name__ == "__main__":
        folder_path = input("Enter the folder path: ")
        
        # Check if the path exists
        if not os.path.exists(folder_path) or not os.path.isdir(folder_path):
            print("The provided path does not exist or is not a directory. Exiting...")
            folder_path = input("Press Enter to exit.")
            sys.exit()
        
        valid_actions = ["prefix", "suffix", "both"]
        action = input("Choose action ('prefix', 'suffix', or 'both'): ")
        
        # Check if the action is valid and ask again if not
        if action not in valid_actions:
            print(f"Invalid action '{action}'. Please choose a valid action.")
            action = input("Choose action ('prefix', 'suffix', or 'both'): ")
            if action not in valid_actions:
                print("Invalid action again. Exiting...")
                action = input("Press Enter to exit.")
                sys.exit()
    
        # Initialize prefix and suffix
        prefix = ""
        suffix = ""
        
        if action == "prefix":
            prefix = input("Enter the prefix: ")
        elif action == "suffix":
            suffix = input("Enter the suffix: ")
        elif action == "both":
            prefix = input("Enter the prefix: ")
            suffix = input("Enter the suffix: ")
        
        modify_file_names(folder_path, prefix, suffix, action)
    Python

    Pour conclure

    J’ai voulu vous montrer dans cet article comment utiliser ChatGPT pour vous faire gagner du temps en vous réalisant 80% du travail. En effet, en quelques secondes, nous avons pu créer la structure globale de l’outil. Moyennant quelques ajustements en rajoutant quelques critères notre petit outil est prêt à fonctionner.

    Pour des tâches simples, cet outil IA est vraiment extraordinaire. Si vous arrivez à bien décrire votre problème, le résultat sera satisfaisant. Toute la difficulté réside dans le fait de décrire ce que vous voulez.

    Cependant, pour des projets plus ambitieux, vous resterez maître de l’architecture de votre programme. A vous alors de bien définir les flux de paramètres, les besoins en fonction, … dans le but de décomposer votre problème en tâches simples. Ensuite, vous pourrez demander à votre stagiaire préféré d’écrire les lignes de codes pour vous.

    Je tiens tout de même à préciser que même si ChatGPT nous donne les moyens d’écrire énormément de code, vous devrez avoir les connaissances pour vérifier et valider ce qui a été fait. Dans certains cas, vous voudrez également rajouter quelque subtilités à votre code, il est donc primordial de savoir ce que vous faites dans le langage utilisé.

    A bientôt,
    Benjamin

    Si vous avez aimé l'article, vous êtes libres de le partager ! :)

    Laisser un commentaire