Aller au contenu
English

Le corpus et les questions

  • Leçon 2
  • 45 min
  • Module 1 : Définir le problème 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 mainEnviron 45 minutes

Ce que vous devez savoir

Ce qu’il vous faut sur votre ordinateur

  • Python 3.12 ou une version plus récente, un terminal et VS Code.
  • Le dossier ~/projects des 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.

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.

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.

Une ligne du temps de septembre 2025 à mars 2027 avec quatre rangées. Politique de retour : version 3, 30 jours, jusqu'au 31 octobre 2026; version 4, 45 jours, à partir du 1er novembre 2026. Avis des Fêtes : une case en pointillés de la mi-novembre 2025 au 31 janvier 2026, expiré. Articles d'aide : indiquent 30 jours à partir de juin 2026, corrects jusqu'au 1er novembre 2026, puis toujours 30 jours, mais incorrects, dans une case en pointillés. Deux livraisons : le 20 octobre 2026 relève de la version 3; le 10 novembre 2026, de la version 4. Une ligne pleine marque aujourd'hui, le 9 octobre 2026, et une ligne pointillée marque le 1er novembre 2026.
La politique de retour au fil du temps. Aujourd'hui, la version 4 est publiée, mais pas encore en vigueur. La date de livraison, et non le fichier le plus récent, détermine la version qui s'applique.
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.

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.

La question Q22, de type version, avec sa date du 20 octobre 2026 : livraison le 20 octobre 2026, le client peut-il retourner un article inutilisé le 1er décembre 2026? Quatre flèches en partent. Passage pertinent : returns-policy, version 3, section Return window (délai de retour), public. Mauvaise version, dans une case en pointillés : returns-policy, version 4, section Return window, 45 jours, pas en vigueur pour cette livraison. Réponse de référence : non. La version 3 s'applique, 30 jours après la livraison; le 1er décembre est 42 jours après la livraison. Clés pour une vérification rapide : la réponse doit dire non et 30.
Une question étiquetée. Le passage pertinent indique où se trouve la réponse; la mauvaise version indique où mène une recherche peu attentive.
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.

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.

  1. Ouvrez un terminal et allez dans votre dossier de projets :

    Fenêtre de terminal
    cd ~/projects
  2. 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.git

    Si 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 alors nextia-learning-labs-main; utilisez ce nom à l’étape suivante.

  3. Copiez l’instantané start dans un nouveau dossier, policy-assistant :

    Fenêtre de terminal
    cp -R nextia-learning-labs/C09/snapshots/start policy-assistant
  4. 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.

  5. Créez un nouvel environnement virtuel et activez-le :

    Fenêtre de terminal
    python3 -m venv .venv
    source .venv/bin/activate

    L’invite commence maintenant par (.venv). Si python3 --version affiche une version antérieure à 3.12, utilisez python3.12 au lieu de python3.

  6. Installez les dépendances. Dans ce module, il s’agit seulement de pytest :

    Fenêtre de terminal
    python -m pip install -r requirements.txt

    La 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 .venv occupe 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

Avant de modifier quoi que ce soit, prouvez que le projet fonctionne. Exécutez les tests :

Fenêtre de terminal
python -m pytest
Sortie
============================= test session starts ==============================
platform darwin -- Python 3.12.13, pytest-9.1.1, pluggy-1.6.0
rootdir: /Users/amira/projects/policy-assistant
configfile: pytest.ini
testpaths: tests
collected 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 :

