Spaces:
Running
Running
File size: 10,662 Bytes
fab5009 d8aac0f 34c79da fab5009 34c79da fab5009 d8aac0f 34c79da d8aac0f fab5009 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 |
import streamlit as st
from folium import Map, Marker, Icon, Popup
from streamlit_folium import folium_static
from data_manager import get_data
from data_manager_bziiit import *
import os
from dotenv import load_dotenv
import openai
###############################################################################################
# PARTIE 0 : Récupération des données API bziiit et Bordeaux Métropole
###############################################################################################
def fetch_data():
data, _ = get_data() # Récupération des données de Bordeaux Métropole
bziiit_data = get_bziiit_data() # Récupération des données de Bziiit
return data, bziiit_data
###############################################################################################
# PARTIE 1 : Le sélecteur d'entreprise
###############################################################################################
def display_company_selection_for_materiality(data):
# Get a list of all company names
companies = sorted(list(set(record['nom_courant_denomination'] for record in data)), key=str.lower)
# Add default selection prompt to the beginning of the list
companies.insert(0, "Sélectionner l'entreprise engagée à découvrir")
selected_company = st.selectbox('Sélectionnez une entreprise', companies, index=0)
# If the default selection is still selected, return None
if selected_company == "Sélectionner l'entreprise engagée à découvrir":
return None
return selected_company # Return the selected company name
# Uniformiser les noms de champs
def normalize_company_name(record):
# Gère les différences de noms de champs entre les APIs
if 'nom_courant_denomination' in record:
return record['nom_courant_denomination'].strip().lower()
elif 'name' in record:
return record['name'].strip().lower()
return 'Unknown'
###############################################################################################
# PARTIE 3 : CONNEXION API sonar-medium-online + AFFICHAGE DE LA CONVERSATION
###############################################################################################
# chargement du fichier .env
load_dotenv(".streamlit/.env")
def perform_chat(messages):
YOUR_API_KEY = os.getenv("API_TOKEN_PERPLEXITYAI")
if YOUR_API_KEY is None:
raise Exception("API key not found. Please check your .env configuration.")
client = openai.OpenAI(api_key=YOUR_API_KEY, base_url="https://api.perplexity.ai")
response_stream = client.chat.completions.create(
model="sonar-medium-online",
messages=messages,
stream=True
)
assistant_response = ""
for chunk in response_stream:
assistant_response += chunk.choices[0].delta.content
st.write(assistant_response)
###############################################################################################
# PARTIE 4 : PARTIES PRENANTES
###############################################################################################
def display_materiality_partiesprenantes(selected_company, data, bziiit_data):
st.markdown("### Les parties prenantes identifiées par l'IA bziiit / Perplexity - sonar-medium-online")
option = st.radio(
"Choisissez une option",
('Définition', 'Parties prenantes prioritaires', 'Parties prenantes détaillées'),
index=0
)
if option == 'Définition':
st.write("""
**L'identification et l'implication des parties prenantes dans une démarche de Responsabilité Sociale des Entreprises (RSE) sont cruciales pour le succès et la légitimité des actions entreprises. Voici une synthèse en trois points clés de leur importance :
1. **Identification des parties prenantes pour une stratégie RSE inclusive**:
- L'identification des parties prenantes est la première étape essentielle pour comprendre qui sont les acteurs impactés par les activités de l'entreprise et qui peuvent influencer ses décisions[4].
- Cela inclut un large éventail d'acteurs tels que les employés, clients, fournisseurs, actionnaires, communautés locales, ONG et l'État[4][5].
- La norme ISO 26000 recommande d'intégrer les parties prenantes à tous les niveaux de la démarche RSE, ce qui permet de reconnaître et de répondre à leurs intérêts et attentes[3][5].
2. **Hiérarchisation et cartographie pour prioriser les actions**:
- Après l'identification, il est important de qualifier et de hiérarchiser les parties prenantes pour déterminer leur influence et leurs attentes, ainsi que les impacts de l'entreprise sur eux[4].
- La cartographie des parties prenantes permet de visualiser et de prioriser les relations en fonction de leur importance stratégique pour l'entreprise[2].
- Cette étape aide à concentrer les ressources et les efforts sur les parties prenantes clés et à élaborer des stratégies d'engagement adaptées[2][4].
3. **Engagement des parties prenantes pour une RSE efficace et crédible**:
- L'engagement des parties prenantes est fondamental pour construire une démarche RSE crédible et pour obtenir leur soutien[4][5].
- Il s'agit d'établir un dialogue constructif, de définir des objectifs SMART et de mettre en place des actions concrètes pour répondre aux attentes des parties prenantes[4].
- L'implication active des parties prenantes internes et externes favorise la transparence, renforce la confiance et améliore l'acceptabilité sociale des activités de l'entreprise[6].
En somme, l'identification et l'implication des parties prenantes sont des processus interdépendants qui permettent aux entreprises de développer une stratégie RSE cohérente, de gérer les risques et d'optimiser leur impact social et environnemental.
Citations:
[1] https://www.greenflex.com/actualites/articles/rse-parties-prenantes/
[2] https://datavalue-consulting.com/cartographie-partie-prenante-rse/
[3] https://www.novethic.fr/entreprises-responsables/qui-sont-les-parties-prenantes-de-lentreprise.html
[4] https://www.cabinetdesaintfront.fr/publications/comment-engager-ses-parties-prenantes/
[5] https://www.labellucie.com/parties-prenantes-rse
[6] https://blog.hubspot.fr/marketing/parties-prenantes-rse
[7] https://www.erudit.org/fr/revues/mi/2013-v17-n2-mi0560/1015400ar/
[8] https://www.civitime.com/rse/parties-prenantes
[9] https://speaknact.fr/fr/blog/article/561--impliquer-ses-parties-prenantes-pour-une-rse-efficace
[10] https://www.abeautifulgreen.com/le-role-des-parties-prenantes-et-la-rse/
[11] https://www.cairn.info/revue-management-et-avenir-2014-2-page-73.htm
[12] https://www.squadeasy.com/blog/qui-sont-les-parties-prenantes-dune-entreprise
[13] https://www.associatheque.fr/fr/fichiers/bao/fiche-memo-RSE-DD-les-etapes-de-la-demarche.pdf
[14] https://greenly.earth/fr-fr/blog/guide-entreprise/rse-partie-prenantes
[15] https://www.veolia.com/fr/veolia-group/engagement-rse/engagement-parties-prenantes
""")
elif option == 'Parties prenantes prioritaires':
company_data = next((item for item in data if item['nom_courant_denomination'].strip().lower() == selected_company.strip().lower()), None)
bziiit_brand_data = next((brand for brand in bziiit_data if brand['type'] == 'brand' and brand['name'].strip().lower() == selected_company.strip().lower()), None)
if company_data and bziiit_brand_data:
run_perplexity_chat_parties_prenantes_prioritaires(company_data['nom_courant_denomination'], bziiit_brand_data['description'], company_data['action_rse'])
elif option == 'Parties prenantes détaillées':
company_data = next((item for item in data if item['nom_courant_denomination'].strip().lower() == selected_company.strip().lower()), None)
bziiit_brand_data = next((brand for brand in bziiit_data if brand['type'] == 'brand' and brand['name'].strip().lower() == selected_company.strip().lower()), None)
if company_data and bziiit_brand_data:
run_perplexity_chat_parties_prenantes_detailed(company_data['nom_courant_denomination'], bziiit_brand_data['description'], company_data['action_rse'])
###############################################################################################
# PARTIE 5 : FONCTIONS PARTIES PRENANTES
###############################################################################################
def run_perplexity_chat_parties_prenantes_prioritaires(company_name, company_description, company_rse_action):
question = f"En tant que spécialiste RSE et notamment de l'identification des parties prenantes d'une entreprise, tu es chargé d'identifier les parties prenantes prioritaires de l'entreprise dont : le nom est {company_name}, l'activité est {company_description}, ses principales actions RSE sont {company_rse_action}. Affiche les résultats TOUJOURS EN FRANCAIS classés par catégories de parties prenantes et cite les sources en bas de ta réponse."
messages = [
{"role": "system", "content": "You are an artificial intelligence assistant and you need to engage in a helpful, detailed, polite conversation with a user."},
{"role": "user", "content": question}
]
st.markdown("**Question posée :**")
st.write(question)
st.markdown("**Réponse IA :**")
perform_chat(messages)
def run_perplexity_chat_parties_prenantes_detailed(company_name, company_description, company_rse_action):
question = f"En tant que spécialiste RSE et notamment de l'identification des parties prenantes d'une entreprise, tu es chargé d'identifier l'ensemble des parties prenantes de l'entreprise dont : le nom est {company_name}, l'activité est {company_description}, ses principales actions RSE sont {company_rse_action},. Affiche les résultats détaillés TOUJOURS EN FRANCAIS classés par catégories de parties prenantes et cite les sources en bas de ta réponse."
messages = [
{"role": "system", "content": "You are an artificial intelligence assistant and you need to engage in a helpful, detailed, polite conversation with a user."},
{"role": "user", "content": question}
]
st.markdown("**Question posée :**")
st.write(question)
st.markdown("**Réponse IA :**")
perform_chat(messages)
|