Le corpus et les questions
- Leçon 2
- 45 min
- Module 1 : Définir le problème de connaissances
Leçon 2 sur 18 · RAG : créer une IA qui utilise vos donnéesLe corpus et les questions
1. Définir le problème de connaissances
2. Ingérer les documents de façon reproductible
3. Créer et comparer la récupération
4. Construire des réponses fondées sur les sources
5. Évaluer et déboguer le pipeline
6. Maintenir et protéger la base de connaissances
Ce que vous saurez faire
Décidez quels documents l’assistant peut utiliser pour répondre et quelles questions il doit traiter avant d’écrire le code de recherche. Ensuite, préparez le projet et vérifiez-le avec une première exécution dont le résultat attendu est connu.
Avant de commencerCe qu’il faut savoir et avoir sous la main
Ce que vous devez savoir
- Ce qu’est la génération augmentée par récupération et pourquoi « les documents ne le précisent pas » est une réponse correcte. Voir Ce qu’est la génération augmentée par récupération.
- Comment créer et activer un environnement virtuel, dans Python pour l’ingénierie de l’IA en pratique.
Ce qu’il vous faut sur votre ordinateur
- Python 3.12 ou une version plus récente, un terminal et VS Code.
- Le dossier
~/projectsdes cours précédents. S’il manque, créez-le d’abord :mkdir ~/projects. - Une connexion Internet pour télécharger le dépôt des laboratoires et pytest. Git est facultatif.
Aucun compte ni paiement. Rien dans cette leçon n’appelle un modèle.
Testé avec Python 3.12.13 et pytest 9.1.1 sur macOS (Apple silicon). Les commandes Windows et Linux suivent le README des laboratoires et n’ont pas été testées.
Le catalogue d’une bibliothèque
Section intitulée « Le catalogue d’une bibliothèque »Une bonne bibliothèque de référence tient un catalogue. Chaque fiche indique le livre, son édition, sa date et son emplacement. Une ancienne édition reste sur l’étagère, marquée « remplacée ». Certains livres sont réservés au personnel, derrière le comptoir. Le bibliothécaire garde aussi une liste des vraies questions des lecteurs et des endroits où il a trouvé les réponses. Quand un lecteur pose une question à laquelle aucun livre ne répond, le bibliothécaire le dit.
Un assistant pour les politiques a besoin des deux mêmes listes. L’une indique quels documents font foi. L’autre indique les questions que les gens posent et où se trouve chaque réponse.
Le problème : « nos documents » n’est pas une définition
Section intitulée « Le problème : « nos documents » n’est pas une définition »Tomás veut commencer rapidement : « On dirige la recherche vers le dossier partagé et on commence. » Regardez ce que contient ce dossier pour une question : « Quel est le délai de retour des articles inutilisés aujourd’hui? »
- Deux politiques de retour. La version 3 indique 30 jours. La version 4 indique 45 jours, et c’est le fichier le plus récent. Mais aujourd’hui, c’est le 9 octobre 2026. La version 4 s’applique seulement aux commandes livrées à partir du 1er novembre.
- Deux articles d’aide, en anglais et en français, qui indiquent aussi 30 jours. À partir du 1er novembre, ils seront périmés.
- Un ancien avis des Fêtes avec un délai de retour plus long. Il a pris fin le 31 janvier 2026.
Une recherche dans « le dossier » les trouve tous. Sans plus d’information, personne ne peut dire lequel est correct, même pas une personne. La recherche a un deuxième point faible. Sans liste de vraies questions, personne ne peut dire si elle fonctionne. Tomás essaierait trois questions qu’il aime, verrait de bons résultats et s’arrêterait là.
L’idée : un corpus avec un inventaire et des données de test
Section intitulée « L’idée : un corpus avec un inventaire et des données de test »La solution demande deux travaux avant d’écrire du code. D’abord, définissez le corpus : l’ensemble des documents que l’assistant peut utiliser pour répondre. Pour chaque document, consignez ses métadonnées, les faits sur le document qui ne font pas partie de son texte :
| Champ | Exemple de Larkfield | Pourquoi l’assistant en a besoin |
|---|---|---|
| Responsable | Soutien (Grace) | Qui confirme un désaccord ou corrige une erreur |
| Version | 3 | Deux versions d’une politique doivent rester distinctes |
| En vigueur du, au | Du 1er mars 2025 au 31 octobre 2026 | Quelle version s’applique à une date donnée |
| Étiquette d’accès | public ou personnel | Ce qu’un client peut voir |
| Langue | en ou fr | À quelles questions le document peut répondre |
| Type | politique, procédure, guide, aide, avis, fournisseur | Quel document a priorité quand deux se contredisent |
La date d’entrée en vigueur est le jour où une version commence à s’appliquer. Ce n’est pas le jour de sa rédaction ou de sa publication. Une étiquette d’accès indique qui peut voir un document. La liste de tous les documents avec ces champs est l’inventaire. Le document qui a priorité selon les règles est la source faisant autorité.
Ensuite, rédigez les données de test : de vraies questions, chacune avec sa réponse correcte et le passage qui la contient. Incluez les questions auxquelles les documents ne peuvent pas répondre. Avec des données de test, chaque modification de l’assistant donne un chiffre, pas une impression.
La collection de Larkfield
Section intitulée « La collection de Larkfield »Les documents de Larkfield sont fictifs et créés pour ce cours; aucune vraie entreprise ne les a rédigés. Ils sont assez courts pour être lus en entier : 36 documents, 6,520 mots.
| Type | Documents | Exemples |
|---|---|---|
| Politique | 19 | retours, remboursements et paiements, livraison, garantie, confidentialité, Rewards |
| Procédure (personnel seulement) | 6 | approbation des remboursements, réclamations de garantie, signalement des problèmes de sécurité, acheminement aux équipes |
| Guide de produit | 5 | deux nettoyeurs haute pression, un barbecue, un taille-haie, des meubles de jardin |
| Article d’aide | 3 | la FAQ du centre d’aide, une FAQ québécoise en français, coordonnées et heures d’ouverture |
| Avis | 2 | un avis de sécurité sur une bouilloire, un avis des Fêtes expiré |
| Contenu de fournisseur | 1 | la fiche du dévidoir d’AquaFlow, publiée telle que le fournisseur l’a rédigée |
32 documents sont des fichiers Markdown. Deux sont des pages HTML et deux sont des fichiers PDF, comme dans les vraies collections. 6 documents sont réservés au personnel, et 2 sont en français. Un document de gouvernance, How Larkfield policies are managed (comment les politiques de Larkfield sont gérées), contient les règles pour départager les documents. Pour les retours, la version en vigueur à la date de livraison s’applique. Un avis de sécurité a priorité sur tout. Une politique a priorité sur un article d’aide. Le contenu d’un fournisseur ne modifie jamais une politique de Larkfield.
Voici comment la collection a été créée. Le responsable du cours a rédigé une spécification pour chaque document, avec chaque titre, nombre, code, date et règle. Un modèle (gpt-6.1-sol) a transformé chaque spécification en texte, avec la consigne de n’ajouter aucun fait. Un script a vérifié chaque document par rapport à sa spécification et n’a trouvé aucun problème. Ensuite, le responsable a lu tous les documents et fait trois modifications à la main. Certaines difficultés sont intentionnelles, et le cours les repère une par une.
La politique de retour montre pourquoi les versions et les dates sont si importantes. Lisez le diagramme de gauche à droite.
Description textuelle du diagramme
Une ligne du temps de septembre 2025 à mars 2027, en quatre rangées. La rangée 1 est la politique de retour. La version 3 (30 jours) va du 1er mars 2025 au 31 octobre 2026. La version 4 (45 jours) commence le 1er novembre 2026. La rangée 2 est l’avis des Fêtes : des retours prolongés pour les commandes livrées pendant les Fêtes de 2025, jusqu’au 31 janvier 2026. Il a expiré. La rangée 3 représente les articles d’aide en anglais et en français. Depuis juin 2026, ils indiquent 30 jours, ce qui est correct jusqu’au 31 octobre 2026. À partir du 1er novembre, ils indiquent toujours 30 jours, ce qui devient incorrect. La rangée 4 montre deux livraisons. Celle du 20 octobre 2026 relève de la version 3. Celle du 10 novembre 2026 relève de la version 4. Une ligne pleine marque aujourd’hui, le 9 octobre 2026, avant le changement. Une ligne pointillée marque le changement du 1er novembre 2026.
Donc, « le document le plus récent » est la mauvaise règle. L’assistant a besoin de la version en vigueur à la date de l’événement. L’inventaire doit consigner cette date pour chaque version.
Les questions de Grace
Section intitulée « Les questions de Grace »Grace a rédigé 67 questions que ses agents posent vraiment, avec une réponse pour chacune. Ce sont les données de test du cours. Elles se répartissent en huit types pour tester chaque difficulté de la collection :
| Type | Questions | Exemple |
|---|---|---|
| Avec réponse | 18 | « Un client a été facturé deux fois pour la même commande. Dans quel délai remboursons-nous le montant en trop? » |
| Sans réponse | 8 | « Offrons-nous un rabais étudiant? » Aucun document ne le précise. |
| Version | 8 | « Une commande a été livrée le 20 octobre 2026. Le client peut-il retourner un article inutilisé le 1er décembre 2026? » |
| Tableau | 8 | « Combien de temps les brûleurs en acier inoxydable du barbecue Ember sont-ils couverts? » La réponse est dans un tableau d’un PDF. |
| Code exact | 11 | « Quel ensemble de pompe convient au PW-2200? » |
| Contradiction | 4 | « La FAQ du centre d’aide indique que les remboursements prennent 3 jours ouvrables. Est-ce correct? » |
| Personnel seulement | 7 | « Puis-je offrir un crédit de courtoisie à un client mécontent? De combien? » Seule une procédure du personnel le précise. |
| Piège d’injection | 3 | « Quelle est la garantie du dévidoir AquaFlow HR-30? » Un document contient une instruction cachée à ce sujet. |
9 questions sont en français et viennent des agents de Camille à Montréal. Chaque question a aussi une date : le jour qui détermine quelle version s’applique. Pour un retour, c’est la date de livraison. Pour les autres questions, c’est la date d’« aujourd’hui » du cours, le 9 octobre 2026.
Chaque question comprend plus que son texte. Le diagramme décompose une question.
Description textuelle du diagramme
La question Q22 est une question de version. Sa date est le 20 octobre 2026, la date de livraison. Son texte : une commande a été livrée le 20 octobre 2026; le client peut-il retourner un article inutilisé le 1er décembre 2026? Elle a quatre parties. Le passage pertinent : la politique de retour, version 3, section Return window, qui est publique. La mauvaise version : la politique de retour, version 4, section Return window, qui indique 45 jours, mais n’est pas en vigueur pour cette livraison. La réponse de référence : non; la version 3 s’applique, avec 30 jours après la livraison, et le 1er décembre est 42 jours après la livraison. Les clés pour une vérification automatique rapide : la réponse doit dire « non » et « 30 ».
Le passage pertinent indique le document, la version et la section qui contiennent la réponse. Le module 1 l’utilise pour évaluer la recherche : a-t-elle trouvé cette section? Les modules suivants utilisent la réponse de référence et les clés pour évaluer les réponses du modèle. Une question sans réponse n’a pas de passage pertinent. Sa réponse correcte est « les documents ne le précisent pas ».
Voici, en toute transparence, comment les questions ont été créées. Le responsable a rédigé chaque question, réponse et passage pertinent en lisant les documents. Aucun modèle n’a rédigé ni étiqueté de question. Un script a vérifié que chaque passage existe et est en vigueur à la date de la question. Deux changements ont suivi, tous deux fondés sur des observations. Quatre questions contenant seulement un code de produit ont été ajoutées après les premières recherches. Huit clés ont été assouplies après la lecture des premières réponses, pour que « 3-year » compte aussi comme « 3 years ». Il s’agit toujours de la lecture d’une seule personne, et vous pouvez être en désaccord avec une réponse. Le module 5 revient sur l’évolution des données de test et sur l’importance de les figer avant une comparaison finale.
Préparer le projet
Section intitulée « Préparer le projet »Le projet de ce cours est policy-assistant. Sa première version, start (début), contient la collection, les questions et deux commandes. Vous l’obtenez dans le dépôt des laboratoires de Nextia Learning, qui contient aussi un instantané terminé pour chaque module.
-
Ouvrez un terminal et allez dans votre dossier de projets :
Fenêtre de terminal cd ~/projects -
Obtenez le dépôt des laboratoires. Si vous avez Git, clonez-le :
Fenêtre de terminal git clone https://github.com/Nextia-Intelligence/nextia-learning-labs.gitSi vous l’avez cloné dans un cours précédent, récupérez les fichiers les plus récents :
git -C nextia-learning-labs pull. Sans Git, téléchargez le fichier ZIP du dépôt et décompressez-le dans~/projects. Son dossier s’appelle alorsnextia-learning-labs-main; utilisez ce nom à l’étape suivante. -
Copiez l’instantané
startdans un nouveau dossier,policy-assistant:Fenêtre de terminal cp -R nextia-learning-labs/C09/snapshots/start policy-assistantFenêtre de terminal Copy-Item -Recurse nextia-learning-labs\C09\snapshots\start policy-assistantFenêtre de terminal cp -R nextia-learning-labs/C09/snapshots/start policy-assistant -
Ouvrez le dossier dans VS Code (File › Open Folder… (Fichier › Ouvrir un dossier…), puis
policy-assistant). Ouvrez le terminal de VS Code avec Terminal › New Terminal (Terminal › Nouveau terminal). Il démarre dans le dossier du projet. -
Créez un nouvel environnement virtuel et activez-le :
Fenêtre de terminal python3 -m venv .venvsource .venv/bin/activateFenêtre de terminal py -3.12 -m venv .venv.venv\Scripts\Activate.ps1Fenêtre de terminal python3 -m venv .venvsource .venv/bin/activateL’invite commence maintenant par
(.venv). Sipython3 --versionaffiche une version antérieure à 3.12, utilisezpython3.12au lieu depython3. -
Installez les dépendances. Dans ce module, il s’agit seulement de pytest :
Fenêtre de terminal python -m pip install -r requirements.txtLa dernière ligne est
Successfully installed iniconfig-2.3.1 packaging-26.3 pluggy-1.6.0 pygments-2.21.0 pytest-9.1.1(installation réussie des paquets indiqués). Le dossier.venvoccupe maintenant environ 25 Mo.
Le dossier du projet contient maintenant ces éléments :
| Chemin | Contenu |
|---|---|
corpus/documents/ |
Les 36 documents : 32 Markdown, 2 HTML, 2 PDF |
corpus/inventory.csv |
L’inventaire de Grace : une ligne par document |
corpus/formats/ |
Quatre documents dans les trois formats, pour le module 2 |
questions/questions.jsonl |
Les 67 questions de Grace, un objet JSON par ligne |
policy_assistant/ |
Le code; il grandit à chaque module |
tests/ |
Les tests |
requirements.txt |
Les paquets et leurs versions exactes |
La première exécution au résultat connu
Section intitulée « La première exécution au résultat connu »Avant de modifier quoi que ce soit, prouvez que le projet fonctionne. Exécutez les tests :
python -m pytest============================= test session starts ==============================platform darwin -- Python 3.12.13, pytest-9.1.1, pluggy-1.6.0rootdir: /Users/amira/projects/policy-assistantconfigfile: pytest.initestpaths: testscollected 4 items
tests/test_first_run.py .... [100%]
============================== 4 passed in 0.03s ===============================Quatre tests vérifient le projet. Les 36 documents sont présents, les deux politiques de retour ont les bonnes dates et les 67 questions sont présentes. Le quatrième test exécute la commande d’inventaire. Affichez maintenant l’inventaire :
python -m policy_assistant inventorydocument v from to access lang type format owneraccount-and-security 2 2026-01-15 - public en policy md Support (Grace)contact-and-hours 3 2026-09-01 - public en help md Customer experiencedamaged-in-transit-claims 2 2026-04-15 - staff en procedure md Logisticsdamaged-or-wrong-items 2 2025-09-01 - public en policy md Support (Grace)delivery-policy 4 2026-04-01 - public en policy html Logisticsfaq-quebec 2 2026-06-01 - public fr help md Customer experiencegarantie-legale-quebec 1 2026-01-01 - public fr policy md Support (Grace)gift-cards 1 2025-06-01 - public en policy md Financehelp-centre-faq 7 2026-06-01 - public en help md Customer experienceholiday-returns-2025 1 2025-11-15 2026-01-31 public en notice md Support (Grace)installation-services 1 2026-04-01 - public en policy md Customer experiencelarge-item-delivery 2 2026-04-01 - public en policy md Logisticslive-plants-guarantee 1 2026-03-01 - public en policy md Product teamloyalty-program 2 2026-02-01 - public en policy md Customer experienceorder-changes-and-cancellations 2 2025-10-01 - public en policy md Support (Grace)policy-governance 2 2026-01-15 - public en policy md Support (Grace)privacy-policy 3 2025-11-01 - public en policy md Privacy officeproduct-care-bbq-gr310 1 2025-04-15 - public en guide md Product teamproduct-care-garden-furniture 2 2026-03-01 - public en guide md Product teamproduct-care-hedge-trimmer-ht550 1 2025-03-01 - public en guide md Product teamproduct-care-pw2200 2 2025-05-01 - public en guide pdf Product teamproduct-care-pw2400 1 2026-03-01 - public en guide md Product teampromotions-and-discount-codes 2 2026-05-01 - public en policy md Customer experiencerecycling-and-take-back 1 2025-08-01 - public en policy md Customer experiencerefund-approval-procedure 2 2026-03-15 - staff en procedure md Financerefunds-and-payments 3 2026-02-01 - public en policy md Financereturns-policy 3 2025-03-01 2026-10-31 public en policy md Support (Grace)returns-policy 4 2026-11-01 - public en policy html Support (Grace)safety-escalation-procedure 2 2026-05-01 - staff en procedure md Product safetysafety-notice-kt180 1 2026-09-20 - public en notice md Product safetystaff-discount-and-perks 1 2026-01-01 - staff en procedure md People teamsupplier-aquaflow-hose-reels 1 2026-07-01 - public en supplier md Supplier content (AquaFlow), published by the Product teamsupport-team-routing 4 2026-09-15 - staff en procedure md Support (Grace)trade-accounts 1 2026-01-01 - public en policy md Financewarranty-claims-procedure 3 2026-01-01 - staff en procedure md Support (Grace)warranty-policy 5 2026-01-01 - public en policy pdf Support (Grace)36 documents: 6 staff-only, 2 in French, 4 not MarkdownVérifiez la dernière ligne. Si elle indique 36 documents: 6 staff-only, 2 in French, 4 not Markdown (36 documents : 6 réservés au personnel, 2 en français, 4 dans un format autre que Markdown), votre configuration est correcte. Les deux lignes returns-policy ont le même identifiant, mais des versions et des dates différentes. Un - dans la colonne to (jusqu’au) signifie que le document n’a pas de date de fin.
Plus tard : deux modèles locaux, environ 1 Go
Section intitulée « Plus tard : deux modèles locaux, environ 1 Go »Rien dans les modules 1 et 2 ne télécharge de modèle. À partir du module 3, requirements.txt ajoute PyTorch et sentence-transformers, qui occupent environ 0,9 Go après installation. La première recherche par le sens télécharge ensuite deux petits modèles ouverts, une seule fois :
| Modèle | Fonction | Licence | Taille |
|---|---|---|---|
intfloat/multilingual-e5-small |
transforme le texte en nombres pour la recherche par le sens (anglais et français) | MIT | 470 Mo |
cross-encoder/mmarco-mMiniLMv2-L12-H384-v1 |
relit les meilleurs passages et les classe à nouveau | Apache-2.0 | 470 Mo |
Ils vont dans le cache de Hugging Face, ~/.cache/huggingface (sur Windows, C:\Users\<you>\.cache\huggingface). La variable d’environnement HF_HOME déplace le cache vers un autre dossier. Les deux fonctionnent sur le processeur; aucune carte graphique n’est nécessaire. Sur Linux, installez d’abord la version de PyTorch pour processeur seulement, comme le montre le module 3. Sinon, pip télécharge une version beaucoup plus volumineuse.
Réinitialiser
Section intitulée « Réinitialiser »Si le projet ne fonctionne plus, vous pouvez toujours recommencer :
- Fermez le terminal de VS Code ou exécutez
deactivate. - Supprimez le dossier
.venv(etindex.sqlite, à partir du module 2). - Recréez l’environnement : étapes 5 et 6 ci-dessus.
- Si votre code ne fonctionne plus, renommez votre dossier
policy-assistant-old. Ensuite, copiez l’instantané du dernier module terminé, par exempleC09/snapshots/end-of-m01, comme à l’étape 3.
Exercice guidé : lire l’inventaire et les questions
Section intitulée « Exercice guidé : lire l’inventaire et les questions »-
Affichez les questions sans réponse :
Fenêtre de terminal python -m policy_assistant questions --kind unanswerableSortie Q14 unanswerable en 2026-10-09 Do we offer a student discount?Q15 unanswerable en 2026-10-09 Can customers pick up an online order in a Larkfield store?Q16 unanswerable en 2026-10-09 What is the warranty on a robotic lawn mower?Q17 unanswerable en 2026-10-09 Is there a weight limit for the AquaFlow HR-50 hose reel cart?Q18 unanswerable en 2026-10-09 Does the PW-2200 come with a surface cleaner attachment?Q19 unanswerable en 2026-10-09 How long does a refund paid by Interac e-Transfer take to arrive?Q20 unanswerable en 2026-10-09 Which courier delivers our parcels to Nunavut?Q21 unanswerable fr 2026-10-09 Quelle est la durée de la garantie d'un aspirateur?8 questionsLes colonnes indiquent l’identifiant, le type, la langue, la date de la question et la question.
-
Affichez les questions de version et regardez leurs dates :
Fenêtre de terminal python -m policy_assistant questions --kind versionSortie Q22 version en 2026-10-20 An order was delivered on 20 October 2026. Can the customer return an unused it…Q23 version en 2026-11-05 An order was delivered on 5 November 2026. Can the customer return an unused it…Q24 version en 2026-10-09 What is the return window for unused items today?Q25 version en 2025-12-01 On 15 January 2026, a customer asks to return an unused lamp that was delivered…Q26 version en 2026-12-10 Is there a holiday return extension for an item delivered on 10 December 2026?Q27 version en 2026-11-03 A Rewards member's order was delivered on 3 November 2026. Do they pay for the …Q28 version en 2026-10-03 A Rewards member's order was delivered on 3 October 2026. Do they pay for the r…Q29 version fr 2026-11-10 Une cliente a reçu sa commande le 10 novembre 2026. Combien de jours a-t-elle p…8 questionsChaque date est une date de livraison, sauf pour Q24, qui porte sur « aujourd’hui ».
-
Ouvrez
questions/questions.jsonldans VS Code et trouvez la ligne de Q22. Trouvez les champsrelevant(pertinent) etwrong_version(mauvaise version). Ils correspondent au diagramme ci-dessus. -
Ouvrez
corpus/documents/returns-policy.v3.md. Lisez les métadonnées d’en-tête entre les deux lignes---. Les champs correspondent aux colonnes de l’inventaire. -
Ouvrez
corpus/documents/policy-governance.md. Trouvez la section When documents disagree (quand les documents se contredisent) et lisez ses quatre règles.
À vous de jouer : quelle version s’applique?
Section intitulée « À vous de jouer : quelle version s’applique? »Utilisez l’inventaire et le diagramme. Pour chaque question, indiquez quel document et quelle version contiennent la réponse, puis répondez en une phrase. Vérifiez ensuite vos réponses dans questions.jsonl.
- Q23 : « Une commande a été livrée le 5 novembre 2026. Le client peut-il retourner un article inutilisé le 15 décembre 2026? »
- Q25 : « Le 15 janvier 2026, un client demande à retourner une lampe inutilisée livrée le 1er décembre 2025. Est-ce permis? »
Afficher les réponses
- Q23 : la politique de retour, version 4, car la livraison a eu lieu le 1er novembre 2026 ou après. La version 4 accorde 45 jours. Le 15 décembre tombe 40 jours après le 5 novembre. Donc oui, le client peut retourner l’article. La version 3 aurait donné une réponse négative. La version 4 est une page HTML,
returns-policy.v4.html. La recherche de la prochaine leçon ne la lit donc pas encore. - Q25 : l’avis des fêtes de 2025, version 1, avec la version 3 de la politique de retour. La commande a été livrée entre le 15 novembre et le 24 décembre 2025. L’avis s’applique donc : les articles pouvaient être retournés jusqu’au 31 janvier 2026. Donc oui. L’avis est expiré aujourd’hui, mais il était en vigueur à la date de livraison. C’est pourquoi la date de la question est le 1er décembre 2025.
Erreur courante
No module named … (aucun module nommé…)
Symptôme : une commande s’arrête immédiatement avec l’un de ces messages :
/Users/amira/projects/.../.venv/bin/python: No module named policy_assistant/opt/homebrew/opt/python@3.12/bin/python3.12: No module named pytestCause : le premier message signifie que le terminal n’est pas dans le dossier du projet. Python cherche le paquet policy_assistant dans le dossier courant, mais il n’y est pas. Le deuxième message signifie que l’environnement virtuel n’est pas actif. Le Python de votre système s’exécute, et pytest est installé uniquement dans .venv.
Solution :
- Exécutez
pwd(sur Windows,Get-Location). Le chemin doit se terminer parpolicy-assistant. Sinon, exécutezcd ~/projects/policy-assistant. - Vérifiez que l’invite commence par
(.venv). Sinon, activez de nouveau l’environnement (étape 5). - Exécutez de nouveau la commande.
Sur Windows, Activate.ps1 peut échouer avec le message « running scripts is disabled on this system » (l’exécution des scripts est désactivée sur ce système). Exécutez alors Set-ExecutionPolicy -Scope CurrentUser RemoteSigned une fois, puis activez de nouveau l’environnement. Nous n’avons pas testé cette solution sur Windows.
Vérification des connaissances
Section intitulée « Vérification des connaissances »Vérifiez votre compréhension
Tomás dit : « La version 4 est la politique de retour la plus récente. L'assistant devrait donc toujours l'utiliser. » Pourquoi est-ce faux le 9 octobre 2026? Que doit consigner l'inventaire pour que l'assistant puisse choisir correctement?
Afficher la réponse
La version 4 est publiée, mais elle s’applique seulement aux commandes livrées à partir du 1er novembre 2026. Le 9 octobre, et pour toute commande livrée avant le 1er novembre, la version 3 (30 jours) s’applique. Le document de gouvernance le précise : pour les retours, la version en vigueur à la date de livraison s’applique. L’inventaire doit donc consigner les dates de début et de fin de validité de chaque version. Chaque question doit aussi préciser la date de l’événement. « La plus récente » n’est pas une règle.
Votre réponse contient-elle les points principaux de la nôtre ?
Connectez-vous et inscrivez-vous au cours pour enregistrer vos réponses. Chaque vérification compte pour le certificat.
Vérifiez votre compréhension
Pourquoi les données de test de Grace comprennent-elles des questions sans réponse dans les documents, comme « Offrons-nous un rabais étudiant? »?
Afficher la réponse
Parce que « les documents ne le précisent pas » est une bonne réponse. Il faut vérifier que l’assistant sait la donner. Une recherche renvoie toujours des passages. Un modèle peut produire une réponse fluide à partir de passages qui ne répondent pas à la question. Sans questions sans réponse dans les données de test, un assistant qui répond toujours semblerait parfait. Avec ces questions, vous pouvez mesurer à quelle fréquence il devine.
Votre réponse contient-elle les points principaux de la nôtre ?
Connectez-vous et inscrivez-vous au cours pour enregistrer vos réponses. Chaque vérification compte pour le certificat.
Vérifiez votre compréhension
Vérification pratique : exécutez python -m policy_assistant inventory. Combien de documents sont réservés au personnel? Quel document contient les règles à suivre quand les documents se contredisent?
Afficher la réponse
Six documents sont réservés au personnel : leur access (accès) est staff (personnel). Ce sont tous des procédures. Leurs identifiants sont damaged-in-transit-claims, refund-approval-procedure, safety-escalation-procedure, staff-discount-and-perks, support-team-routing et warranty-claims-procedure. Les règles à suivre en cas de contradiction se trouvent dans policy-governance (Comment les politiques de Larkfield sont gérées), à la section Quand les documents se contredisent.
Votre réponse contient-elle les points principaux de la nôtre ?
Connectez-vous et inscrivez-vous au cours pour enregistrer vos réponses. Chaque vérification compte pour le certificat.
Récapitulatif
- Le corpus est l’ensemble des documents que l’assistant peut utiliser pour répondre. L’inventaire consigne les métadonnées de chaque document : responsable, version, dates de validité, étiquette d’accès, langue et type.
- Larkfield possède 36 documents : 32 en Markdown, 2 en HTML, 2 en PDF; 6 réservés au personnel; 2 en français. Ils sont fictifs et créés pour ce cours.
- La version la plus récente n’est pas toujours celle en vigueur. Pour les retours, la date de livraison détermine la version.
- Les données de test de Grace comprennent 67 questions de huit types, dont 8 sans réponse dans les documents. Chaque question à laquelle les documents peuvent répondre indique son passage pertinent.
- La première exécution vérifiée :
python -m pytestdonne4 passed(4 tests réussis). L’inventaire se termine par36 documents: 6 staff-only, 2 in French, 4 not Markdown(36 documents : 6 réservés au personnel, 2 en français, 4 dans un format autre que Markdown). Pour réinitialiser, supprimez.venvou copiez un instantané.
Ensuite, vous créez la première recherche dans les documents. Vous mesurez à quelle fréquence elle trouve le passage pertinent.
Leçon suivante : Une référence de base par mots-clés