Débutant
🧠 Fondamentaux
10 XP
0 personnes ont réussi
Charger des documents texte
Ton assistant FAQ ne peut pas repondre a partir de rien. Il lui faut une base de connaissances : les documents de ta boite. Procedures internes, FAQ existante, reglement interieur, notes de service... Tout ce qu'un employe pourrait vouloir consulter.
Dans cette etape, tu vas ecrire la fonction qui charge ces documents depuis un dossier. En vrai projet, tu auras un dossier "docs/" avec des fichiers .txt et .md dedans. Ta fonction doit les lire et retourner une liste structuree.
Pour chaque document, on veut garder trois infos : contenu : le texte du fichier source : le nom du fichier (pour citer ses sources plus tard) nb_caracteres : la longueur du texte (utile pour estimer les tokens)
Voici comment lire un fichier en Python et lister un dossier :
import os
for nom_fichier in os.listdir(dossier): if nom_fichier.endswith('.txt'): chemin = os.path.join(dossier, nom_fichier) with open(chemin, 'r', encoding='utf-8') as f: contenu = f.read()
Ecris une fonction charger_documents(dossier) qui prend un chemin de dossier, lit tous les fichiers .txt et .md, et renvoie une liste de dictionnaires avec les cles "contenu", "source" et "nb_caracteres".
Pour que les tests marchent dans le sandbox (sans acces au systeme de fichiers), ecris aussi une fonction charger_documents_depuis_liste(documents) qui prend directement une liste de tuples (nom_fichier, contenu) et renvoie le meme format.
Exemple :
docs = charger_documents_depuis_liste([ ("faq.txt", "Comment poser un conge ? Allez sur l'intranet."), ("reglement.md", "Article 1 : Horaires de travail...") ]) renvoie [ {"contenu": "Comment poser un conge ? Allez sur l'intranet.", "source": "faq.txt", "nb_caracteres": 46}, {"contenu": "Article 1 : Horaires de travail...", "source": "reglement.md", "nb_caracteres": 34} ]
Tests (4/5)
Format de retour correct
docs = charger_documents_depuis_liste([("test.txt", "Contenu de test")])
assert isinstance(docs, list), "La fonction doit retourner une liste"
assert len(docs) == 1
doc = docs[0]
assert "contenu" in doc, "Chaque document doit avoir une cle 'contenu'"
assert "source" in doc, "Chaque document doit avoir une cle 'source'"
assert "nb_caracteres" in doc, "Chaque document doit avoir une cle 'nb_caracteres'"