Download scripts/generate_eval_questions.py from nvikou/corrective-rag-data-assistant: direct link, hf CLI and curl.
- Browser
- Download file 11.5 kB
-
https://huggingface.co/spaces/nvikou/corrective-rag-data-assistant/resolve/main/scripts/generate_eval_questions.py
- Command line
-
hf download hf://spaces/nvikou/corrective-rag-data-assistant/scripts/generate_eval_questions.py
-
curl -L -o generate_eval_questions.py https://huggingface.co/spaces/nvikou/corrective-rag-data-assistant/resolve/main/scripts/generate_eval_questions.py
11.5 kB
| """Génère eval/eval_questions.json (60 questions annotées).""" | |
| from __future__ import annotations | |
| import json | |
| from pathlib import Path | |
| OUT = Path(__file__).resolve().parents[1] / "eval" / "eval_questions.json" | |
| BASE = [ | |
| { | |
| "id": "q01", | |
| "question": ( | |
| "Quel est le délai de remboursement pour un client " | |
| "professionnel ?" | |
| ), | |
| "expected_relevant_doc_ids": [ | |
| "refund_policy", | |
| "client_segmentation", | |
| ], | |
| "should_answer": True, | |
| "expects_structured": False, | |
| }, | |
| { | |
| "id": "q02", | |
| "question": "Quel est le délai de remboursement standard ?", | |
| "expected_relevant_doc_ids": ["refund_policy", "internal_faq"], | |
| "should_answer": True, | |
| "expects_structured": False, | |
| }, | |
| { | |
| "id": "q03", | |
| "question": ( | |
| "Quelle est la politique de retour pour les clients " | |
| "entreprise ?" | |
| ), | |
| "expected_relevant_doc_ids": [ | |
| "client_segmentation", | |
| "refund_policy", | |
| ], | |
| "should_answer": True, | |
| "expects_structured": False, | |
| }, | |
| { | |
| "id": "q04", | |
| "question": ( | |
| "Quels sont les frais de port à partir de quel montant " | |
| "sont-ils gratuits ?" | |
| ), | |
| "expected_relevant_doc_ids": ["shipping_policy"], | |
| "should_answer": True, | |
| "expects_structured": False, | |
| }, | |
| { | |
| "id": "q05", | |
| "question": ( | |
| "Que se passe-t-il en cas de retard de livraison de plus " | |
| "de 5 jours ?" | |
| ), | |
| "expected_relevant_doc_ids": ["shipping_policy"], | |
| "should_answer": True, | |
| "expects_structured": False, | |
| }, | |
| { | |
| "id": "q06", | |
| "question": "Comment escalader une réclamation client en interne ?", | |
| "expected_relevant_doc_ids": ["internal_faq"], | |
| "should_answer": True, | |
| "expects_structured": False, | |
| }, | |
| { | |
| "id": "q07", | |
| "question": ( | |
| "Quels KPI dois-je surveiller pour détecter une baisse " | |
| "de rentabilité ?" | |
| ), | |
| "expected_relevant_doc_ids": ["profitability_report"], | |
| "should_answer": True, | |
| "expects_structured": False, | |
| }, | |
| { | |
| "id": "q08", | |
| "question": "Pourquoi les ventes de la région Sud ont-elles baissé ?", | |
| "expected_relevant_doc_ids": ["profitability_report"], | |
| "should_answer": True, | |
| "expects_structured": False, | |
| }, | |
| { | |
| "id": "q09", | |
| "question": ( | |
| "Quel client a le meilleur chiffre d'affaires en juin ?" | |
| ), | |
| "expected_relevant_doc_ids": ["sales_q2_2026"], | |
| "should_answer": True, | |
| "expects_structured": True, | |
| "expected_structured": { | |
| "group_by": "client", | |
| "top_client": "Client F", | |
| "value": 18200, | |
| }, | |
| }, | |
| { | |
| "id": "q10", | |
| "question": "Quelle est la marge totale du Produit X en janvier ?", | |
| "expected_relevant_doc_ids": ["sales_q1_2026"], | |
| "should_answer": True, | |
| "expects_structured": True, | |
| "expected_structured": {"metric": "marge", "value": 5800}, | |
| }, | |
| { | |
| "id": "q11", | |
| "question": ( | |
| "Quel est le chiffre d'affaires total du Produit X en avril ?" | |
| ), | |
| "expected_relevant_doc_ids": ["sales_q2_2026"], | |
| "should_answer": True, | |
| "expects_structured": True, | |
| "expected_structured": { | |
| "metric": "chiffre_affaires", | |
| "value": 25200, | |
| }, | |
| }, | |
| { | |
| "id": "q12", | |
| "question": "Quel sera le chiffre d'affaires le mois prochain ?", | |
| "expected_relevant_doc_ids": [], | |
| "should_answer": False, | |
| "expects_structured": False, | |
| }, | |
| { | |
| "id": "q13", | |
| "question": ( | |
| "Quel est le taux d'intérêt appliqué aux emprunts " | |
| "bancaires de l'entreprise ?" | |
| ), | |
| "expected_relevant_doc_ids": [], | |
| "should_answer": False, | |
| "expects_structured": False, | |
| }, | |
| { | |
| "id": "q14", | |
| "question": ( | |
| "Quelle est la politique de retour applicable dans un " | |
| "pays non couvert par nos contrats ?" | |
| ), | |
| "expected_relevant_doc_ids": [], | |
| "should_answer": False, | |
| "expects_structured": False, | |
| }, | |
| { | |
| "id": "q15", | |
| "question": ( | |
| "Combien de jours ouvrés pour valider une demande de " | |
| "remboursement avant émission ?" | |
| ), | |
| "expected_relevant_doc_ids": ["refund_policy"], | |
| "should_answer": True, | |
| "expects_structured": False, | |
| }, | |
| { | |
| "id": "q16", | |
| "question": ( | |
| "Quelles sont les conditions de paiement pour un compte " | |
| "Grand Compte ?" | |
| ), | |
| "expected_relevant_doc_ids": ["client_segmentation"], | |
| "should_answer": True, | |
| "expects_structured": False, | |
| }, | |
| { | |
| "id": "q17", | |
| "question": ( | |
| "Quel est le futur cours de l'action de l'entreprise " | |
| "en bourse ?" | |
| ), | |
| "expected_relevant_doc_ids": [], | |
| "should_answer": False, | |
| "expects_structured": False, | |
| }, | |
| { | |
| "id": "q18", | |
| "question": "Un produit soldé à plus de 50% est-il remboursable ?", | |
| "expected_relevant_doc_ids": ["refund_policy"], | |
| "should_answer": True, | |
| "expects_structured": False, | |
| }, | |
| ] | |
| EXTRA = [ | |
| ( | |
| "Quel délai pour un remboursement carte bancaire ?", | |
| ["refund_policy"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Les produits personnalisés sont-ils remboursables ?", | |
| ["refund_policy"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Comment ouvrir un ticket de remboursement ?", | |
| ["refund_policy"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Que faire en cas de livraison non conforme ?", | |
| ["refund_policy"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Quel est le délai de livraison en France métropolitaine ?", | |
| ["shipping_policy"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Quel délai de livraison à l'international ?", | |
| ["shipping_policy"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Comment suivre une commande expédiée ?", | |
| ["shipping_policy"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Les frais de port professionnels dépendent de quoi ?", | |
| ["shipping_policy"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Quelle est la différence entre Professionnel et Grand compte ?", | |
| ["client_segmentation"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Quel délai de paiement pour un client Professionnel ?", | |
| ["client_segmentation"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Un client B2B a-t-il 30 jours de retour ?", | |
| ["client_segmentation"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Où trouver les conditions de retour B2B spécifiques ?", | |
| ["client_segmentation"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Un client pro a-t-il un délai de remboursement différent ?", | |
| ["internal_faq", "refund_policy"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Où trouver les chiffres de vente exacts ?", | |
| ["internal_faq"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Quel est le taux de retour client à surveiller ?", | |
| ["profitability_report"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Quel produit est le moins rentable selon le rapport ?", | |
| ["profitability_report"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Quelle action corrective est prévue pour la région Sud ?", | |
| ["profitability_report"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Quel est le délai moyen de paiement Grand Compte à alerter ?", | |
| ["profitability_report"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Quel client a le meilleur CA en mai ?", | |
| ["sales_q2_2026"], | |
| True, | |
| True, | |
| ), | |
| ( | |
| "Quelle est la marge totale du Produit Y en février ?", | |
| ["sales_q1_2026"], | |
| True, | |
| True, | |
| ), | |
| ( | |
| "Quel est le CA total en mars pour le Produit X ?", | |
| ["sales_q1_2026"], | |
| True, | |
| True, | |
| ), | |
| ( | |
| "Quel est le chiffre d'affaires du Produit Z en juin ?", | |
| ["sales_q2_2026"], | |
| True, | |
| True, | |
| ), | |
| ( | |
| "Quelle est la marge du Client F en juin ?", | |
| ["sales_q2_2026"], | |
| True, | |
| True, | |
| ), | |
| ( | |
| "Quel est le meilleur client en chiffre d'affaires en avril ?", | |
| ["sales_q2_2026"], | |
| True, | |
| True, | |
| ), | |
| ( | |
| "Quel est le CA total de la région Nord en janvier ?", | |
| ["sales_q1_2026"], | |
| True, | |
| True, | |
| ), | |
| ( | |
| "Quelle est la marge totale en mai ?", | |
| ["sales_q2_2026"], | |
| True, | |
| True, | |
| ), | |
| ("Quel sera le bénéfice net dans 3 ans ?", [], False, False), | |
| ("Quel est le salaire du PDG ?", [], False, False), | |
| ( | |
| "Donne-moi le code source du moteur de pricing ?", | |
| [], | |
| False, | |
| False, | |
| ), | |
| ( | |
| "Quelle est la politique RH des congés parentaux ?", | |
| [], | |
| False, | |
| False, | |
| ), | |
| ( | |
| "Peux-tu prédire les ventes de décembre 2027 ?", | |
| [], | |
| False, | |
| False, | |
| ), | |
| ( | |
| "Quel est le stock exact en entrepôt ce soir ?", | |
| [], | |
| False, | |
| False, | |
| ), | |
| ( | |
| "Les abonnements déjà activés sont-ils remboursés intégralement ?", | |
| ["refund_policy"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Un avoir peut-il être imputé sur la prochaine facture B2B ?", | |
| ["refund_policy"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Sous quel délai un agent valide une demande de remboursement ?", | |
| ["refund_policy"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Que se passe-t-il si le produit est défectueux ?", | |
| ["refund_policy"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Les délais de livraison changent-ils pendant les soldes ?", | |
| ["shipping_policy"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Un particulier a-t-il un support dédié ?", | |
| ["client_segmentation"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Quelle remise volume pour un Grand compte ?", | |
| ["client_segmentation"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Comment escalader une réclamation niveau 2 ?", | |
| ["internal_faq"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Pourquoi le Produit X a-t-il une meilleure marge ?", | |
| ["profitability_report"], | |
| True, | |
| False, | |
| ), | |
| ( | |
| "Quel seuil d'alerte pour le coût logistique ?", | |
| ["profitability_report"], | |
| True, | |
| False, | |
| ), | |
| ] | |
| def main() -> None: | |
| out = list(BASE) | |
| n = len(out) | |
| for question, docs, should, structured in EXTRA: | |
| n += 1 | |
| out.append( | |
| { | |
| "id": f"q{n:02d}", | |
| "question": question, | |
| "expected_relevant_doc_ids": docs, | |
| "should_answer": should, | |
| "expects_structured": structured, | |
| } | |
| ) | |
| OUT.write_text( | |
| json.dumps(out, indent=2, ensure_ascii=False), | |
| encoding="utf-8", | |
| ) | |
| print(f"Écrit {len(out)} questions -> {OUT}") | |
| if __name__ == "__main__": | |
| main() | |