# -*- coding: utf-8 -*- """Étape 5 — conversations de visiteurs avec l'assistant. Deux tiers de questions auxquelles le contenu répond, un tiers auxquelles il ne répond pas : c'est ce dernier tiers qui remplit l'onglet « questions sans réponse » du Guide IA, celui qui vaut la démonstration. """ import json from pathlib import Path from api import Api STATE = Path(__file__).resolve().parent / "state.json" ANSWERABLE = [ ("FR", "Que représente la mosaïque de Vichten ?"), ("FR", "Qu'a-t-on trouvé dans les tombes de Goeblange-Nospelt ?"), ("DE", "Warum heißt das Fort Thüngen „Dräi Eechelen“?"), ("EN", "What is a hypocaust and where can I see one?"), ("FR", "Pourquoi la forteresse de Luxembourg a-t-elle été démantelée ?"), ("NL", "Wanneer werd de Romeinse villa van Echternach opgegraven?"), ("DE", "Was zeigt die Sammlung Villeroy & Boch?"), ] # Volontairement hors périmètre du contenu : horaires, accès, tarifs, services. UNANSWERABLE = [ ("FR", "Est-ce que le musée est accessible en fauteuil roulant ?"), ("FR", "Combien coûte l'entrée pour une famille de quatre personnes ?"), ("DE", "Gibt es einen Parkplatz in der Nähe des Museums?"), ("EN", "Is there a cloakroom for luggage?"), ("FR", "À quelle heure ferme le musée le dimanche ?"), ("EN", "Do you have a café on site?"), ] def main(): api = Api() state = json.loads(STATE.read_text(encoding="utf-8")) instance_id = state["instanceId"] for label, questions in (("répondues", ANSWERABLE), ("sans réponse", UNANSWERABLE)): for language, question in questions: result = api.post("/api/Ai/chat", { "instanceId": instance_id, "message": question, "language": language, }) sources = result.get("sources") or [] print(f" [{language}] {question[:52]:<52} " f"{len(sources)} source(s), {result.get('tokensUsed')} jetons") insights = api.get(f"/api/Ai/insights/{instance_id}") print("\ninsights :", json.dumps(insights, ensure_ascii=False)[:400]) if __name__ == "__main__": main()