[email protected] commited on
Commit
1661a65
·
1 Parent(s): a34c6e8

feat: update config.yaml to change selectbox to multiselect for activity types and certifications; enhance remplir_texte function to optionally remove unspecified lines

Browse files
Files changed (3) hide show
  1. config.yaml +8 -8
  2. pages/chatbot.py +18 -7
  3. pages/prompt_system.py +2 -0
config.yaml CHANGED
@@ -66,16 +66,16 @@ variables:
66
  value: "Nouvelle-Aquitaine"
67
 
68
  - label: "Type d'activité"
69
- nature: 'selectbox'
70
  key: type_activite
71
- options: [ "Toutes", "Cereales", "Elevage", "Equin", "Forestier", "Peche", "Viticole" ]
72
- value: ""
73
 
74
  - label: "Spécificités et/ou Certifications"
75
  nature: 'multiselect'
76
  key: specificite_certifications
77
- options: ["Aucune", "Bio Oui Partielle", "Bio Oui Totale", "HVE (Haute Valeur Environnementale)", "TCS (Techniques Culturales Simplifiées)"]
78
- value: ["Aucune"]
79
 
80
  - label: "Date de création de l'entreprise"
81
  nature: 'date'
@@ -142,19 +142,19 @@ variables:
142
  nature: 'multiselect'
143
  key: recherche_geo
144
  options: [ "Tous", "Départemental", "Régional", "National", "Européen" ]
145
- value: "Tous"
146
 
147
  - label: "Type de subvention souhaitée"
148
  nature: 'multiselect'
149
  key: subvention_type
150
  options: [ "Tous", "Avance − Prêts − Garanties", "Subvention", "Prise en charge des coûts et allègement des charges", "Autres" ]
151
- value: "Tous"
152
 
153
  - label: "Thématique de l'aide"
154
  nature: 'multiselect'
155
  key: subvention_thematic
156
  options: [ "Tous", "Crise énergétique", "France 2030", "Plan résilience" ]
157
- value: "Tous"
158
 
159
 
160
  prompt_system: "
 
66
  value: "Nouvelle-Aquitaine"
67
 
68
  - label: "Type d'activité"
69
+ nature: 'multiselect'
70
  key: type_activite
71
+ options: [ "Cereales", "Elevage", "Equin", "Forestier", "Peche", "Viticole" ]
72
+ value:
73
 
74
  - label: "Spécificités et/ou Certifications"
75
  nature: 'multiselect'
76
  key: specificite_certifications
77
+ options: ["Bio Oui Partielle", "Bio Oui Totale", "HVE (Haute Valeur Environnementale)", "TCS (Techniques Culturales Simplifiées)"]
78
+ value:
79
 
80
  - label: "Date de création de l'entreprise"
81
  nature: 'date'
 
142
  nature: 'multiselect'
143
  key: recherche_geo
144
  options: [ "Tous", "Départemental", "Régional", "National", "Européen" ]
145
+ value:
146
 
147
  - label: "Type de subvention souhaitée"
148
  nature: 'multiselect'
149
  key: subvention_type
150
  options: [ "Tous", "Avance − Prêts − Garanties", "Subvention", "Prise en charge des coûts et allègement des charges", "Autres" ]
151
+ value:
152
 
153
  - label: "Thématique de l'aide"
154
  nature: 'multiselect'
155
  key: subvention_thematic
156
  options: [ "Tous", "Crise énergétique", "France 2030", "Plan résilience" ]
157
+ value:
158
 
159
 
160
  prompt_system: "
pages/chatbot.py CHANGED
@@ -68,17 +68,25 @@ def show_prompts():
68
  if expander.button(item, key=f"button_{item}"):
69
  launchQuery(item)
70
 
71
- def remplir_texte(texte: str, variables: dict) -> str:
72
  # Convertir les valeurs en chaînes de caractères pour éviter les erreurs avec format()
73
- variables_str = {key: (', '.join(value) if isinstance(value, list) else value if value else 'Non spécifié')
74
- for key, value in variables.items()}
75
-
 
 
76
  # Remplacer les variables dynamiques dans le texte
77
  try:
78
  texte_rempli = texte.format(**variables_str)
