Pgohari commited on
Commit
ed9832f
·
verified ·
1 Parent(s): 7598a52

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +40 -16
app.py CHANGED
@@ -1,23 +1,47 @@
1
- from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
2
  import gradio as gr
 
3
 
4
- # Charger le modèle mT5-Small multilingue
5
- model_name = "google/mt5-small"
6
- tokenizer = AutoTokenizer.from_pretrained(model_name)
7
- model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
8
 
9
- # Définir la fonction du chatbot
 
 
 
 
 
 
 
 
 
 
 
 
10
  def chatbot(user_input):
11
- # Tokeniser l'entrée utilisateur
12
- inputs = tokenizer(user_input, return_tensors="pt", max_length=128, truncation=True)
13
-
14
- # Générer une réponse avec le modèle
15
- outputs = model.generate(inputs["input_ids"], max_length=50, num_beams=4, early_stopping=True)
16
 
17
- # Décoder la réponse générée
18
- response = tokenizer.decode(outputs[0], skip_special_tokens=True).strip()
19
-
20
- # Retourner la réponse finale
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  return response
22
 
23
  # Créer une interface Gradio pour tester le chatbot
@@ -25,7 +49,7 @@ demo = gr.Interface(
25
  fn=chatbot,
26
  inputs="text",
27
  outputs="text",
28
- title="Chatbot en français avec mT5-Small"
29
  )
30
 
31
  # Lancer l'application Gradio
 
1
+ from transformers import AutoTokenizer, AutoModelForSequenceClassification, AutoModelForCausalLM
2
  import gradio as gr
3
+ import torch
4
 
5
+ # Charger le modèle BERT-like (CamemBERT pour l'analyse d'intention)
6
+ camembert_model_name = "camembert-base"
7
+ camembert_tokenizer = AutoTokenizer.from_pretrained(camembert_model_name)
8
+ camembert_model = AutoModelForSequenceClassification.from_pretrained(camembert_model_name)
9
 
10
+ # Charger le modèle génératif GPT-2 francisé
11
+ gpt2_model_name = "dbddv01/gpt2-french-small"
12
+ gpt2_tokenizer = AutoTokenizer.from_pretrained(gpt2_model_name)
13
+ gpt2_model = AutoModelForCausalLM.from_pretrained(gpt2_model_name)
14
+
15
+ # Dictionnaire d'intentions de base (vous pouvez l'ajuster pour plus de sophistication)
16
+ intent_dict = {
17
+ 0: "salutation",
18
+ 1: "question_faq",
19
+ 2: "aide"
20
+ }
21
+
22
+ # Fonction de gestion des intentions et génération des réponses
23
  def chatbot(user_input):
24
+ # 1. Utilisation de CamemBERT pour analyser l'intention
25
+ cam_inputs = camembert_tokenizer(user_input, return_tensors="pt", max_length=128, truncation=True)
26
+ cam_outputs = camembert_model(**cam_inputs)
 
 
27
 
28
+ # Détection de l'intention prédominante
29
+ intent = torch.argmax(cam_outputs.logits, dim=1).item()
30
+ detected_intent = intent_dict.get(intent, "inconnu")
31
+
32
+ # 2. Générer la réponse en fonction de l'intention détectée
33
+ if detected_intent == "salutation":
34
+ response = "Bonjour! Comment puis-je vous aider aujourd'hui ?"
35
+ elif detected_intent == "question_faq":
36
+ # On utilise GPT-2 pour générer une réponse à une question
37
+ gpt2_inputs = gpt2_tokenizer(user_input, return_tensors="pt")
38
+ gpt2_outputs = gpt2_model.generate(gpt2_inputs["input_ids"], max_length=100, pad_token_id=gpt2_tokenizer.eos_token_id)
39
+ response = gpt2_tokenizer.decode(gpt2_outputs[0], skip_special_tokens=True)
40
+ elif detected_intent == "aide":
41
+ response = "Je suis là pour vous aider ! Que puis-je faire pour vous ?"
42
+ else:
43
+ response = "Je ne suis pas sûr de comprendre. Pouvez-vous reformuler votre question ?"
44
+
45
  return response
46
 
47
  # Créer une interface Gradio pour tester le chatbot
 
49
  fn=chatbot,
50
  inputs="text",
51
  outputs="text",
52
+ title="Chatbot BERT-GPT en Français"
53
  )
54
 
55
  # Lancer l'application Gradio