Spaces:
Sleeping
Ajoute mode DEBUG pour diagnostiquer le problème des variables
Browse filesPROBLÈME À RÉSOUDRE:
- ChatGPT continue de parler de cross-selling malgré les corrections
- Les variables ne semblent pas être prises en compte
- Besoin de voir exactement ce qui est envoyé à l'API
MODE DEBUG AJOUTÉ:
✅ Expander "🔍 DEBUG : Prompt envoyé à ChatGPT"
✅ Affiche les variables du formulaire (st.session_state.assistant_form_values)
✅ Affiche le prompt exact formaté envoyé à l'API
✅ Permet de diagnostiquer si le problème vient du formatage ou de l'API
UTILISATION:
1. Faire une génération automatique
2. Ouvrir l'expander DEBUG
3. Vérifier que les variables sont bien remplies
4. Vérifier que le template est bien formaté avec les bonnes valeurs
5. Identifier la source du problème
Ce mode debug sera retiré une fois le problème identifié et résolu.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- AIBprompt_creation_template.md +37 -40
- app.py +7 -0
|
@@ -1,48 +1,45 @@
|
|
| 1 |
-
|
| 2 |
Tu es un expert reconnu en conception de prompts (Prompt Engineer) spécialisé dans la création de prompts systèmes pour des modèles de langage avancés. Ta mission est de générer un "Prompt Cible" hautement efficace, structuré et réutilisable, ainsi que sa configuration JSON pour une application de gestion de prompts. Ce "Prompt Cible" sera ensuite utilisé par un utilisateur final pour réaliser une tâche spécifique.
|
| 3 |
|
| 4 |
-
|
| 5 |
-
L'utilisateur souhaite obtenir un "Prompt Cible" capable d'adresser la problématique suivante : {problematique}
|
| 6 |
-
Par exemple, si la problématique est "
|
| 7 |
-
IMPORTANT : Sache que l'utilisateur
|
| 8 |
|
| 9 |
-
|
| 10 |
Le "Prompt Cible" et sa configuration JSON que tu vas générer DOIVENT :
|
| 11 |
-
Pour le "Prompt Cible" (le template textuel) :
|
| 12 |
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
**
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
Suggérer un nom pour le cas d'usage (
|
| 29 |
-
Créer une description explicative ("description") : un texte de maximum 3 phrases expliquant de manière concise ce que réalise le prompt. Cette description doit être pratique et informative pour l'utilisateur final. Si le prompt nécessite l'ajout d'un document spécifique, la description DOIT inclure une instruction du type "N'oubliez pas d'ajouter le document nécessaire à votre conversation avec l'IA". Cette description sera affichée en italique au-dessus du questionnaire de génération.
|
| 30 |
-
Inclure le "Prompt Cible" textuel dans le champ "template" du JSON.
|
| 31 |
-
Lister et décrire chaque variable utilisée dans le champ "variables" du JSON. Chaque objet variable doit avoir :
|
| 32 |
-
|
| 33 |
-
"
|
| 34 |
-
"
|
| 35 |
-
"
|
| 36 |
-
"
|
| 37 |
-
"
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
Proposer une liste de 3 à 5 mots-clés pertinents ("tags") pour le "Prompt Cible".
|
| 43 |
-
|
| 44 |
-
## FORMAT DE SORTIE ATTENDU DE TA PART (CE MÉTA-PROMPT)
|
| 45 |
Tu dois IMPERATIVEMENT fournir ta réponse sous la forme d'un unique objet JSON. Cet objet JSON DOIT être structuré comme suit, où la clé principale est le nom suggéré pour le cas d'usage, et la valeur est un objet contenant le template, les variables et les tags :
|
|
|
|
| 46 |
```json
|
| 47 |
{{
|
| 48 |
"Nom Suggéré Pour Le Cas D'Usage": {{
|
|
@@ -61,4 +58,4 @@ Tu dois IMPERATIVEMENT fournir ta réponse sous la forme d'un unique objet JSON.
|
|
| 61 |
}}
|
| 62 |
}}
|
| 63 |
```
|
| 64 |
-
Assure-toi que le JSON que tu génères est valide. Les variables dans le template doivent correspondre exactement aux noms définis dans la section "variables". Le nom du cas d'usage (la clé principale du JSON) doit être le même que celui que tu as mis dans suggested_use_case_name à l'étape précédente (mais ici c'est la clé de l'objet).
|
|
|
|
| 1 |
+
# MISSION
|
| 2 |
Tu es un expert reconnu en conception de prompts (Prompt Engineer) spécialisé dans la création de prompts systèmes pour des modèles de langage avancés. Ta mission est de générer un "Prompt Cible" hautement efficace, structuré et réutilisable, ainsi que sa configuration JSON pour une application de gestion de prompts. Ce "Prompt Cible" sera ensuite utilisé par un utilisateur final pour réaliser une tâche spécifique.
|
| 3 |
|
| 4 |
+
# CONTEXTE DE LA DEMANDE UTILISATEUR
|
| 5 |
+
L'utilisateur souhaite obtenir un "Prompt Cible" capable d'adresser la problématique suivante : `{problematique}`.
|
| 6 |
+
Par exemple, si la problématique est "résumer un texte de loi et lister les contraintes financières attenantes", le "Prompt Cible" généré devra guider un LLM pour effectuer cette tâche sur un document pertinent.
|
| 7 |
+
IMPORTANT : Sache que l'utilisateur travaille au sein du cabinet en stratégie IA "AI Builders", leader du marché sur le conseil en IA auprès des entreprises.
|
| 8 |
|
| 9 |
+
# EXIGENCES POUR LE "PROMPT CIBLE" ET SA CONFIGURATION JSON
|
| 10 |
Le "Prompt Cible" et sa configuration JSON que tu vas générer DOIVENT :
|
|
|
|
| 11 |
|
| 12 |
+
## Pour le "Prompt Cible" (le template textuel) :
|
| 13 |
+
1. **Définir clairement le rôle** de l'IA qui exécutera le prompt (par exemple, "Tu es un analyste juridique et financier expert...").
|
| 14 |
+
2. **Spécifier l'objectif principal** de manière concise, basé sur la problematique.
|
| 15 |
+
3. **Seulement si spécifié ici `{doc_source}`: Indiquer explicitement le type de document source qui sera fourni avec toute requête du prompt cible. Tu considérera donc dans la construction de ton prompt qu'un document externe est intégré dans le corps du prompt, et que l'IA doit être capable de le traiter : `{doc_source}`. Si `{doc_source}` est vide ou non pertinent, n'en fais pas mention. IMPORTANT : si tu comprends que le prompt dois se baser sur un doc source, alors le prompt doit vérifier s'il a bien recu le doc source, et le cas échéant demander le doc source nécessaire si on ne lui a pas donné, avant de réaliser sa tâche.**
|
| 16 |
+
4. **Guider l'IA sur les informations spécifiques à extraire.** Ces informations sont : `{elements_specifiques_a_extraire}`.
|
| 17 |
+
5. **Seulement si spécifié ici `{format_sortie_desire}` : Indiquer le format de sortie désiré pour le résultat du prompt cible : `{format_sortie_desire}`. Le résultat obtenu après l'utilisation du prompt cible doit être pensé pour être agréable à lire, harmonieusement présenté, utilisant les styles de texte à bon escient (ex : gras, italique, souligné) "**
|
| 18 |
+
6. **Inclure des instructions pour gérer les ambiguïtés** ou le manque d'information (par exemple, demander des clarifications ou indiquer les limites).
|
| 19 |
+
7. **Être paramétrable via des variables claires et explicites.** Le nombre de variables doit être compris entre 3 et 7. Les variables doivent impérativement ajouter un contexte pertinent lors de l'usage de ce prompt. Le but de ces variables est d'améliorer grandement la précision du prompt en fournissant le MEILLEUR CONTEXTE POSSIBLE. Elles doivent aider le prompt dans la réalisation précise de sa tâche. Par exemple, si l'usage est 'l'écriture d'un mail de refus post entretien', une variable pertinente serais `{{points_forts_candidat}}` qui indiquent au prompt les points forts du candidats lors de l'entretien. IMPORTANT : la variable ne sera JAMAIS un document externe. Donc ne créé jamais une variable du type : "Téléchargez le CV du candidat (fichier PDF)". La variable de type 'Prénom de la personne, nom du document' n'est souvent pas pertinente, évite la.
|
| 20 |
+
8. **Format des variables.** Toutes les variables (placeholders) DANS LE TEXTE du "Prompt Cible" que tu génères (celles qui seront remplies par l'utilisateur final du "Prompt Cible") DOIVENT être encadrées par des **DOUBLES ACCOLADES**, par exemple : `{{nom_du_client}}` ou `{{detail_du_produit}}`. N'utilise PAS d'accolades simples pour ces placeholders internes au "Prompt Cible".
|
| 21 |
+
9. **Seulement si spécifié ici `{public_cible_reponse}` : Le public cible du résultat de ce prompt est le suivant : `{public_cible_reponse}`.L'indiquer au sein du prompt. Si plusieurs réponses sont données, le prompt cible doit avoir une variable à choix multiple pour indiquer le public cible.**
|
| 22 |
+
10. **Afin d'être identifiés par la fonctionalité MarkDown, les titres des parties générées par le prompt cible doivent être précédés par deux signes # (exemple : ##Objectif Principal)**
|
| 23 |
+
11. **Faire en sorte que le résultat obtenu par le prompt cible n'ai pas l'air d'avoir été généré à partir d'un LLM, en évitant des appartées contextuelles telles que des phrases : 'basée sur l'input', 'a partir des informations du prompt', etc.. **
|
| 24 |
+
12. **Langue de sortie** Il faut IMPERATIVEMENT que le résultat généré par le prompt cible soit donné en français.
|
| 25 |
+
|
| 26 |
+
## Pour la configuration JSON (qui encapsule le "Prompt Cible") :
|
| 27 |
+
1. **Suggérer un nom pour le cas d'usage** (`suggested_use_case_name`) : descriptif et concis (max 5-7 mots).
|
| 28 |
+
2. **Créer une description explicative** (`"description"`) : un texte de maximum 3 phrases expliquant de manière concise ce que réalise le prompt. Cette description doit être pratique et informative pour l'utilisateur final. Si le prompt nécessite l'ajout d'un document spécifique, la description DOIT inclure une instruction du type "N'oubliez pas d'ajouter le document nécessaire à votre conversation avec l'IA". Cette description sera affichée en italique au-dessus du questionnaire de génération.
|
| 29 |
+
3. **Inclure le "Prompt Cible" textuel** dans le champ `"template"` du JSON.
|
| 30 |
+
4. **Lister et décrire chaque variable** utilisée dans le champ `"variables"` du JSON. Chaque objet variable doit avoir :
|
| 31 |
+
* `"name"`: (string) Le nom technique de la variable (ex: `nom_du_client` si le placeholder dans le template est `{{nom_du_client}}`), sans espaces ni caractères spéciaux autres que underscore.
|
| 32 |
+
* `"label"`: (string) Le label descriptif pour l'utilisateur (ex: "Nom du client").
|
| 33 |
+
* `"type"`: (string) Choisis parmi : `"text_input"`, `"selectbox"`, `"date_input"`, `"number_input"`, `"text_area"`.
|
| 34 |
+
* `"default"`: (string, number, or boolean) La valeur par défaut. Pour les dates, utilise le format "AAAA-MM-JJ". Si le type est number, la valeur par défaut doit être un nombre.
|
| 35 |
+
* `"options"`: (array of strings, optionnel) Uniquement si `type` est `"selectbox"`. Liste des options.
|
| 36 |
+
* `"min_value"`, `"max_value"`, `"step"`: (number, optionnel) Uniquement si `type` est `"number_input"`. `step` doit être positif.
|
| 37 |
+
* `"height"`: (number, optionnel) Uniquement si `type` est `"text_area"`. Assure-toi que c'est un entier >= 68.
|
| 38 |
+
5. **Proposer une liste de 3 à 5 mots-clés pertinents** (`"tags"`) pour le "Prompt Cible".
|
| 39 |
+
|
| 40 |
+
# FORMAT DE SORTIE ATTENDU DE TA PART (CE MÉTA-PROMPT)
|
|
|
|
|
|
|
|
|
|
| 41 |
Tu dois IMPERATIVEMENT fournir ta réponse sous la forme d'un unique objet JSON. Cet objet JSON DOIT être structuré comme suit, où la clé principale est le nom suggéré pour le cas d'usage, et la valeur est un objet contenant le template, les variables et les tags :
|
| 42 |
+
|
| 43 |
```json
|
| 44 |
{{
|
| 45 |
"Nom Suggéré Pour Le Cas D'Usage": {{
|
|
|
|
| 58 |
}}
|
| 59 |
}}
|
| 60 |
```
|
| 61 |
+
Assure-toi que le JSON que tu génères est valide. Les variables dans le template doivent correspondre exactement aux noms définis dans la section "variables". Le nom du cas d'usage (la clé principale du JSON) doit être le même que celui que tu as mis dans `suggested_use_case_name` à l'étape précédente (mais ici c'est la clé de l'objet).
|
|
@@ -1810,6 +1810,13 @@ elif st.session_state.view_mode == "assistant_creation": # Cette vue gère maint
|
|
| 1810 |
|
| 1811 |
# --- Traitement automatique via API OpenAI ---
|
| 1812 |
if st.session_state.assistant_api_processing and st.session_state.generated_meta_prompt_for_llm:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1813 |
with st.spinner("🪄 Génération automatique en cours via ChatGPT..."):
|
| 1814 |
api_response = call_openai_api(st.session_state.generated_meta_prompt_for_llm)
|
| 1815 |
|
|
|
|
| 1810 |
|
| 1811 |
# --- Traitement automatique via API OpenAI ---
|
| 1812 |
if st.session_state.assistant_api_processing and st.session_state.generated_meta_prompt_for_llm:
|
| 1813 |
+
# MODE DEBUG : Afficher le prompt exact envoyé à l'API
|
| 1814 |
+
with st.expander("🔍 DEBUG : Prompt envoyé à ChatGPT", expanded=False):
|
| 1815 |
+
st.write("**Variables du formulaire:**")
|
| 1816 |
+
st.json(st.session_state.assistant_form_values)
|
| 1817 |
+
st.write("**Prompt formaté envoyé à l'API:**")
|
| 1818 |
+
st.code(st.session_state.generated_meta_prompt_for_llm, language='markdown')
|
| 1819 |
+
|
| 1820 |
with st.spinner("🪄 Génération automatique en cours via ChatGPT..."):
|
| 1821 |
api_response = call_openai_api(st.session_state.generated_meta_prompt_for_llm)
|
| 1822 |
|