La meilleure façon de développer tes compétences en matière d’IA, c’est de construire des projets de A à Z. Cependant, il peut parfois être difficile de savoir quoi construire lorsqu’on débute. Je partage ici 5 projets d’IA que tu peux construire rapidement à trois niveaux de “sophistication”. Je décris les étapes et les bibliothèques Python nécessaires à la mise en place de chacune de ces 5 idées.
La première erreur commise par les débutants lorsqu’ils réfléchissent à des idées de projets est de commencer par la question suivante : « Comment puis-je utiliser cette nouvelle technologie ? ».
Bien que cela puisse être une bonne façon d’apprendre un nouvel outil, il y a une meilleure façon.
Les bonnes idées de projet commencent par la question suivante : « Quel problème puis-je résoudre ? ». Cela permet non seulement de raconter une belle histoire à un employeur potentiel, mais c’est aussi en résolvant des problèmes que l’on transforme des compétences techniques en valeur ajoutée.
Les projets suivants adoptent tous cette approche axée sur la résolution de problèmes. Tu peux prendre ces idées et les mettre en œuvre directement ou (mieux encore) t’en inspirer pour résoudre un problème auquel tu es personnellement confronté.
Projet #1 – Optimisation du CV (débutant)
L’adaptation de ton CV aux différentes descriptions de poste est un aspect efficace mais chronophage de la candidature à un emploi. Alors que l’automatisation de cette tâche aurait été un projet avancé il y a quelques années, avec les grands modèles de langage (LLM) d’aujourd’hui, elle est aussi simple qu’un appel d’API.
Voici une description étape par étape de la mise en œuvre d’une telle automatisation :
- Créer une version markdown de ton CV (Note : ChatGPT peut le faire pour toi !).
- Expérimenter différents modèles de prompts qui prennent ton CV en markdown et une description de poste et produisent un nouveau CV en markdown.
- Utiliser l’API Python d’OpenAI pour demander à GPT-4o-mini de réécrire ton CV de manière dynamique.
- Convertir le fichier markdown en HTML puis en PDF avec les bibliothèques markdown et pdfkit, respectivement.
Bibliothèques à utiliser : openai, markdown, pdfkit
Bien que nous puissions facilement utiliser ChatGPT pour cela, l’avantage d’implémenter ceci avec Python c’est que nous pouvons facilement faire évoluer le processus.
Voici un code de départ pour l’étape 3 :
import openai openai.api_key = "ta clé api openai" # prompt (en supposant que md_resume et job_desciption ont été définis) prompt = f""" J'ai un CV formaté en Markdown et une description de poste. Adapte mon CV pour qu'il corresponde mieux aux exigences du poste tout en ayant un ton professionnel. Adapte mes compétences, mes expériences et ce que j'ai réalisé pour mettre en évidence les points les plus pertinents pour le poste. Veille à ce que mon CV reflète toujours mes qualifications et mes points forts mais qu'il mette l'accent sur les compétences et les expériences qui correspondent à la description du poste. ### Voici mon CV en Markdown : {md_resume} ### Voici la description du poste : {job_desciption} Modifie le CV de la manière suivante : - Utilise les mots-clés et les phrases de la description du poste. - Ajuste les puces sous chaque rôle pour mettre en valeur les compétences et les réalisations pertinentes. - Veille à ce que mes expériences soient présentées d'une manière qui corresponde aux qualifications requises. - Maintiens la clarté, la concision et le professionnalisme tout au long du texte. Retourne le CV mis à jour au format Markdown. """ # faire un appel api response = openai.chat.completions.create( model="gpt-4o-mini", messages=[ {"role": "system", "content": "tu es un assistant utile."}, {"role": "user", "content": prompt} ], temperature = 0.25 ) # extraire la réponse resume = response.choices[0].message.content
Remarque : ChatGPT est très utile pour écrire de courts extraits de code (et des prompts) comme celui-ci. Si tu es bloqué, essaye-le pour l’étape 4.
Projet #2 – Résumé de vidéos YouTube (débutant)
Bien que j’adore ajouter des vidéos techniques à ma liste de lecture YouTube (à regarder plus tard), il peut s’écouler un certain temps avant que je ne les regarde (parfois jamais ^^). Un projet qui peut aider à cela est un outil qui regarde les vidéos pour moi et génère des résumés concis avec les points clés.
Voici une façon de procéder :
- Extraire l’ID de la vidéo YouTube à partir du lien vidéo à l’aide d’une expression regex.
- Utiliser l’ID de la vidéo pour extraire la transcription à l’aide de youtube-transcript-api.
- Expérimenter différents prompts ChatGPT qui résument efficacement la transcription.
- Utiliser l’API Python d’OpenAI pour automatiser le processus.
Bibliothèques à utiliser : openai, youtube-transcript-api
D’un point de vue technique, ce projet est très similaire au premier. Une différence clé, cependant, c’est que nous aurons besoin d’extraire automatiquement les transcriptions des vidéos, que nous pourrons introduire dans le LLM.
Voici un code de départ pour cela :
import re from youtube_transcript_api import YouTubeTranscriptApi youtube_url = "lien de la vidéo ici" # extraire l'ID d'une vidéo avec une expression regex video_id_regex = r'(?:v=|\/)([0-9A-Za-z_-]{11}).*' match = re.search(video_id_regex, youtube_url) if match: return match.group(1) else: return None # extraire la transcription text_list = [transcript[i]['text'] for i in range(len(transcript))] transcript_text = '\n'.join(text_list)
Projet #3 – Organiser automatiquement les PDF (Intermédiaire)
Ma liste de lecture « À voir plus tard » n’est pas le seul endroit où j’accumule des informations techniques d’apprentissage. Mon bureau en est un autre : il est truffé de documents à lire. Comme la lecture de ces documents prendrait (beaucoup) de temps, voyons comment l’IA peut nous aider.
On pourrait créer un outil qui analyserait le contenu de chaque PDF sur mon bureau et les classerait dans des dossiers en fonction des sujets traités. Le Text Embeddings peut traduire (ou convertir) chaque document en une représentation vectorielle dense, à partir de laquelle les articles similaires peuvent être regroupés à l’aide d’un algorithme traditionnel de Machine Learning tel que l’algo K-Means.
Voici une analyse plus détaillée :
- Lire le résumé de chaque article de recherche à l’aide de PyMuPDF.
- Utiliser la bibliothèque sentence-transformers pour traduire les résumés en text embeddings et les stocker dans un DataFrame Pandas.
- Utiliser ton algorithme de clustering préféré de sklearn pour regrouper les embeddings en fonction de leur similarité.
- Créer des dossiers pour chaque groupe et déplacez les fichiers dans le dossier approprié.
Bibliothèques à utiliser : PyMuPDF, sentence_transformers, pandas, sklearn
L’étape clé de ce projet est la génération des text embeddings. Voici un extrait de code pour le faire avec sentence_transformers :
from sentence_transformers import SentenceTransformer # charger le modèle embedding model = SentenceTransformer("all-MiniLM-L6-v2") # stocker les résumés dans une liste abstract_list = ["abstract 1", "abstract 2"] # calculer les embeddings embeddings = model.encode(abstract_list)
Projet #4 – Recherche multimodale (intermédiaire)
Imaginons que nous ayons entre nos mains des rapport techniques. L’un des défis que pose la recherche dans ces rapports c’est que les informations clés sont souvent présentées sous forme de graphiques et de figures plutôt que sous forme de texte.
L’une des façons d’intégrer ces informations visuelles dans le processus de recherche consiste à utiliser un modèle d’embedding multimodale pour représenter le texte et les images dans un espace partagé.
En voici un aperçu :
- À partir d’un PDF, découper-le en sections et extraire les images à l’aide de PyMuPDF.
- Utiliser un modèle d’embedding multimodale (par exemple nomic-ai/nomic-embed-text-v1.5) pour représenter les morceaux et les images sous forme de vecteurs denses et les stocker dans un DataFrame.
- Répéter l’opération pour tous les PDF de la base de connaissances.
- Étant donné une requête de l’utilisateur, la faire passer par le même modèle embedding que celui utilisé pour la base de connaissances.
- Calculer le score de similarité en cosinus entre l’intégration de la requête et chaque élément de la base de connaissances.
- Retourner les k premiers résultats
Bibliothèques à utiliser : PyMuPDF, transformers, pandas, sklearn
La partie la plus importante de ce projet est la façon dont les PDF sont découpés. La manière la plus simple serait d’utiliser un nombre de caractères fixe avec un certain chevauchement entre les morceaux. Il est également utile de capturer des métadonnées telles que le nom du fichier et le numéro de page pour chaque morceau.
Voici un code de base pour le faire (si tu es bloqué, essaye de lui demander d’extraire les images) :
import fitz # PyMuPDF def extract_text_chunks(pdf_path, chunk_size, overlap_size): # Ouvrir le fichier PDF pdf_document = fitz.open(pdf_path) chunks = [] # Parcourir chaque page du PDF for page_num in range(len(pdf_document)): page = pdf_document[page_num] page_text = page.get_text() # Découper le texte de la page actuelle en morceaux qui se chevauchent start = 0 while start < len(page_text): end = start + chunk_size chunk = page_text[start:end] # Stocker le numéro de page avec le chunk (morceau) chunks.append((page_num + 1, chunk)) # Move to the next chunk with the overlap start += chunk_size - overlap_size return chunks # Paramètres pour l'extraction pdf_path = "ton_fichier.pdf" chunk_size = 1000 # Taille de chaque morceau de texte en caractères overlap_size = 200 # Taille du chevauchement en caractères text_chunks = extract_text_chunks_with_page_numbers(pdf_path, chunk_size, overlap_size) # Afficher les morceaux avec les numéros de page for i, (page_number, chunk) in enumerate(text_chunks): print(f"Chunk {i + 1} (Page {page_number}):\n{chunk}\n{'-' * 50}")
Projet #5 – Base de connaissances Questions/Réponses (avancé)
Le projet le plus souvent demandé est, de loin, un système de réponse aux questions sur les documents. En nous appuyant sur le projet précédent, nous pouvons le mettre en œuvre de manière simple.
Si nous avons déjà découpé et stocké nos documents dans un DataFrame, nous pouvons convertir l’outil de recherche multimodale en un système RAG multimodal.
Voici les étapes à suivre :
- Effectuer une recherche dans la base de connaissances (comme celle créée dans le projet #4.
- Combiner la requête de l’utilisateur avec les k premiers résultats de la recherche et les transmettre à un modèle multimodal.
- Créer une interface utilisateur Gradio simple pour le système de Questions/Réponses.
Bibliothèques à utiliser : PyMuPDF, transformers, pandas, sklearn, together/openai, Gradio
Note : Llama 3.2 Vision 11B (et est gratuit jusqu’en 2025 via l’API de Together AI.
Ce projet combine essentiellement les projets #2 et #4. Cependant, il inclut le composant essentiel d’une interface utilisateur. Pour cela, nous pouvons utiliser un outil de tableau de bord comme Gradio, qui nous permet de créer une interface utilisateur de chat avec quelques lignes de code.
Voici un exemple de morceau de code adapté de la documentation de Gradio.
import gradio as gr import time def generate_response(message, history): """ Ton code pour générer une réponse """ return response demo = gr.ChatInterface( fn=generate_response, examples=[{"text": "Hello", "files": []}], title="Echo Bot", multimodal=True) demo.launch()
Quelle est la prochaine étape ?
Grâce à des outils comme ChatGPT et Cursor, il n’a jamais été aussi facile de créer rapidement des projets d’IA. Des choses qui me bloquaient pendant des heures (voire des jours) il y a quelques années peuvent désormais être résolues en quelques minutes grâce à des assistants de codage avancés.
Mon dernier conseil est d’utiliser ces outils pour apprendre plus vite et de faire preuve d’audace dans le choix de tes projets.