File size: 3,750 Bytes
cb06144
5bb82c6
 
cb06144
5bb82c6
991e09c
5bb82c6
 
 
 
 
 
 
cb06144
5bb82c6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
991e09c
 
 
 
 
 
 
 
 
 
 
 
 
5bb82c6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
---
language:
- fr
license: apache-2.0
base_model: google/mt5-small
pipeline_tag: text-generation
tags:
- mt5
- text2text-generation
- french
- ui-feedback
- seq2seq
library_name: transformers
---

# mt5_fakcogni_model

Modèle **mT5 (small)** fine-tuné pour générer, en français, de courtes phrases de feedback / formalisation d'interface utilisateur, à partir d'une icône UI et de la requête de l'utilisateur.

Ce modèle est utilisé dans le cadre du projet **WAIT** (gestion de la latence perçue pour les interfaces LLM locales) : pendant qu'un agent conversationnel réfléchit, `mt5_fakcogni_model` génère en amont une phrase courte associée à une icône (ex. "recherche en cours", "récupération de la météo"...) afin de donner un retour visuel immédiat à l'utilisateur.

Le modèle est disponible publiquement sur le Hub : [prozart/Wait](https://huggingface.co/prozart/Wait).

## Utilisation

```python
from transformers import AutoTokenizer, MT5ForConditionalGeneration

repo_id = "prozart/Wait"
tokenizer = AutoTokenizer.from_pretrained(repo_id)
model = MT5ForConditionalGeneration.from_pretrained(repo_id)

prompt = "<fr> Formalize UI: Recherche. User query: quelle est la météo à Nantes"
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(**inputs, max_length=32)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
```

## Format du prompt d'entrée

Le modèle attend un prompt structuré de la façon suivante :

```
<{lang}> Formalize UI: {icon}. User query: {clean_query}
```

- **`lang`** : code de langue cible (ex. `fr`)
- **`icon`** : titre / nom de l'icône UI associée à l'action détectée (issu d'une recherche vectorielle dans une base d'icônes Lucide)
- **`clean_query`** : requête de l'utilisateur, tronquée aux 12 premiers mots

## Génération

La génération est effectuée avec `max_length=32`, produisant une phrase courte adaptée à un affichage UI (pas de streaming, pas de sampling avancé décrits dans le code d'inférence).

## Exemples (fictifs)

Le modèle gère à la fois le français (`<fr>`) et l'anglais (`<en>`). Exemples illustratifs :

| Prompt | Sortie générée |
|---|---|
| `<fr> Formalize UI: Recherche. User query: quelle est la météo à Nantes` | `Recherche des informations météo pour Nantes...` |
| `<fr> Formalize UI: Horloge. User query: donne moi l'heure à Tokyo` | `Récupération de l'heure actuelle à Tokyo...` |
| `<en> Formalize UI: Search. User query: what's the weather in Paris` | `Searching for weather information in Paris...` |
| `<en> Formalize UI: Download. User query: get me the latest report` | `Fetching the latest report...` |

*(Exemples donnés à titre indicatif pour illustrer le format d'entrée/sortie, à remplacer par de vraies générations du modèle.)*

## Entraînement

- Modèle de base : mT5-small
- Entraîné via `Seq2SeqTrainer` (Hugging Face `transformers`)
- Jeu de données généré à partir d'appels aux API Gemini et Mistral, puis dédupliqué (scripts JSONL)

## Limitations

- Modèle spécialisé pour un format de prompt précis (`Formalize UI: ... User query: ...`) ; les performances hors de ce format ne sont pas garanties.
- Génération limitée à des phrases courtes (`max_length=32`).
- Actuellement mono-langue (français), même si le prompt prévoit un tag de langue générique.

## Contexte du projet

Ce modèle fait partie du projet **WAIT**, une application FastAPI/WebSocket combinant :
- une recherche sémantique d'icônes (SentenceTransformer `BAAI/bge-m3` + `sqlite-vec`),
- un classifieur de format de réponse (`SLPClassifier`),
- ce modèle mT5 de génération de phrases de feedback,
- un agent LangGraph pour les réponses conversationnelles finales.