79
  except KeyError as e:
80
  raise ValueError(f"Clé manquante dans le dictionnaire : {e}")
81
 
 
 
 
 
 
 
82
  return texte_rempli
83
 
84
  def page():
@@ -87,15 +95,14 @@ def page():
87
  if "assistant" not in st.session_state:
88
  st.text("Assistant non initialisé")
89
 
90
- if "chat_history" not in st.session_state or len(st.session_state["chat_history"]) == 1:
91
 
92
- print("got here")
93
  if st.session_state["data_dict"] is not None:
94
  # Convertir la liste en dictionnaire avec 'key' comme clé et 'value' comme valeur
95
  vars = {item['key']: item['value'] for item in st.session_state["data_dict"] if 'key' in item and 'value' in item}
96
 
97
  system_template = st.session_state.prompt_system
98
- full = remplir_texte(system_template, vars)
99
 
100
  st.session_state["chat_history"] = [
101
  SystemMessage(content=full),
@@ -109,6 +116,10 @@ def page():
109
  # Models selector
110
  selector.ModelSelector()
111
 
 
 
 
 
112
  # Displaying messages
113
  display_messages()
114
 
 
68
  if expander.button(item, key=f"button_{item}"):
69
  launchQuery(item)
70
 
71
+ def remplir_texte(texte: str, variables: dict, remove_line_if_unspecified: bool = False) -> str:
72
  # Convertir les valeurs en chaînes de caractères pour éviter les erreurs avec format()
73
+ variables_str = {
74
+ key: (', '.join(value) if isinstance(value, list) and len(value) else value if value else 'Non spécifié')
75
+ for key, value in variables.items()
76
+ }
77
+
78
  # Remplacer les variables dynamiques dans le texte
79
  try:
80
  texte_rempli = texte.format(**variables_str)
81
  except KeyError as e:
82
  raise ValueError(f"Clé manquante dans le dictionnaire : {e}")
83
 
84
+ # Supprimer les lignes contenant "Non spécifié" si l'option est activée
85
+ if remove_line_if_unspecified:
86
+ lignes = texte_rempli.split('\n')
87
+ lignes = [ligne for ligne in lignes if 'Non spécifié' not in ligne]
88
+ texte_rempli = '\n'.join(lignes)
89
+
90
  return texte_rempli
91
 
92
  def page():
 
95
  if "assistant" not in st.session_state:
96
  st.text("Assistant non initialisé")
97
 
98
+ if "chat_history" not in st.session_state or len(st.session_state["chat_history"]) < 2:
99
 
 
100
  if st.session_state["data_dict"] is not None:
101
  # Convertir la liste en dictionnaire avec 'key' comme clé et 'value' comme valeur
102
  vars = {item['key']: item['value'] for item in st.session_state["data_dict"] if 'key' in item and 'value' in item}
103
 
104
  system_template = st.session_state.prompt_system
105
+ full = remplir_texte(system_template, vars, st.session_state["remove_undefined_value"])
106
 
107
  st.session_state["chat_history"] = [
108
  SystemMessage(content=full),
 
116
  # Models selector
117
  selector.ModelSelector()
118
 
119
+ if(len(st.session_state["chat_history"])):
120
+ if st.button("Effacer l'historique"):
121
+ st.session_state["chat_history"] = []
122
+
123
  # Displaying messages
124
  display_messages()
125
 
pages/prompt_system.py CHANGED
@@ -4,6 +4,8 @@ def page():
4
 
5
  st.subheader("Renseignez votre prompt système")
6
 
 
 
7
  prompt = st.text_area("Prompt system", st.session_state.prompt_system if 'prompt_system' in st.session_state else "", height=400, max_chars=None)
8
 
9
  # Session State also supports attribute based syntax
 
4
 
5
  st.subheader("Renseignez votre prompt système")
6
 
7
+ st.session_state["remove_undefined_value"] = st.checkbox("En cochant cette case, les lignes avec des paramètres vides seront supprimées.", value=True)
8
+
9
  prompt = st.text_area("Prompt system", st.session_state.prompt_system if 'prompt_system' in st.session_state else "", height=400, max_chars=None)
10
 
11
  # Session State also supports attribute based syntax