Spaces:
Sleeping
Sleeping
import os | |
import json | |
import gradio as gr | |
from difflib import SequenceMatcher | |
# Désactiver l'utilisation du GPU pour TensorFlow (si nécessaire) | |
os.environ["CUDA_VISIBLE_DEVICES"] = "-1" # Désactive le GPU | |
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # Réduit les logs de TensorFlow | |
class HuggingFaceChatbot: | |
def __init__(self, responses_file="responses.json"): | |
"""Initialisation du chatbot, chargement des réponses.""" | |
self.responses = self.load_responses(responses_file) | |
def load_responses(self, file_path): | |
"""Charge les réponses depuis un fichier JSON.""" | |
try: | |
with open(file_path, "r") as f: | |
return json.load(f) | |
except FileNotFoundError: | |
print("Aucun fichier de réponses trouvé. Utilisation des réponses par défaut.") | |
return { | |
"bonjour": "Bonjour! Comment puis-je vous aider?", | |
"comment ça va?": "Je suis une IA, je vais toujours bien! Et vous?", | |
} | |
def find_best_response(self, user_input): | |
"""Trouve la meilleure correspondance basée sur la similarité.""" | |
max_similarity = 0 | |
best_match = None | |
for key in self.responses.keys(): | |
similarity = SequenceMatcher(None, user_input.lower(), key).ratio() | |
if similarity > max_similarity: | |
max_similarity = similarity | |
best_match = key | |
# Retourne la réponse si une correspondance suffisante est trouvée | |
if max_similarity > 0.4: # Seuil ajustable | |
return self.responses[best_match] | |
return "Je ne suis pas sûr de comprendre. Pouvez-vous reformuler?" | |
def __call__(self, user_input): | |
"""Permet d'utiliser l'instance comme une fonction pour répondre.""" | |
return self.find_best_response(user_input) | |
# Charger le chatbot | |
chatbot = HuggingFaceChatbot() | |
# Fonction pour l'interface Gradio | |
def chatbot_interface(user_input): | |
"""Fonction pour interagir avec Gradio.""" | |
return chatbot(user_input) | |
# Créer l'interface Gradio | |
iface = gr.Interface( | |
fn=chatbot_interface, | |
inputs=gr.Textbox(label="Entrez votre message", placeholder="Tapez ici...", lines=2), | |
outputs="text", | |
title="Chatbot Interactif", | |
description="Un chatbot simple qui répond à des questions courantes.", | |
allow_flagging="never" # Option pour désactiver le flagging si tu ne veux pas que les utilisateurs signalent des réponses. | |
) | |
# Démarrer l'interface Gradio | |
iface.launch() |