Fenêtre de terminal
python -m policy_assistant inventory
Sortie
document v from to access lang type format owner
account-and-security 2 2026-01-15 - public en policy md Support (Grace)
contact-and-hours 3 2026-09-01 - public en help md Customer experience
damaged-in-transit-claims 2 2026-04-15 - staff en procedure md Logistics
damaged-or-wrong-items 2 2025-09-01 - public en policy md Support (Grace)
delivery-policy 4 2026-04-01 - public en policy html Logistics
faq-quebec 2 2026-06-01 - public fr help md Customer experience
garantie-legale-quebec 1 2026-01-01 - public fr policy md Support (Grace)
gift-cards 1 2025-06-01 - public en policy md Finance
help-centre-faq 7 2026-06-01 - public en help md Customer experience
holiday-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 experience
large-item-delivery 2 2026-04-01 - public en policy md Logistics
live-plants-guarantee 1 2026-03-01 - public en policy md Product team
loyalty-program 2 2026-02-01 - public en policy md Customer experience
order-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 office
product-care-bbq-gr310 1 2025-04-15 - public en guide md Product team
product-care-garden-furniture 2 2026-03-01 - public en guide md Product team
product-care-hedge-trimmer-ht550 1 2025-03-01 - public en guide md Product team
product-care-pw2200 2 2025-05-01 - public en guide pdf Product team
product-care-pw2400 1 2026-03-01 - public en guide md Product team
promotions-and-discount-codes 2 2026-05-01 - public en policy md Customer experience
recycling-and-take-back 1 2025-08-01 - public en policy md Customer experience
refund-approval-procedure 2 2026-03-15 - staff en procedure md Finance
refunds-and-payments 3 2026-02-01 - public en policy md Finance
returns-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 safety
safety-notice-kt180 1 2026-09-20 - public en notice md Product safety
staff-discount-and-perks 1 2026-01-01 - staff en procedure md People team
supplier-aquaflow-hose-reels 1 2026-07-01 - public en supplier md Supplier content (AquaFlow), published by the Product team
support-team-routing 4 2026-09-15 - staff en procedure md Support (Grace)
trade-accounts 1 2026-01-01 - public en policy md Finance
warranty-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 Markdown

Vé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.

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.

Si le projet ne fonctionne plus, vous pouvez toujours recommencer :

  1. Fermez le terminal de VS Code ou exécutez deactivate.
  2. Supprimez le dossier .venv (et index.sqlite, à partir du module 2).
  3. Recréez l’environnement : étapes 5 et 6 ci-dessus.
  4. Si votre code ne fonctionne plus, renommez votre dossier policy-assistant-old. Ensuite, copiez l’instantané du dernier module terminé, par exemple C09/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 »
  1. Affichez les questions sans réponse :

    Fenêtre de terminal
    python -m policy_assistant questions --kind unanswerable
    Sortie
    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 questions

    Les colonnes indiquent l’identifiant, le type, la langue, la date de la question et la question.

  2. Affichez les questions de version et regardez leurs dates :

    Fenêtre de terminal
    python -m policy_assistant questions --kind version
    Sortie
    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 questions

    Chaque date est une date de livraison, sauf pour Q24, qui porte sur « aujourd’hui ».

  3. Ouvrez questions/questions.jsonl dans VS Code et trouvez la ligne de Q22. Trouvez les champs relevant (pertinent) et wrong_version (mauvaise version). Ils correspondent au diagramme ci-dessus.

  4. 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.

  5. Ouvrez corpus/documents/policy-governance.md. Trouvez la section When documents disagree (quand les documents se contredisent) et lisez ses quatre règles.

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.

  1. Q23 : « Une commande a été livrée le 5 novembre 2026. Le client peut-il retourner un article inutilisé le 15 décembre 2026? »
  2. 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
  1. 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.
  2. 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 pytest

Cause : 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 :

  1. Exécutez pwd (sur Windows, Get-Location). Le chemin doit se terminer par policy-assistant. Sinon, exécutez cd ~/projects/policy-assistant.
  2. Vérifiez que l’invite commence par (.venv). Sinon, activez de nouveau l’environnement (étape 5).
  3. 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é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.

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.

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.

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 pytest donne 4 passed (4 tests réussis). L’inventaire se termine par 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). Pour réinitialiser, supprimez .venv ou 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