Ilyas KHIAT commited on
Commit
5b07f21
1 Parent(s): b0c72d5

emission export fin fin

Browse files
app.py CHANGED
@@ -37,7 +37,6 @@ def load_svg_as_base64(file_path):
37
  return base64.b64encode(svg_data).decode()
38
 
39
  def main():
40
- st.markdown(":point_left: Cliquez pour vous inspirer", unsafe_allow_html=True)
41
 
42
  if "emission" not in st.session_state:
43
  tracker = EmissionsTracker()
 
37
  return base64.b64encode(svg_data).decode()
38
 
39
  def main():
 
40
 
41
  if "emission" not in st.session_state:
42
  tracker = EmissionsTracker()
chart.png CHANGED
chat_with_pps.py CHANGED
@@ -269,7 +269,7 @@ def import_conversation():
269
 
270
  def extract_format_prompts_from_response(response):
271
  st.markdown("---")
272
- st.markdown("**En découvrir plus avec l'IA RSE Bziiit**")
273
  prompts = response.split("\n")
274
  prompts = [prompt.strip() for prompt in prompts if prompt.strip() != ""]
275
  prompts_container = st.container()
@@ -298,7 +298,7 @@ def display_chat():
298
  tracker.start()
299
  st.session_state["emission"] = tracker
300
  # app config
