Spaces:
Sleeping
Sleeping
File size: 2,002 Bytes
95766bb 5e9ce93 7f56798 d7fc645 7f56798 390c234 33be1fe 383666d 33be1fe 383666d 244366b 383666d ea5d2c5 c440b7d 7f56798 ea5d2c5 7f56798 383666d d199e78 7f56798 d199e78 383666d 7f56798 383666d 7f56798 95766bb be4ebbd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
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()
|