Iva_Beta_3 / app.py
Leo71288's picture
Update app.py
28772d2 verified
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()