Spaces:
Sleeping
Sleeping
[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- config.yaml +8 -8
- pages/chatbot.py +18 -7
- 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: '
|
| 70 |
key: type_activite
|
| 71 |
-
options: [ "
|
| 72 |
-
value:
|
| 73 |
|
| 74 |
- label: "Spécificités et/ou Certifications"
|
| 75 |
nature: 'multiselect'
|
| 76 |
key: specificite_certifications
|
| 77 |
-
options: ["
|
| 78 |
-
value:
|
| 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:
|
| 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: "
|
|
|
|
| 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 = {
|
| 74 |
-
|
| 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"])
|
| 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
|