301
- st.title("Chatbot")
302
  models_name = {
303
  "Mistral (FR)":1,
304
  "GPT-4o":0
@@ -318,7 +318,7 @@ def display_chat():
318
  # session state
319
  if "chat_history" not in st.session_state:
320
  st.session_state.chat_history = [
321
- AIMessage(content="Salut, voici votre cartographie des parties prenantes. Que puis-je faire pour vous?"),
322
  ]
323
 
324
  if "model" not in st.session_state:
@@ -366,12 +366,13 @@ def display_chat():
366
  with st.chat_message("AI"):
367
  st.write(message.content)
368
  if "cartographie" in message.content:
 
369
  display_chart()
370
  if message.content == st.session_state.chat_history[0].content:
371
  st.markdown("---")
372
- st.markdown("**En découvrir plus avec l'IA RSE Bziiit**")
373
- first_prompts = ["En plus des parties prenantes déjà identifiées que tu peux consulter, quels groupes ou individus, impactés par les activités de mon organisation, devrais ajouter dans notre cartographie des parties prenantes ?",
374
- "Quels sont les principaux acteurs internes et externes qui influencent ou sont influencés par mon organisation, et comment leurs intérêts ou préoccupations peuvent ils varier selon les différents domaines d'activité de mon organisation ?",
375
  "En tenant compte de ma chaîne de valeur complète, quels sont les différentes parties prenantes stratégiques, incluant les partenaires commerciaux, les régulateurs, les groupes de pression, et la communauté, et comment leurs rôles et influences interagissent pour affecter les objectifs à court et long terme de mon organisation ?"]
376
  display_prompts(first_prompts)
377
  elif isinstance(message, HumanMessage):
 
269
 
270
  def extract_format_prompts_from_response(response):
271
  st.markdown("---")
272
+ st.markdown("**En découvrir plus avec l'IA RSE bziiit**")
273
  prompts = response.split("\n")
274
  prompts = [prompt.strip() for prompt in prompts if prompt.strip() != ""]
275
  prompts_container = st.container()
 
298
  tracker.start()
299
  st.session_state["emission"] = tracker
300
  # app config
301
+ st.title("CHATBOT")
302
  models_name = {
303
  "Mistral (FR)":1,
304
  "GPT-4o":0
 
318
  # session state
319
  if "chat_history" not in st.session_state:
320
  st.session_state.chat_history = [
321
+ AIMessage(content="Salut, voici votre cartographie des parties prenantes. Que puis-je faire pour vous ?"),
322
  ]
323
 
324
  if "model" not in st.session_state:
 
366
  with st.chat_message("AI"):
367
  st.write(message.content)
368
  if "cartographie" in message.content:
369
+ st.markdown("\n")
370
  display_chart()
371
  if message.content == st.session_state.chat_history[0].content:
372
  st.markdown("---")
373
+ st.markdown("**En découvrir plus avec l'IA RSE bziiit**")
374
+ first_prompts = ["En plus des parties prenantes déjà identifiées que tu peux consulter, quels groupes ou individus, impactés par les activités de mon organisation, devrais-je ajouter dans notre cartographie des parties prenantes ?",
375
+ "Quels sont les principaux acteurs internes et externes qui influencent ou sont influencés par mon organisation, et comment leurs intérêts ou préoccupations peuvent varier selon les différents domaines d'activité ?",
376
  "En tenant compte de ma chaîne de valeur complète, quels sont les différentes parties prenantes stratégiques, incluant les partenaires commerciaux, les régulateurs, les groupes de pression, et la communauté, et comment leurs rôles et influences interagissent pour affecter les objectifs à court et long terme de mon organisation ?"]
377
  display_prompts(first_prompts)
378
  elif isinstance(message, HumanMessage):
comparateur.py CHANGED
@@ -39,11 +39,11 @@ def get_table_empreintes_detailed() -> pd.DataFrame:
39
  emissions_df = emissions_df.applymap(lambda x: x * 1000)
40
  emissions_df = emissions_df.round(2)
41
  emissions_df = emissions_df.rename(index={
42
- "Scrapping": "Collecte de Documents et scrapping",
43
  "extraction_pp": "Extraction des parties prenantes (serveur et IA)",
44
  "cartographie": "Sauvegarde de la cartographie",
45
- "chatbot": "Dialogue avec ChatBot IA",
46
- "download_rapport": "Téléchargement Cartographie"
47
  })
48
 
49
  # Make Ecologits column cumulative
 
39
  emissions_df = emissions_df.applymap(lambda x: x * 1000)
40
  emissions_df = emissions_df.round(2)
41
  emissions_df = emissions_df.rename(index={
42
+ "Scrapping": "Collecte de documents et scrapping",
43
  "extraction_pp": "Extraction des parties prenantes (serveur et IA)",
44
  "cartographie": "Sauvegarde de la cartographie",
45
+ "chatbot": "Dialogue avec chatBot IA",
46
+ "download_rapport": "Téléchargement cartographie"
47
  })
48
 
49
  # Make Ecologits column cumulative
emissions.csv CHANGED
The diff for this file is too large to render. See raw diff
 
empreinte_carbone.py CHANGED
@@ -13,25 +13,25 @@ def load_svg_as_base64(file_path):
13
 
14
  def color_scale(val):
15
  if val == '-':
16
- color = 'white'
17
  elif val <= 1:
18
- color = 'rgba(0,238,0,0.5)' # green with opacity
19
  elif val <= 10:
20
- color = 'rgba(110,238,0,0.5)' # light green with opacity
21
  elif val <= 50:
22
- color = 'rgba(255,255,0,0.5)' # light yellow with opacity
23
  elif val <= 100:
24
- color = 'rgba(255,165,0,0.5)' # light orange with opacity
25
  else:
26
- color = 'rgba(255,99,71,0.5)' # light red with opacity
27
- return f'background-color: {color}'
28
 
29
  def display_cf_comparison(stm: st):
30
  svg_file_path = "feuille.svg"
31
  svg_base64 = load_svg_as_base64(svg_file_path)
32
  stm.markdown(
33
  f"""
34
- **Votre consommation Carbone**
35
  <img src='data:image/svg+xml;base64,{svg_base64}' alt='svg' width='15' height='15' style='margin-left: 10px;'>
36
  """,
37
  unsafe_allow_html=True
@@ -47,10 +47,10 @@ def display_cf_comparison(stm: st):
47
 
48
 
49
 
50
- stm.markdown(f"<div style='text-align: center; margin-bottom: 10px;'><b>{total_emission*1000:.3f}</b> g eq. CO2</div>", unsafe_allow_html=True)
51
  stm.markdown("Dont :")
52
- stm.markdown(f"- Empreinte serveur (via CodeCarbon) : **{serveur_emission*1000:.3f}** g eq. CO2 ({pourcentage_serveur:.2%})")
53
- stm.write(f"- Empreinte IA (via EcoLogits) : **{emission_api*1000:.3f}** g eq. CO2 ({pourcentage_api:.2%})")
54
  # stm.markdown("(avec l'outil CodeCarbon)")
55
  c1,c2,c3 = stm.columns([1,1,1])
56
 
@@ -71,16 +71,17 @@ def display_cf_comparison(stm: st):
71
  )
72
 
73
  def display_carbon_footprint():
74
-
75
- st.title("EMPREINTE ENERGETIQUE DE L'APPLICATION IA CARTO RSE")
76
  display_cf_comparison(st)
77
  table = get_table_empreintes_detailed()
 
 
78
  table.replace({0.00: '-'}, inplace=True)
79
- styled_df = table[['Consommation Totale']].rename(columns={'Consommation Totale': 'Consommation Cumulée (g eqCo2)'})
 
80
  styled_df = styled_df.round(2)
81
- styled_df = styled_df.style.applymap(color_scale, subset=['Consommation Cumulée (g eqCo2)'])
82
- styled_df = styled_df.set_properties(subset=['Consommation Cumulée (g eqCo2)'], **{'text-align': 'center'})
83
 
 
84
  st.markdown("---")
85
  st.markdown("### DÉTAIL PAR TÂCHE")
86
  st.table(styled_df)
@@ -97,10 +98,12 @@ def display_carbon_footprint():
97
  pourcentage_api = emission_api / total_emission
98
  pourcentage_serveur = serveur_emission / total_emission
99
 
100
- df = pd.DataFrame({"Catégorie": ["Identification + dessin","Dialogue avec IA (extraction pp + dialogue)"], "valeur": [pourcentage_serveur, pourcentage_api]})
 
 
101
  base=alt.Chart(df).encode(
102
  theta=alt.Theta(field="valeur", type="quantitative", stack=True),
103
- color=alt.Color(field="Catégorie", type="nominal")
104
  )
105
 
106
 
 
13
 
14
  def color_scale(val):
15
  if val == '-':
16
+ return 'background-color: {color}'
17
  elif val <= 1:
18
+ color = '#008571' #'rgba(0,238,0,0.5)' # green with opacity
19
  elif val <= 10:
20
+ color = '#83c2b8' # light green with opacity
21
  elif val <= 50:
22
+ color = '#efcd82' # light yellow with opacity
23
  elif val <= 100:
24
+ color = '#f2aa56' # light orange with opacity
25
  else:
26
+ color = '#e87a58' # light red with opacity
27
+ return f'background-color: {color};color:white'
28
 
29
  def display_cf_comparison(stm: st):
30
  svg_file_path = "feuille.svg"
31
  svg_base64 = load_svg_as_base64(svg_file_path)
32
  stm.markdown(
33
  f"""
34
+ **Votre consommation carbone**
35
  <img src='data:image/svg+xml;base64,{svg_base64}' alt='svg' width='15' height='15' style='margin-left: 10px;'>
36
  """,
37
  unsafe_allow_html=True
 
47
 
48
 
49
 
50
+ stm.markdown(f"<div style='text-align: center; margin-bottom: 10px;'><b>{total_emission*1000:.2f}</b> g eq. CO2</div>", unsafe_allow_html=True)
51
  stm.markdown("Dont :")
52
+ stm.markdown(f"- Empreinte serveur (via CodeCarbon) : **{serveur_emission*1000:.2f}** g eq. CO2 ({pourcentage_serveur:.2%})")
53
+ stm.write(f"- Empreinte IA (via EcoLogits) : **{emission_api*1000:.2f}** g eq. CO2 ({pourcentage_api:.2%})")
54
  # stm.markdown("(avec l'outil CodeCarbon)")
55
  c1,c2,c3 = stm.columns([1,1,1])
56
 
 
71
  )
72
 
73
  def display_carbon_footprint():
74
+ st.title("EMPREINTE ÉNERGÉTIQUE DE L'APPLICATION IA CARTO RSE")
 
75
  display_cf_comparison(st)
76
  table = get_table_empreintes_detailed()
77
+ # table[['Consommation Totale']] = table[['Consommation Totale']].map('${:,.2f}'.format)
78
+
79
  table.replace({0.00: '-'}, inplace=True)
80
+ #just 2 digits after the comma
81
+ styled_df = table[['Consommation Totale']].rename(columns={'Consommation Totale': 'Consommation totale (g eqCo2)'})
82
  styled_df = styled_df.round(2)
 
 
83
 
84
+ styled_df = styled_df.style.applymap(color_scale, subset=['Consommation totale (g eqCo2)'])
85
  st.markdown("---")
86
  st.markdown("### DÉTAIL PAR TÂCHE")
87
  st.table(styled_df)
 
98
  pourcentage_api = emission_api / total_emission
99
  pourcentage_serveur = serveur_emission / total_emission
100
 
101
+ df = pd.DataFrame({"Catégorie": ["Identification + dessin","IA (extraction pp + dialogue)"], "valeur": [pourcentage_serveur, pourcentage_api]})
102
+ color_scale_alt = alt.Scale(domain=['Identification + dessin', 'IA (extraction pp + dialogue)'], range=['#011166', '#63abdf'])
103
+
104
  base=alt.Chart(df).encode(
105
  theta=alt.Theta(field="valeur", type="quantitative", stack=True),
106
+ color=alt.Color(field="Catégorie", type="nominal", scale=color_scale_alt),
107
  )
108
 
109
 
empreinte_export.py CHANGED
@@ -32,7 +32,7 @@ def display_cf_comparison():
32
 
33
  html_content = f"""
34
  <div style='display: flex; align-items: center;'>
35
- <h2 style='margin: 0;'>Votre consommation Carbone</h2>
36
  <img src='data:image/svg+xml;base64,{svg_base64}' alt='svg' width='15' height='15' style='margin-left: 10px;'>
37
  </div>
38
  <br>
@@ -51,7 +51,7 @@ def display_cf_comparison():
51
  html_content += f"<p>- Empreinte serveur (via CodeCarbon) : <b>{serveur_emission*1000:.3f}</b> g eq. CO2 ({pourcentage_serveur:.2%})</p>"
52
  html_content += f"<p>- Empreinte IA (via EcoLogits) : <b>{emission_api*1000:.3f}</b> g eq. CO2 ({pourcentage_api:.2%})</p>"
53
 
54
- html_content += "<h2>Votre équivalence</h2>"
55
  html_content += """
56
  <div style='display: flex; justify-content: space-around;'>
57
  """
@@ -105,14 +105,38 @@ def get_carbon_footprint_html():
105
 
106
  table = get_table_empreintes_detailed()
107
  table.replace({0.00: '-'}, inplace=True)
108
- styled_df = table[['Consommation Totale']].rename(columns={'Consommation Totale': 'Consommation Cumulée (g eqCo2)'})
109
- styled_df = styled_df.style.applymap(color_scale, subset=['Consommation Cumulée (g eqCo2)'])
110
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
 
112
  html_content += """
113
- <h2>DÉTAIL PAR TÂCHE</h2>
114
  """
115
- html_content += styled_df.to_html()
116
 
117
  serveur_emission = st.session_state['emission'].stop()
118
  emission_api = sum([value["el"] for value in st.session_state["partial_emissions"].values()])
@@ -123,17 +147,18 @@ def get_carbon_footprint_html():
123
  pourcentage_serveur = serveur_emission / total_emission
124
 
125
  df = pd.DataFrame({"Catégorie": ["Identification + dessin", "IA (extraction pp + dialogue)"], "valeur": [pourcentage_serveur, pourcentage_api]})
 
 
126
  base = alt.Chart(df).encode(
127
  theta=alt.Theta(field="valeur", type="quantitative", stack=True),
128
- color=alt.Color(field="Catégorie", type="nominal")
129
  )
130
 
131
  pie = base.mark_arc(outerRadius=100)
132
- text = base.mark_text(radius=115, fill="black").encode(alt.Text(field="valeur", type="quantitative", format=".2%"))
133
 
134
  chart = alt.layer(pie, text, data=df).resolve_scale(theta="independent")
135
 
136
-
137
  html_content += """
138
  <h2>SYNTHESE (Dialogue IA et non IA)</h2>
139
  """
@@ -141,7 +166,7 @@ def get_carbon_footprint_html():
141
  with open("chart.png", "rb") as image_file:
142
  encoded_image = base64.b64encode(image_file.read()).decode()
143
 
144
- html_content += f'<img src="data:image/png;base64,{encoded_image}" alt="Pie chart">'
145
 
146
  return html_content
147
 
 
32
 
33
  html_content = f"""
34
  <div style='display: flex; align-items: center;'>
35
+ <h4 style='margin: 0;'>Votre consommation Carbone</h4>
36
  <img src='data:image/svg+xml;base64,{svg_base64}' alt='svg' width='15' height='15' style='margin-left: 10px;'>
37
  </div>
38
  <br>
 
51
  html_content += f"<p>- Empreinte serveur (via CodeCarbon) : <b>{serveur_emission*1000:.3f}</b> g eq. CO2 ({pourcentage_serveur:.2%})</p>"
52
  html_content += f"<p>- Empreinte IA (via EcoLogits) : <b>{emission_api*1000:.3f}</b> g eq. CO2 ({pourcentage_api:.2%})</p>"
53
 
54
+ html_content += "<h4>Votre équivalence</h4>"
55
  html_content += """
56
  <div style='display: flex; justify-content: space-around;'>
57
  """
 
105
 
106
  table = get_table_empreintes_detailed()
107
  table.replace({0.00: '-'}, inplace=True)
108
+ styled_df = table[['Consommation Totale']].rename(columns={'Consommation Totale': 'Consommation totale (g eqCo2)'})
109
+ styled_df = styled_df.style.applymap(color_scale, subset=['Consommation totale (g eqCo2)'])
110
 
111
+ html_content += """
112
+ <style>
113
+ .centered-table {
114
+ margin-left: auto;
115
+ margin-right: auto;
116
+ border-collapse: collapse;
117
+ width: 80%;
118
+ }
119
+ .centered-table th, .centered-table td {
120
+ border: 1px solid #ddd;
121
+ padding: 8px;
122
+ text-align: left;
123
+ }
124
+ .centered-table th {
125
+ background-color: #f2f2f2;
126
+ }
127
+ </style>
128
+ """
129
+
130
+ html_content += """
131
+ <h2>DÉTAIL PAR TÂCHE</h2>
132
+ <div style="overflow-x:auto;">
133
+ """
134
+
135
+ html_content += styled_df.set_table_attributes('class="centered-table"').to_html()
136
 
137
  html_content += """
138
+ </div>
139
  """
 
140
 
141
  serveur_emission = st.session_state['emission'].stop()
142
  emission_api = sum([value["el"] for value in st.session_state["partial_emissions"].values()])
 
147
  pourcentage_serveur = serveur_emission / total_emission
148
 
149
  df = pd.DataFrame({"Catégorie": ["Identification + dessin", "IA (extraction pp + dialogue)"], "valeur": [pourcentage_serveur, pourcentage_api]})
150
+ color_scale_alt = alt.Scale(domain=['Identification + dessin', 'IA (extraction pp + dialogue)'], range=['#011166', '#63abdf'])
151
+
152
  base = alt.Chart(df).encode(
153
  theta=alt.Theta(field="valeur", type="quantitative", stack=True),
154
+ color=alt.Color(field="Catégorie", type="nominal",scale=color_scale_alt)
155
  )
156
 
157
  pie = base.mark_arc(outerRadius=100)
158
+ text = base.mark_text(radius=150, fill="black",align='center', baseline='middle',fontSize=14).encode(alt.Text(field="valeur", type="quantitative", format=".2%"))
159
 
160
  chart = alt.layer(pie, text, data=df).resolve_scale(theta="independent")
161
 
 
162
  html_content += """
163
  <h2>SYNTHESE (Dialogue IA et non IA)</h2>
164
  """
 
166
  with open("chart.png", "rb") as image_file:
167
  encoded_image = base64.b64encode(image_file.read()).decode()
168
 
169
+ html_content += f'<div style="text-align:center;"><img src="data:image/png;base64,{encoded_image}" alt="Pie chart"></div>'
170
 
171
  return html_content
172
 
partie_prenante_carte.py CHANGED
@@ -337,7 +337,7 @@ def display_pp():
337
  st.session_state["not_pp"] = ""
338
 
339
 
340
- st.header("Identifier et animer vos parties prenantes")
341
  #set brand name and description
342
  brand_name = st.text_input("Nom de la marque", st.session_state["Nom de la marque"])
343
  st.session_state["Nom de la marque"] = brand_name
 
337
  st.session_state["not_pp"] = ""
338
 
339
 
340
+ st.title("IDENTIFIER ET ANIMER VOS PARTIES PRENANTES")
341
  #set brand name and description
342
  brand_name = st.text_input("Nom de la marque", st.session_state["Nom de la marque"])
343
  st.session_state["Nom de la marque"] = brand_name
temp.html CHANGED
The diff for this file is too large to render. See raw diff