akramRedjdal commited on
Commit
3a6a99b
·
1 Parent(s): 709645a

Génération: prompt strict format + nettoyage sortie + temp 0.2

Browse files
Files changed (1) hide show
  1. generer_texte.py +27 -5
generer_texte.py CHANGED
@@ -111,9 +111,15 @@ def construire_prompt(concepts, theme=None):
111
  theme_txt = f"\nThème souhaité : {theme}." if theme else ""
112
 
113
  system = (
114
- "Tu écris des textes très simples pour aider des enfants autistes à lire "
115
- "avec des pictogrammes. Phrases courtes, présent de l'indicatif, une idée "
116
- "par phrase."
 
 
 
 
 
 
117
  )
118
 
119
  user = f"""Écris un court texte (6 à 10 phrases) en français.{theme_txt}
@@ -128,6 +134,8 @@ Chaque nom, verbe et adjectif que tu écris DOIT figurer dans la palette ci-dess
128
  est listé ; écrire "enfourner" alors que seuls "placer" et "four" sont listés.
129
  - Seuls les petits mots de liaison sont libres (le, la, un, des, dans, et, avec,
130
  pour, il, elle, ils, elles, son, sa, ses...).
 
 
131
 
132
  POUR TESTER LA CORÉFÉRENCE :
133
  - Choisis UN seul personnage de la liste, nomme-le au début.
@@ -171,7 +179,7 @@ def generer(theme=None):
171
  "Content-Type": "application/json"},
172
  json={
173
  "model": MODELE,
174
- "temperature": 0.3,
175
  "messages": [
176
  {"role": "system", "content": system},
177
  {"role": "user", "content": user},
@@ -180,7 +188,21 @@ def generer(theme=None):
180
  timeout=60,
181
  )
182
  resp.raise_for_status()
183
- return resp.json()["choices"][0]["message"]["content"].strip()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
184
 
185
 
186
  def envoyer_au_serveur(texte, url="http://localhost:5006/pictogramiser"):
 
111
  theme_txt = f"\nThème souhaité : {theme}." if theme else ""
112
 
113
  system = (
114
+ "Tu écris des textes très simples pour aider des enfants à lire avec des "
115
+ "pictogrammes. Phrases courtes, une idée par phrase. "
116
+ "RÈGLES DE FORME STRICTES : "
117
+ "(1) Conjugue les verbes au PRÉSENT de l'indicatif (ex: « elle prépare », "
118
+ "JAMAIS « elle préparer »). "
119
+ "(2) AUCUN formatage : pas de gras, pas d'astérisques (*), pas de listes, "
120
+ "pas d'emoji. "
121
+ "(3) AUCUN commentaire, note, parenthèse explicative ni texte entre crochets. "
122
+ "Réponds UNIQUEMENT par le texte de l'histoire."
123
  )
124
 
125
  user = f"""Écris un court texte (6 à 10 phrases) en français.{theme_txt}
 
134
  est listé ; écrire "enfourner" alors que seuls "placer" et "four" sont listés.
135
  - Seuls les petits mots de liaison sont libres (le, la, un, des, dans, et, avec,
136
  pour, il, elle, ils, elles, son, sa, ses...).
137
+ - CONJUGUE les verbes au présent (« elle coupe », pas « elle couper »).
138
+ - AUCUN astérisque, AUCUN gras, AUCUNE note ni explication entre parenthèses/crochets.
139
 
140
  POUR TESTER LA CORÉFÉRENCE :
141
  - Choisis UN seul personnage de la liste, nomme-le au début.
 
179
  "Content-Type": "application/json"},
180
  json={
181
  "model": MODELE,
182
+ "temperature": 0.2,
183
  "messages": [
184
  {"role": "system", "content": system},
185
  {"role": "user", "content": user},
 
188
  timeout=60,
189
  )
190
  resp.raise_for_status()
191
+ texte = resp.json()["choices"][0]["message"]["content"].strip()
192
+ return nettoyer_sortie(texte)
193
+
194
+
195
+ def nettoyer_sortie(texte):
196
+ """Filet de sécurité : retire le formatage et les notes que le modèle
197
+ ajoute parfois (gras **, emoji, note finale entre crochets ou après ---)."""
198
+ # Couper toute note/commentaire en fin de réponse
199
+ for sep in ["\n---", "\n*[", "\n[Note", "\n(Note", "\nNote :"]:
200
+ idx = texte.find(sep)
201
+ if idx != -1:
202
+ texte = texte[:idx]
203
+ # Retirer le gras/italique markdown
204
+ texte = texte.replace("**", "").replace("__", "").replace("*", "")
205
+ return texte.strip()
206
 
207
 
208
  def envoyer_au_serveur(texte, url="http://localhost:5006/pictogramiser"):