|
import os |
|
import json |
|
import bcrypt |
|
import pandas as pd |
|
import numpy as np |
|
import plotly.express as px |
|
import plotly.graph_objects as go |
|
from plotly.subplots import make_subplots |
|
import matplotlib.pyplot as plt |
|
from wordcloud import WordCloud |
|
from typing import List |
|
from pathlib import Path |
|
from langchain_openai import ChatOpenAI |
|
from langchain.schema.runnable.config import RunnableConfig |
|
from langchain.schema import StrOutputParser |
|
from langchain_core.prompts import ChatPromptTemplate |
|
|
|
from langchain.agents import AgentExecutor |
|
from langchain.agents.agent_types import AgentType |
|
from langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent, create_csv_agent |
|
|
|
import chainlit as cl |
|
from chainlit.input_widget import TextInput, Select, Switch, Slider |
|
|
|
from deep_translator import GoogleTranslator |
|
from IPython.display import display |
|
|
|
@cl.password_auth_callback |
|
def auth_callback(username: str, password: str): |
|
auth = json.loads(os.environ['CHAINLIT_AUTH_LOGIN']) |
|
ident = next(d['ident'] for d in auth if d['ident'] == username) |
|
pwd = next(d['pwd'] for d in auth if d['ident'] == username) |
|
resultLogAdmin = bcrypt.checkpw(username.encode('utf-8'), bcrypt.hashpw(ident.encode('utf-8'), bcrypt.gensalt())) |
|
resultPwdAdmin = bcrypt.checkpw(password.encode('utf-8'), bcrypt.hashpw(pwd.encode('utf-8'), bcrypt.gensalt())) |
|
resultRole = next(d['role'] for d in auth if d['ident'] == username) |
|
if resultLogAdmin and resultPwdAdmin and resultRole == "admindatapcc": |
|
return cl.User( |
|
identifier=ident + " : 🧑💼 Admin Datapcc", metadata={"role": "admin", "provider": "credentials"} |
|
) |
|
elif resultLogAdmin and resultPwdAdmin and resultRole == "userdatapcc": |
|
return cl.User( |
|
identifier=ident + " : 🧑🎓 User Datapcc", metadata={"role": "user", "provider": "credentials"} |
|
) |
|
|
|
def create_agent(filename: str): |
|
""" |
|
Create an agent that can access and use a large language model (LLM). |
|
|
|
Args: |
|
filename: The path to the CSV file that contains the data. |
|
|
|
Returns: |
|
An agent that can access and use the LLM. |
|
""" |
|
|
|
|
|
os.environ['OPENAI_API_KEY'] = os.environ['OPENAI_API_KEY'] |
|
llm = ChatOpenAI(temperature=0, model="gpt-4o-2024-05-13") |
|
|
|
|
|
df = pd.read_csv(filename) |
|
|
|
|
|
return create_csv_agent(llm, filename, verbose=False, allow_dangerous_code=True, handle_parsing_errors=True, agent_type=AgentType.OPENAI_FUNCTIONS) |
|
|
|
def query_agent(agent, query): |
|
""" |
|
Query an agent and return the response as a string. |
|
|
|
Args: |
|
agent: The agent to query. |
|
query: The query to ask the agent. |
|
|
|
Returns: |
|
The response from the agent as a string. |
|
""" |
|
|
|
prompt = ( |
|
""" |
|
For the following query, if it requires drawing a table, reply as follows: |
|
{"table": {"columns": ["column1", "column2", ...], "data": [[value1, value2, ...], [value1, value2, ...], ...]}} |
|
|
|
If the query requires creating a bar chart, reply as follows: |
|
{"bar": {"columns": ["A", "B", "C", ...], "data": [25, 24, 10, ...]}} |
|
|
|
If the query requires creating a line chart, reply as follows: |
|
{"line": {"columns": ["A", "B", "C", ...], "data": [25, 24, 10, ...]}} |
|
|
|
There can only be two types of chart, "bar" and "line". |
|
|
|
If it is just asking a question that requires neither, reply as follows: |
|
{"answer": "answer"} |
|
Example: |
|
{"answer": "The title with the highest rating is 'Gilead'"} |
|
|
|
If you do not know the answer, reply as follows: |
|
{"answer": "I do not know."} |
|
|
|
Return all output as a string. |
|
|
|
All strings in "columns" list and data list, should be in double quotes, |
|
|
|
For example: {"columns": ["title", "ratings_count"], "data": [["Gilead", 361], ["Spider's Web", 5164]]} |
|
|
|
Lets think step by step. |
|
|
|
Below is the query. |
|
Query: |
|
""" |
|
+ query |
|
) |
|
|
|
|
|
response = agent.invoke(prompt) |
|
|
|
|
|
return response.__str__() |
|
|
|
def decode_response(response: str) -> dict: |
|
"""This function converts the string response from the model to a dictionary object. |
|
|
|
Args: |
|
response (str): response from the model |
|
|
|
Returns: |
|
dict: dictionary with response data |
|
""" |
|
return json.loads("[" + response + "]") |
|
|
|
def write_response(response_dict: dict): |
|
""" |
|
Write a response from an agent to a Streamlit app. |
|
|
|
Args: |
|
response_dict: The response from the agent. |
|
|
|
Returns: |
|
None. |
|
""" |
|
|
|
|
|
return response_dict["answer"] |
|
|
|
@cl.action_callback("Download") |
|
async def on_action(action): |
|
content = [] |
|
content.append(action.value) |
|
arrayContent = np.array(content) |
|
df = pd.DataFrame(arrayContent) |
|
with open('./' + action.description + '.txt', 'wb') as csv_file: |
|
df.to_csv(path_or_buf=csv_file, index=False,header=False, encoding='utf-8') |
|
elements = [ |
|
cl.File( |
|
name= action.description + ".txt", |
|
path="./" + action.description + ".txt", |
|
display="inline", |
|
), |
|
] |
|
await cl.Message( |
|
content="[Lien] 🔗", elements=elements |
|
).send() |
|
await action.remove() |
|
|
|
@cl.set_chat_profiles |
|
async def chat_profile(): |
|
return [ |
|
cl.ChatProfile(name="Traitement des données d'enquête : «Expé CFA : questionnaire auprès des professionnels de la branche de l'agencement»",markdown_description="Vidéo exploratoire autour de l'événement",icon="/public/logo-ofipe.png",), |
|
] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@cl.on_chat_start |
|
async def on_chat_start(): |
|
await cl.Message(f"> SURVEYIA").send() |
|
elements = [] |
|
df = pd.read_csv('./public/survey.csv') |
|
df_taille = df.groupby('taille_entreprise').size().reset_index(name='obs') |
|
fig_taille = px.pie(df_taille, names='taille_entreprise', values='obs', color='obs', title="La taille des entreprises ayant répondu", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe).update_traces(textposition='inside', textinfo='percent+label').update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_taille", figure=fig_taille, display="inline", size="medium")) |
|
|
|
|
|
df_temps = df.groupby('temps_active_domaine_agencement').size().reset_index(name='obs') |
|
fig_temps = px.pie(df_temps, names='temps_active_domaine_agencement', values='obs', color='obs', title="L’engagement dans le domaine de l’agencement", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe).update_traces(textposition='inside', textinfo='percent+label').update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_temps", figure=fig_temps, display="inline", size="medium")) |
|
|
|
|
|
df_temps_entreprise = df.groupby(['temps_active_domaine_agencement', 'taille_entreprise']).size().reset_index(name='obs') |
|
fig_temps_entreprise = px.bar(df_temps_entreprise, x='temps_active_domaine_agencement', y='obs', color='taille_entreprise', title="L’engagement dans le domaine de l’agencement par taille d'entreprise", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe, text_auto=True).update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_temps_entreprise", figure=fig_temps_entreprise, display="inline", size="medium")) |
|
|
|
df_nb_charge = df.groupby('nombre_chargés_affaires').size().reset_index(name='obs') |
|
fig_nb_charge = px.pie(df_nb_charge, names='nombre_chargés_affaires', values='obs', color='obs', title="Le nombre de chargé.e d’affaires en agencement", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe).update_traces(textposition='inside', textinfo='percent+label').update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_nb_charge", figure=fig_nb_charge, display="inline", size="medium")) |
|
|
|
df_nb_charge_entreprise = df.groupby(['nombre_chargés_affaires', 'taille_entreprise']).size().reset_index(name='obs') |
|
fig_nb_charge_entreprise = px.bar(df_nb_charge_entreprise, x='nombre_chargés_affaires', y='obs', color='taille_entreprise', title="Le nombre de chargé.e d’affaires en agencement par taille d'entreprise", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe, text_auto=True).update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_nb_charge_entreprise", figure=fig_nb_charge_entreprise, display="inline", size="medium")) |
|
|
|
df_nb_charge_engagement = df.groupby(['nombre_chargés_affaires', 'temps_active_domaine_agencement']).size().reset_index(name='obs') |
|
fig_nb_charge_engagement = px.bar(df_nb_charge_engagement, x='nombre_chargés_affaires', y='obs', color='temps_active_domaine_agencement', title="Le nombre de chargé.e d’affaires en agencement par année d'engagement", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe, text_auto=True).update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_nb_charge_entreprise", figure=fig_nb_charge_engagement, display="inline", size="medium")) |
|
|
|
df_statut = df.groupby('fonction_Statut_repondant').size().reset_index(name='obs') |
|
fig_statut = px.bar(df_statut, x='obs', y='fonction_Statut_repondant', orientation='h', color='obs', title="Le profil des répondants", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe, text_auto=True).update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_statut", figure=fig_statut, display="inline", size="medium")) |
|
|
|
df1 = df |
|
df1['principaux_interlocuteurs'] = df1['principaux_interlocuteurs'].str.split(';') |
|
df1 = df1.explode('principaux_interlocuteurs') |
|
df_interlocuteur = df1.groupby('principaux_interlocuteurs').size().reset_index(name='obs') |
|
fig_interlocuteur = px.bar(df_interlocuteur, x='obs', y='principaux_interlocuteurs', orientation='h', color='obs', title="Les principaux interlocuteurs du CAA", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe, text_auto=True).update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_interlocuteur", figure=fig_interlocuteur, display="inline", size="medium")) |
|
|
|
|
|
df_interlocuteur_entreprise = df1.groupby(['principaux_interlocuteurs', 'taille_entreprise']).size().reset_index(name='obs') |
|
fig_interlocuteur_entreprise = px.bar(df_interlocuteur_entreprise, x='obs', y='principaux_interlocuteurs', orientation='h', color='taille_entreprise', title="Les principaux interlocuteurs du CAA par taille d'entreprise", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe, text_auto=True).update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_interlocuteur_entreprise", figure=fig_interlocuteur_entreprise, display="inline", size="medium")) |
|
|
|
df_interlocuteur_nb_charge = df1.groupby(['principaux_interlocuteurs', 'nombre_chargés_affaires']).size().reset_index(name='obs') |
|
fig_interlocuteur_nb_charge = px.bar(df_interlocuteur_nb_charge, x='obs', y='principaux_interlocuteurs', orientation='h', color='nombre_chargés_affaires', title="Les principaux interlocuteurs du CAA par nombre chargé.e d'affaires", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe, text_auto=True).update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_interlocuteur_nb_charge", figure=fig_interlocuteur_nb_charge, display="inline", size="medium")) |
|
|
|
df2 = df |
|
df2['principales_compétences_attendues'] = df2['principales_compétences_attendues'].str.split(';') |
|
df2 = df2.explode('principales_compétences_attendues') |
|
df_competences = df2.groupby('principales_compétences_attendues').size().reset_index(name='obs') |
|
fig_competences = px.bar(df_competences, x='obs', y='principales_compétences_attendues', orientation='h', color='obs', title="Les principales compétences attendues", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe, text_auto=True).update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_competences", figure=fig_competences, display="inline", size="medium")) |
|
|
|
df_competences_entreprise = df2.groupby(['principales_compétences_attendues', 'taille_entreprise']).size().reset_index(name='obs') |
|
fig_competences_entreprise = px.bar(df_competences_entreprise, x='obs', y='principales_compétences_attendues', orientation='h', color='taille_entreprise', title="Les principales compétences attendues par taille d'entreprise", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe, text_auto=True).update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_competences_entreprise", figure=fig_competences_entreprise, display="inline", size="medium")) |
|
|
|
df_competences_nb_charge = df2.groupby(['principales_compétences_attendues', 'nombre_chargés_affaires']).size().reset_index(name='obs') |
|
fig_competences_nb_charge = px.bar(df_competences_nb_charge, x='obs', y='principales_compétences_attendues', orientation='h', color='nombre_chargés_affaires', title="Les principales compétences attendues par nombre chargé.e d'affaires", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe, text_auto=True).update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_competences_nb_charge", figure=fig_competences_nb_charge, display="inline", size="medium")) |
|
|
|
df3 = df |
|
df3['principales_compétences_relationnelles_attendues'] = df3['principales_compétences_relationnelles_attendues'].str.split(';') |
|
df3 = df3.explode('principales_compétences_relationnelles_attendues') |
|
df_competences_relationnelles = df3.groupby('principales_compétences_relationnelles_attendues').size().reset_index(name='obs') |
|
fig_competences_relationnelles = px.bar(df_competences_relationnelles, x='obs', y='principales_compétences_relationnelles_attendues', orientation='h', color='obs', title="Les compétences relationnelles attendues", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe, text_auto=True).update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_competences_relationnelles", figure=fig_competences_relationnelles, display="inline", size="medium")) |
|
|
|
df_competences_relationnelles_entreprise = df3.groupby(['principales_compétences_relationnelles_attendues', 'taille_entreprise']).size().reset_index(name='obs') |
|
fig_competences_relationnelles_entreprise = px.bar(df_competences_relationnelles_entreprise, x='obs', y='principales_compétences_relationnelles_attendues', orientation='h', color='taille_entreprise', title="Les compétences relationnelles attendues par taille d'entreprise", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe, text_auto=True).update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_competences_relationnelles_entreprise", figure=fig_competences_relationnelles_entreprise, display="inline", size="medium")) |
|
|
|
df_competences_relationnelles_nb_charge = df3.groupby(['principales_compétences_relationnelles_attendues', 'nombre_chargés_affaires']).size().reset_index(name='obs') |
|
fig_competences_relationnelles_nb_charge = px.bar(df_competences_relationnelles_nb_charge, x='obs', y='principales_compétences_relationnelles_attendues', orientation='h', color='nombre_chargés_affaires', title="Les compétences relationnelles attendues par nombre chargé.e d'affaires", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe, text_auto=True).update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_competences_relationnelles_nb_charge", figure=fig_competences_relationnelles_nb_charge, display="inline", size="medium")) |
|
|
|
df4 = df |
|
df4['principales_compétences_gestion_attendues'] = df4['principales_compétences_gestion_attendues'].str.split(';') |
|
df4 = df4.explode('principales_compétences_gestion_attendues') |
|
df_competences_gestion = df4.groupby('principales_compétences_gestion_attendues').size().reset_index(name='obs') |
|
fig_competences_gestion = px.bar(df_competences_gestion, x='obs', y='principales_compétences_gestion_attendues', orientation='h', color='obs', title="Les compétences en gestion attendues", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe, text_auto=True).update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_competences_gestion", figure=fig_competences_gestion, display="inline", size="medium")) |
|
|
|
df_competences_gestion_entreprise = df4.groupby(['principales_compétences_gestion_attendues', 'taille_entreprise']).size().reset_index(name='obs') |
|
fig_competences_gestion_entreprise = px.bar(df_competences_gestion_entreprise, x='obs', y='principales_compétences_gestion_attendues', orientation='h', color='taille_entreprise', title="Les compétences en gestion attendues par taille d'entreprise", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe, text_auto=True).update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_competences_gestion_entreprise", figure=fig_competences_gestion_entreprise, display="inline", size="medium")) |
|
|
|
df_competences_gestion_nb_charge = df4.groupby(['principales_compétences_gestion_attendues', 'nombre_chargés_affaires']).size().reset_index(name='obs') |
|
fig_competences_gestion_nb_charge = px.bar(df_competences_gestion_nb_charge, x='obs', y='principales_compétences_gestion_attendues', orientation='h', color='nombre_chargés_affaires', title="Les compétences en gestion attendues par nombre chargé.e d'affaires", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe, text_auto=True).update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_competences_gestion_nb_charge", figure=fig_competences_gestion_nb_charge, display="inline", size="medium")) |
|
|
|
df_difficulte = df.groupby('difficultés_recrutement_chargé').size().reset_index(name='obs') |
|
fig_difficulte = px.pie(df_difficulte, names='difficultés_recrutement_chargé', values='obs', color='obs', title="Difficulté de recruter un CAA", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe).update_traces(textposition='inside', textinfo='percent+label').update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_difficulte", figure=fig_difficulte, display="inline", size="medium")) |
|
|
|
df_formation = df.groupby('organisation_formation').size().reset_index(name='obs') |
|
fig_formation = px.pie(df_formation, names='organisation_formation', values='obs', color='obs', title="Formations organisées pour les CAA", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe).update_traces(textposition='inside', textinfo='percent+label').update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_formation", figure=fig_formation, display="inline", size="medium")) |
|
|
|
df_formation_entreprise = df.groupby(['organisation_formation', 'taille_entreprise']).size().reset_index(name='obs') |
|
fig_formation_entreprise = px.bar(df_formation_entreprise, x='organisation_formation', y='obs', color='taille_entreprise', title="Formations organisées pour les CAA par taille d'entreprise", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe, text_auto=True).update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_formation_entreprise", figure=fig_formation_entreprise, display="inline", size="medium")) |
|
|
|
df_formation_nb_charge = df.groupby(['organisation_formation', 'nombre_chargés_affaires']).size().reset_index(name='obs') |
|
fig_formation_nb_charge = px.bar(df_formation_nb_charge, x='organisation_formation', y='obs', color='nombre_chargés_affaires', title="Formations organisées pour les CAA par nombre chargé.e d'affaires", labels={'obs':'nombre'}, color_discrete_sequence=px.colors.qualitative.Safe, text_auto=True).update_layout(font=dict(size=9,color="RebeccaPurple")) |
|
elements.append(cl.Plotly(name="chart_formation_nb_charge", figure=fig_formation_nb_charge, display="inline", size="medium")) |
|
|
|
|
|
df_activites_autonomie_chiffrage = df.groupby('jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Etude_chiffrage').size().reset_index(name='obs') |
|
df_activites_autonomie_conception = df.groupby('jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Conception_technique').size().reset_index(name='obs') |
|
df_activites_autonomie_gestion = df.groupby('jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Assurer_gestion_administrative_financière').size().reset_index(name='obs') |
|
df_activites_autonomie_MOE = df.groupby('jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Contrôler_mise_en_oeuvre').size().reset_index(name='obs') |
|
df_activites_autonomie_cloturer_affaire = df.groupby('jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Développer_relation_client_suivre_clôturer_affaire').size().reset_index(name='obs') |
|
fig_activites_autonomie = make_subplots(rows=5, cols=1, shared_xaxes=True) |
|
fig_activites_autonomie.add_trace( |
|
go.Bar(x=df_activites_autonomie_chiffrage.obs, y=df_activites_autonomie_chiffrage.jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Etude_chiffrage, orientation='h', textposition='inside', textangle=0, textfont_color='white', name="Etude et Chiffrage"), 1, 1 |
|
) |
|
fig_activites_autonomie.add_trace( |
|
go.Bar(x=df_activites_autonomie_conception.obs, y=df_activites_autonomie_conception.jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Conception_technique, orientation='h', textposition='inside', textangle=0, textfont_color='white', name="Conception technique"), |
|
2, |
|
1, |
|
) |
|
fig_activites_autonomie.add_trace( |
|
go.Bar(x=df_activites_autonomie_gestion.obs, y=df_activites_autonomie_gestion.jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Assurer_gestion_administrative_financière, orientation='h', textposition='inside', textangle=0, textfont_color='white', name="Gestion adm. et fin."), |
|
3, |
|
1, |
|
) |
|
fig_activites_autonomie.add_trace( |
|
go.Bar(x=df_activites_autonomie_MOE.obs, y=df_activites_autonomie_MOE.jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Contrôler_mise_en_oeuvre, orientation='h', textposition='inside', textangle=0, textfont_color='white', name="Contrôler MOE"), |
|
4, |
|
1, |
|
) |
|
fig_activites_autonomie.add_trace( |
|
go.Bar(x=df_activites_autonomie_cloturer_affaire.obs, y=df_activites_autonomie_cloturer_affaire.jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Développer_relation_client_suivre_clôturer_affaire, orientation='h', textposition='inside', textangle=0, textfont_color='white', name="Clôturer affaire"), |
|
5, |
|
1, |
|
) |
|
fig_activites_autonomie.update_layout(title='Activités d\'un CAA junior', xaxis_tickfont_size=10, yaxis_tickfont_size=10, autosize=False, width=600, height=600) |
|
elements.append(cl.Plotly(name="chart_activites_autonomie", figure=fig_activites_autonomie, display="inline", size="medium")) |
|
|
|
df_activites_autonomie_chiffrage_entreprise = df.groupby(['jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Etude_chiffrage', 'taille_entreprise']).size().reset_index(name='obs') |
|
df_activites_autonomie_conception_entreprise = df.groupby(['jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Conception_technique', 'taille_entreprise']).size().reset_index(name='obs') |
|
df_activites_autonomie_gestion_entreprise = df.groupby(['jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Assurer_gestion_administrative_financière', 'taille_entreprise']).size().reset_index(name='obs') |
|
df_activites_autonomie_MOE_entreprise = df.groupby(['jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Contrôler_mise_en_oeuvre', 'taille_entreprise']).size().reset_index(name='obs') |
|
df_activites_autonomie_cloturer_affaire_entreprise = df.groupby(['jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Développer_relation_client_suivre_clôturer_affaire', 'taille_entreprise']).size().reset_index(name='obs') |
|
df_categorized_chiffrage_entreprise = df_activites_autonomie_chiffrage_entreprise.groupby("taille_entreprise", observed=True).agg("sum").reset_index() |
|
|
|
fig_activites_autonomie_entreprise = make_subplots(rows=5, cols=1, shared_xaxes=True) |
|
fig_activites_autonomie_entreprise.add_trace( |
|
go.Bar(x=df_activites_autonomie_chiffrage_entreprise.obs, y=df_activites_autonomie_chiffrage_entreprise.jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Etude_chiffrage, hovertemplate='<b>%{text}</b><br>X : %{x}<br>', text=df_activites_autonomie_chiffrage_entreprise.taille_entreprise, orientation='h', textposition='inside', textangle=0, textfont_color='white', name="Etude et chiffrage"), |
|
1, |
|
1, |
|
) |
|
fig_activites_autonomie_entreprise.add_trace( |
|
go.Bar(x=df_activites_autonomie_conception_entreprise.obs, y=df_activites_autonomie_conception_entreprise.jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Conception_technique, hovertemplate = '<b>%{text}</b><br>X : %{x}<br>', text = df_activites_autonomie_chiffrage_entreprise.taille_entreprise, orientation='h', textposition='inside', textangle=0, textfont_color='white', name="Conception technique"), |
|
2, |
|
1, |
|
) |
|
fig_activites_autonomie_entreprise.add_trace( |
|
go.Bar(x=df_activites_autonomie_gestion_entreprise.obs, y=df_activites_autonomie_gestion_entreprise.jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Assurer_gestion_administrative_financière, hovertemplate = '<b>%{text}</b><br>X : %{x}<br>', text = df_activites_autonomie_gestion_entreprise.taille_entreprise, orientation='h', textposition='inside', textangle=0, textfont_color='white', name="Gestion adm. et fin."), |
|
3, |
|
1, |
|
) |
|
fig_activites_autonomie_entreprise.add_trace( |
|
go.Bar(x=df_activites_autonomie_MOE_entreprise.obs, y=df_activites_autonomie_MOE_entreprise.jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Contrôler_mise_en_oeuvre, hovertemplate = '<b>%{text}</b><br>X : %{x}<br>', text = df_activites_autonomie_MOE_entreprise.taille_entreprise, orientation='h', textposition='inside', textangle=0, textfont_color='white', name="Contrôler MOE"), |
|
4, |
|
1, |
|
) |
|
fig_activites_autonomie_entreprise.add_trace( |
|
go.Bar(x=df_activites_autonomie_cloturer_affaire_entreprise.obs, y=df_activites_autonomie_cloturer_affaire_entreprise.jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Développer_relation_client_suivre_clôturer_affaire, hovertemplate = '<b>%{text}</b><br>X : %{x}<br>', text = df_activites_autonomie_cloturer_affaire_entreprise.taille_entreprise, orientation='h', textposition='inside', textangle=0, textfont_color='white', name="Clôturer affaire"), |
|
5, |
|
1, |
|
) |
|
fig_activites_autonomie_entreprise.update_yaxes(categoryorder='category ascending') |
|
fig_activites_autonomie_entreprise.update_layout(title='Activités d\'un CAA junior par taille entreprise', xaxis_tickfont_size=10, yaxis_tickfont_size=10, autosize=False, width=600, height=600, barmode='stack') |
|
elements.append(cl.Plotly(name="chart_activites_autonomie_entreprise", figure=fig_activites_autonomie_entreprise, display="inline", size="medium")) |
|
|
|
df_activites_autonomie_chiffrage_statut = df.groupby(['jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Etude_chiffrage', 'fonction_Statut_repondant']).size().reset_index(name='obs') |
|
df_activites_autonomie_conception_statut = df.groupby(['jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Conception_technique', 'fonction_Statut_repondant']).size().reset_index(name='obs') |
|
df_activites_autonomie_gestion_statut = df.groupby(['jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Assurer_gestion_administrative_financière', 'fonction_Statut_repondant']).size().reset_index(name='obs') |
|
df_activites_autonomie_MOE_statut = df.groupby(['jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Contrôler_mise_en_oeuvre', 'fonction_Statut_repondant']).size().reset_index(name='obs') |
|
df_activites_autonomie_cloturer_affaire_statut = df.groupby(['jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Développer_relation_client_suivre_clôturer_affaire', 'fonction_Statut_repondant']).size().reset_index(name='obs') |
|
fig_activites_autonomie_statut = make_subplots(rows=5, cols=1, shared_xaxes=True) |
|
fig_activites_autonomie_statut.add_trace( |
|
go.Bar(x=df_activites_autonomie_chiffrage_statut.obs, y=df_activites_autonomie_chiffrage_statut.jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Etude_chiffrage, hovertemplate='<b>%{text}</b><br>X : %{x}<br>', text=df_activites_autonomie_chiffrage_statut.fonction_Statut_repondant, orientation='h', textposition='inside', textangle=0, textfont_color='white', name="Etude et chiffrage"), |
|
1, |
|
1, |
|
) |
|
fig_activites_autonomie_statut.add_trace( |
|
go.Bar(x=df_activites_autonomie_conception_statut.obs, y=df_activites_autonomie_conception_statut.jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Conception_technique, hovertemplate = '<b>%{text}</b><br>X : %{x}<br>', text = df_activites_autonomie_chiffrage_statut.fonction_Statut_repondant, orientation='h', textposition='inside', textangle=0, textfont_color='white', name="Conception technique"), |
|
2, |
|
1, |
|
) |
|
fig_activites_autonomie_statut.add_trace( |
|
go.Bar(x=df_activites_autonomie_gestion_statut.obs, y=df_activites_autonomie_gestion_statut.jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Assurer_gestion_administrative_financière, hovertemplate = '<b>%{text}</b><br>X : %{x}<br>', text = df_activites_autonomie_gestion_statut.fonction_Statut_repondant, orientation='h', textposition='inside', textangle=0, textfont_color='white', name="Gestion adm. et fin."), |
|
3, |
|
1, |
|
) |
|
fig_activites_autonomie_statut.add_trace( |
|
go.Bar(x=df_activites_autonomie_MOE_statut.obs, y=df_activites_autonomie_MOE_statut.jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Contrôler_mise_en_oeuvre, hovertemplate = '<b>%{text}</b><br>X : %{x}<br>', text = df_activites_autonomie_MOE_statut.fonction_Statut_repondant, orientation='h', textposition='inside', textangle=0, textfont_color='white', name="Contrôler MOE"), |
|
4, |
|
1, |
|
) |
|
fig_activites_autonomie_statut.add_trace( |
|
go.Bar(x=df_activites_autonomie_cloturer_affaire_statut.obs, y=df_activites_autonomie_cloturer_affaire_statut.jeune_chargé_activités_exercées_autonomie_autonomie_partielle_ou_non_Développer_relation_client_suivre_clôturer_affaire, hovertemplate = '<b>%{text}</b><br>X : %{x}<br>', text = df_activites_autonomie_cloturer_affaire_statut.fonction_Statut_repondant, orientation='h', textposition='inside', textangle=0, textfont_color='white', name="Clôturer affaire"), |
|
5, |
|
1, |
|
) |
|
fig_activites_autonomie_statut.update_yaxes(categoryorder='category ascending') |
|
fig_activites_autonomie_statut.update_layout(title='Activités d\'un CAA junior par profil des répondants', xaxis_tickfont_size=10, yaxis_tickfont_size=10, autosize=False, width=600, height=600, barmode='stack') |
|
elements.append(cl.Plotly(name="chart_activites_autonomie_statut", figure=fig_activites_autonomie_statut, display="inline", size="medium")) |
|
|
|
content_all = "Tableaux des données de La \"taille des entreprises ayant répondu\"\n" + df_taille.to_string() + "\n\nTableaux des données de \"L’engagement dans le domaine de l’agencement\"\n" + df_temps.to_string() + "\n\nTableaux des données de \"L’engagement dans le domaine de l’agencement\" par taille d'entreprise\n" + df_temps_entreprise.to_string() + "\n\nTableaux des données de \"Le nombre de chargé.e d’affaires en agencement\"\n" + df_nb_charge.to_string() + "\n\nTableaux des données de \"Le nombre de chargé.e d’affaires en agencement par taille d'entreprise\"\n" + df_nb_charge_entreprise.to_string() + "\n\nTableaux des données de \"Le nombre de chargé.e d’affaires en agencement par année d'engagement\"\n" + df_nb_charge_engagement.to_string() + "\n\nTableaux des données de \"Le profil des répondants\"\n" + df_statut.to_string() + "\n\nTableaux des données de \"Les principaux interlocuteurs du CAA\"\n" + df_interlocuteur.to_string() + "\n\nTableaux des données de \"Les principaux interlocuteurs du CAA\" par taille d'entreprise\n" + df_interlocuteur_entreprise.to_string() + "\n\nTableaux des données de \"Les principaux interlocuteurs du CAA\" par nombre chargé.e d'affaires\n" + df_interlocuteur_nb_charge.to_string() + "\n\nTableaux des données de \"Les principales compétences attendues\"\n" + df_competences.to_string() + "\n\nTableaux des données de \"Les principales compétences attendues\" par taille d'entreprise\n" + df_competences_entreprise.to_string() + "\n\nTableaux des données de \"Les principales compétences attendues\" par nombre chargé.e d'affaires\n" + df_competences_nb_charge.to_string() + "\n\nTableaux des données de \"Les compétences relationnelles attendues\"\n" + df_competences_relationnelles.to_string() + "\n\nTableaux des données de \"Les compétences relationnelles attendues par taille entreprise\"\n" + df_competences_relationnelles_entreprise.to_string() + "\n\nTableaux des données de \"Les compétences relationnelles attendues par nombre chargé.e d'affaires\"\n" + df_competences_relationnelles_nb_charge.to_string() + "\n\nTableaux des données de \"Les compétences en gestion attendues\"\n" + df_competences_gestion.to_string() + "\n\nTableaux des données de \"Les compétences en gestion attendues par taille entreprise\"\n" + df_competences_gestion_entreprise.to_string() + "\n\nTableaux des données de \"Les compétences en gestion attendues par nombre chargé.e d'affaires\"\n" + df_competences_gestion_nb_charge.to_string() + "\n\nTableaux des données de \"Difficulté de recruter un CAA\"\n" + df_difficulte.to_string() + "\n\nTableaux des données de \"Formations organisées pour les CAA\"\n" + df_formation.to_string() + "\n\nTableaux des données de \"Formations organisées pour les CAA par taille entreprise\"\n" + df_formation_entreprise.to_string() + "\n\nTableaux des données de \"Formations organisées pour les CAA par nombre chargé.e d'affaires\"\n" + df_formation_nb_charge.to_string() + "\n\nTableaux des données de \"Activités d’un CAA junior : Etude et Chiffrage\"\n" + df_activites_autonomie_chiffrage.to_string() + "\n\nTableaux des données de \"Activités d’un CAA junior : Conception Technique\"\n" + df_activites_autonomie_conception.to_string() + "\n\nTableaux des données de \"Activités d’un CAA junior : Gestion Administrative et Financière\"\n" + df_activites_autonomie_gestion.to_string() + "\n\nTableaux des données de \"Activités d’un CAA junior : Mise en Oeuvre\"\n" + df_activites_autonomie_MOE.to_string() + "\n\nTableaux des données de \"Activités d’un CAA junior : Relation Client et Cloturer Affaire\"\n" + df_activites_autonomie_cloturer_affaire.to_string() + "\n\nTableaux des données de \"Activités d’un CAA junior : Etude et Chiffrage par taille entreprise\"\n" + df_categorized_chiffrage_entreprise.to_string() |
|
content_all_html = "Tableaux des données de La \"taille des entreprises ayant répondu\"\n" + df_taille.to_html() + "\n\nTableaux des données de \"L’engagement dans le domaine de l’agencement\"\n" + df_temps.to_html() + "\n\nTableaux des données de \"L’engagement dans le domaine de l’agencement\" par taille d'entreprise\n" + df_temps_entreprise.to_html() + "\n\nTableaux des données de \"Le nombre de chargé.e d’affaires en agencement\"\n" + df_nb_charge.to_html() + "\n\nTableaux des données de \"Le nombre de chargé.e d’affaires en agencement par taille d'entreprise\"\n" + df_nb_charge_entreprise.to_html() + "\n\nTableaux des données de \"Le nombre de chargé.e d’affaires en agencement par année d'engagement\"\n" + df_nb_charge_engagement.to_html() + "\n\nTableaux des données de \"Le profil des répondants\"\n" + df_statut.to_html() + "\n\nTableaux des données de \"Les principaux interlocuteurs du CAA\"\n" + df_interlocuteur.to_html() + "\n\nTableaux des données de \"Les principaux interlocuteurs du CAA\" par taille d'entreprise\n" + df_interlocuteur_entreprise.to_html() + "\n\nTableaux des données de \"Les principaux interlocuteurs du CAA\" par nombre chargé.e d'affaires\n" + df_interlocuteur_nb_charge.to_html() + "\n\nTableaux des données de \"Les principales compétences attendues\"\n" + df_competences.to_html() + "\n\nTableaux des données de \"Les principales compétences attendues\" par taille d'entreprise\n" + df_competences_entreprise.to_html() + "\n\nTableaux des données de \"Les principales compétences attendues\" par nombre chargé.e d'affaires\n" + df_competences_nb_charge.to_html() + "\n\nTableaux des données de \"Les compétences relationnelles attendues\"\n" + df_competences_relationnelles.to_html() + "\n\nTableaux des données de \"Les compétences relationnelles attendues par taille entreprise\"\n" + df_competences_relationnelles_entreprise.to_html() + "\n\nTableaux des données de \"Les compétences relationnelles attendues par nombre chargé.e d'affaires\"\n" + df_competences_relationnelles_nb_charge.to_html() + "\n\nTableaux des données de \"Les compétences en gestion attendues\"\n" + df_competences_gestion.to_html() + "\n\nTableaux des données de \"Les compétences en gestion attendues par taille entreprise\"\n" + df_competences_gestion_entreprise.to_html() + "\n\nTableaux des données de \"Les compétences en gestion attendues par nombre chargé.e d'affaires\"\n" + df_competences_gestion_nb_charge.to_html() + "\n\nTableaux des données de \"Difficulté de recruter un CAA\"\n" + df_difficulte.to_html() + "\n\nTableaux des données de \"Formations organisées pour les CAA\"\n" + df_formation.to_html() + "\n\nTableaux des données de \"Formations organisées pour les CAA par taille entreprise\"\n" + df_formation_entreprise.to_html() + "\n\nTableaux des données de \"Formations organisées pour les CAA par nombre chargé.e d'affaires\"\n" + df_formation_nb_charge.to_html() + "\n\nTableaux des données de \"Activités d’un CAA junior : Etude et Chiffrage\"\n" + df_activites_autonomie_chiffrage.to_html() + "\n\nTableaux des données de \"Activités d’un CAA junior : Conception Technique\"\n" + df_activites_autonomie_conception.to_html() + "\n\nTableaux des données de \"Activités d’un CAA junior : Gestion Administrative et Financière\"\n" + df_activites_autonomie_gestion.to_html() + "\n\nTableaux des données de \"Activités d’un CAA junior : Mise en Oeuvre\"\n" + df_activites_autonomie_MOE.to_html() + "\n\nTableaux des données de \"Activités d’un CAA junior : Relation Client et Cloturer Affaire\"\n" + df_activites_autonomie_cloturer_affaire.to_html() + "\n\nTableaux des données de \"Activités d’un CAA junior : Etude et Chiffrage par taille entreprise\"\n" + df_activites_autonomie_chiffrage_entreprise.to_html() + df_categorized_chiffrage_entreprise.to_html() |
|
tableau_all = [cl.Text(name="Tableaux", content=content_all_html, display="side")] |
|
await cl.Message(content="📚 Tableaux de toutes les données", elements=tableau_all,).send() |
|
actions = [cl.Action(name="Download", value=content_all, description="download_tableau")] |
|
await cl.Message(content="📥 Télécharger l'ensemble des tableaux de données ayant servi à la datavisualisation", actions=actions).send() |
|
|
|
await cl.Message(content="Datavisualisation de l'enquête des recruteurs des chargé.e.s d'affaires en agencement", elements=elements).send() |
|
|
|
wd_principaux_interlocuteurs = " ".join(i for i in df1.principaux_interlocuteurs) |
|
exclure_mots = ['d', 'du', 'de', 'la', 'des', 'le', 'et', 'est', 'elle', 'une', 'en', 'que', 'aux', 'qui', 'ces', 'les', 'dans', 'sur', 'l', 'un', 'pour', 'par', 'il', 'ou', 'à', 'ce', 'a', 'sont', 'cas', 'plus', 'leur', 'se', 's', 'vous', 'au', 'c', 'aussi', 'toutes', 'autre', 'comme'] |
|
elements_wordcloud_principaux_interlocuteurs = [] |
|
wordcloud_principaux_interlocuteurs = WordCloud(background_color='white', |
|
stopwords=exclure_mots, max_words=80).generate(wd_principaux_interlocuteurs) |
|
fig_wordcloud_principaux_interlocuteurs = plt.figure(1,figsize=(12,15)) |
|
plt.imshow(wordcloud_principaux_interlocuteurs,interpolation="none") |
|
plt.axis('off') |
|
plt.title("Nuage de mots des principaux interlocuteurs") |
|
elements_wordcloud_principaux_interlocuteurs.append(cl.Pyplot(name="plot_wordcloud_principaux_interlocuteurs", figure=fig_wordcloud_principaux_interlocuteurs, size="large", display="inline")) |
|
|
|
options_entreprise1 = ['10 à 50 employés'] |
|
df1_entreprise1 = df1.loc[df1['taille_entreprise'].isin(options_entreprise1)] |
|
wd_principaux_interlocuteurs_entreprise1 = " ".join(i for i in df1_entreprise1.principaux_interlocuteurs) |
|
wordcloud_principaux_interlocuteurs_entreprise1 = WordCloud(background_color='white', |
|
stopwords=exclure_mots, max_words=80).generate(wd_principaux_interlocuteurs_entreprise1) |
|
fig_wordcloud_principaux_interlocuteurs_entreprise1 = plt.figure(1,figsize=(12,15)) |
|
plt.imshow(wordcloud_principaux_interlocuteurs_entreprise1,interpolation="none") |
|
plt.axis('off') |
|
plt.title("Nuage de mots des principaux interlocuteurs entreprise 10 à 50 employés") |
|
elements_wordcloud_principaux_interlocuteurs.append(cl.Pyplot(name="plot_wordcloud_principaux_interlocuteurs_entreprise_10_50", figure=fig_wordcloud_principaux_interlocuteurs_entreprise1, size="large", display="inline")) |
|
|
|
options_entreprise2 = ['51 à 100 employés'] |
|
df1_entreprise2 = df1.loc[df1['taille_entreprise'].isin(options_entreprise2)] |
|
wd_principaux_interlocuteurs_entreprise2 = " ".join(i for i in df1_entreprise2.principaux_interlocuteurs) |
|
wordcloud_principaux_interlocuteurs_entreprise2 = WordCloud(background_color='white', |
|
stopwords=exclure_mots, max_words=80).generate(wd_principaux_interlocuteurs_entreprise2) |
|
fig_wordcloud_principaux_interlocuteurs_entreprise2 = plt.figure(1,figsize=(12,15)) |
|
plt.imshow(wordcloud_principaux_interlocuteurs_entreprise2,interpolation="none") |
|
plt.axis('off') |
|
plt.title("Nuage de mots des principaux interlocuteurs entreprise 51 à 100 employés") |
|
elements_wordcloud_principaux_interlocuteurs.append(cl.Pyplot(name="plot_wordcloud_principaux_interlocuteurs_entreprise_51_100", figure=fig_wordcloud_principaux_interlocuteurs_entreprise2, size="large", display="inline")) |
|
|
|
options_entreprise3 = ['Moins de 10 employés'] |
|
df1_entreprise3 = df1.loc[df1['taille_entreprise'].isin(options_entreprise3)] |
|
wd_principaux_interlocuteurs_entreprise3 = " ".join(i for i in df1_entreprise3.principaux_interlocuteurs) |
|
wordcloud_principaux_interlocuteurs_entreprise3 = WordCloud(background_color='white', |
|
stopwords=exclure_mots, max_words=80).generate(wd_principaux_interlocuteurs_entreprise3) |
|
fig_wordcloud_principaux_interlocuteurs_entreprise3 = plt.figure(1,figsize=(12,15)) |
|
plt.imshow(wordcloud_principaux_interlocuteurs_entreprise3,interpolation="none") |
|
plt.axis('off') |
|
plt.title("Nuage de mots des principaux interlocuteurs entreprise Moins de 10 employés") |
|
elements_wordcloud_principaux_interlocuteurs.append(cl.Pyplot(name="plot_wordcloud_principaux_interlocuteurs_entreprise_moins_10", figure=fig_wordcloud_principaux_interlocuteurs_entreprise3, size="large", display="inline")) |
|
|
|
options_entreprise4 = ['Plus de 100 employés'] |
|
df1_entreprise4 = df1.loc[df1['taille_entreprise'].isin(options_entreprise4)] |
|
wd_principaux_interlocuteurs_entreprise4 = " ".join(i for i in df1_entreprise4.principaux_interlocuteurs) |
|
wordcloud_principaux_interlocuteurs_entreprise4 = WordCloud(background_color='white', |
|
stopwords=exclure_mots, max_words=80).generate(wd_principaux_interlocuteurs_entreprise4) |
|
fig_wordcloud_principaux_interlocuteurs_entreprise4 = plt.figure(1,figsize=(12,15)) |
|
plt.imshow(wordcloud_principaux_interlocuteurs_entreprise4,interpolation="none") |
|
plt.axis('off') |
|
plt.title("Nuage de mots des principaux interlocuteurs entreprise Plus de 100 employés") |
|
elements_wordcloud_principaux_interlocuteurs.append(cl.Pyplot(name="plot_wordcloud_principaux_interlocuteurs_entreprise_plus_100", figure=fig_wordcloud_principaux_interlocuteurs_entreprise4, size="large", display="inline")) |
|
|
|
await cl.Message( content="Nuage de mots des principaux interlocuteurs et croisement avec la taille des entreprises",elements=elements_wordcloud_principaux_interlocuteurs,).send() |
|
|
|
@cl.on_message |
|
async def on_message(message: cl.Message): |
|
await cl.Message(f"> SURVEYIA").send() |
|
agent = create_agent("./public/surveyia.csv") |
|
cb = cl.AsyncLangchainCallbackHandler() |
|
try: |
|
res = await agent.acall("Réponds en langue française à la question suivante : " + message.content, callbacks=[cb]) |
|
await cl.Message(author="COPILOT",content=GoogleTranslator(source='auto', target='fr').translate(res['output'])).send() |
|
except ValueError as e: |
|
res = str(e) |
|
resArray = res.split(":") |
|
ans = '' |
|
if str(res).find('parsing') != -1: |
|
for i in range(2,len(resArray)): |
|
ans += resArray[i] |
|
await cl.Message(author="COPILOT",content=ans.replace("`","")).send() |
|
else: |
|
await cl.Message(author="COPILOT",content="Reformulez votre requête, s'il vous plait 😃").send() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|