Spaces:
Build error
Build error
| import gradio as gr | |
| import os | |
| import requests | |
| from sklearn.feature_extraction.text import TfidfVectorizer | |
| from sklearn.metrics.pairwise import cosine_similarity | |
| # Base de connaissances | |
| REPONSES = { | |
| # DEVISES | |
| "devise": "🛡️ Notre cri : 'Unis comme les racines du chêne, libres comme le vent des plaines !'", | |
| "serment": "⚔️ Je jure sur le sang de mes ancêtres : vaincre ou mourir !", | |
| # HISTOIRE | |
| "alésia": "52 av. J.-C. : Siège héroïque. Nous avons tenu 30 jours contre 10 légions romaines !", | |
| "gergovie": "Victoire éclatante ! César y perdit 700 soldats et son orgueil.", | |
| "combats": "Nos batailles mémorables : Gergovie (-52), Alésia (-52), Lutèce (-53)", | |
| # STRATÉGIE | |
| "tactique": "3 secrets :\n1. Guérilla éclair\n2. Terrain accidenté\n3. Alliance des peuples", | |
| "romains": "Leurs forces : discipline. Leur faiblesse : méprisent notre terre !" | |
| } # <-- Fermeture correcte du dictionnaire | |
| # Préparation IA | |
| corpus = list(REPONSES.keys()) | |
| vectorizer = TfidfVectorizer().fit(corpus) | |
| def chatbot(question): | |
| # Nettoyage | |
| question = question.lower().strip(" ?!.,") | |
| # 1. Recherche exacte | |
| if question in REPONSES: | |
| return REPONSES[question] | |
| # 2. Similarité sémantique (IA légère) | |
| question_vec = vectorizer.transform([question]) | |
| sim = cosine_similarity(question_vec, vectorizer.transform(corpus)) | |
| idx = sim.argmax() | |
| if sim.max() > 0.5: # Seuil de confiance | |
| return REPONSES[corpus[idx]] | |
| # 3. Fallback intelligent | |
| return ( | |
| "Par Teutatès ! Je ne reconnais pas cette question. " | |
| "Essaie avec : 'devise', 'Alésia', ou 'tactiques'" | |
| ) | |
| # Interface | |
| with gr.Blocks(theme=gr.themes.Base(primary_hue="amber")) as app: | |
| gr.Markdown("# 🏛️ Encyclopédie Gauloise") | |
| question = gr.Textbox(label="Interrogez nos sagas") | |
| reponse = gr.Textbox(label="Chroniques", lines=5) | |
| question.submit(chatbot, question, reponse) | |
| app.launch() | |