import os import pandas as pd import chainlit as cl from pinecone import Pinecone from chainlit.input_widget import Select, TextInput from chainlit import user_session async def connexion_vector_database_secteurs(): os.environ['PINECONE_API_KEY'] = os.environ['PINECONE_API_KEY'] os.environ['PINECONE_INDEX_NAME'] = os.environ['PINECONE_INDEX_NAME'] pc = Pinecone(api_key=os.environ["PINECONE_API_KEY"]) index = pc.Index(index_name=os.environ['PINECONE_INDEX_NAME']) allsecteurs = index.query( top_k=515, vector= [0] * 768, # embedding dimension namespace='', include_metadata=True, include_values=True, filter={'categorie': {'$eq': 'inpiSecteur'}} ) secteurs = [] for i in range(0,len(allsecteurs['matches'])): secteurs.append(str(allsecteurs['matches'][i]['metadata']['activiteprincipale']) + " " + str(allsecteurs['matches'][i]['metadata']['activitesecondaire'])) return secteurs async def homeRome(): app_user = cl.user_session.get("user") welcomeUser = app_user.identifier welcomeUserArray = welcomeUser.split('@') welcomeUserStr = welcomeUserArray[0].replace('.',' ') await cl.Message(f"> Bonjour {welcomeUserStr}").send() fileCompetences = "./public/referentiel_competence.csv" df_allcompetences = pd.read_csv(fileCompetences) df_competences = df_allcompetences[['libelle_competence']].copy() df_competences = df_competences.sort_values(by=['libelle_competence']) competences_list = df_competences['libelle_competence'].tolist() competences_list.sort() competences_list.insert(0, "") cl.user_session.set("arraySettingsComp", competences_list) settings = await cl.ChatSettings( [ Select( id="competence", label="Compétences", values=competences_list, initial_index=0, ), TextInput(id="competenceInput", label="ou saisir une compétence voire des objectifs pédagogiques", placeholder="ou saisir une compétence voire des objectifs pédagogiques", tooltip="saisir une compétence voire des objectifs pédagogiques"), ] ).send() value = settings["competence"] if len(value) < 2: warning = [ cl.Image(name="Warning", size="small", display="inline", path="./public/warning.png") ] await cl.Message(author="Datapcc : 🌐🌐🌐",content="1️⃣ Cliquez sur le bouton dont l'image suit, dans le prompt, pour commencer à élaborer une note sectorielle de la chaîne documentaire APCC!").send() await cl.Message(author="Datapcc : 🌐🌐🌐",content="", elements=warning).send() await cl.Message(author="Datapcc : 🌐🌐🌐",content="2️⃣ Puis sélectionnez ou saisissez une compétence ou des objectifs pédagogiques. Et vous êtes prêt!\n\n🔗 Plateforme de feedback et de fil d'activité : https://cloud.getliteral.ai/").send() contextChat = cl.user_session.get("contextChatBot") if not contextChat: contextChat = df_competences.to_string(index = False) cl.user_session.set("contextDFCOMPChatBot", df_competences.to_string(index = False)) return contextChat async def homeEsco(): app_user = cl.user_session.get("user") welcomeUser = app_user.identifier welcomeUserArray = welcomeUser.split('@') welcomeUserStr = welcomeUserArray[0].replace('.',' ') await cl.Message(f"> Bonjour {welcomeUserStr}").send() fileCompetences = "./public/escoCompetencesAppellation.csv" df_allcompetences = pd.read_csv(fileCompetences) df_competences = df_allcompetences[['compétence']].copy() df_competences = df_competences.sort_values(by=['compétence']) competences_list = df_competences['compétence'].tolist() competences_list.sort() competences_list.insert(0, "") cl.user_session.set("arraySettingsComp", competences_list) settings = await cl.ChatSettings( [ Select( id="competence", label="Compétences", values=competences_list, initial_index=0, ), TextInput(id="competenceInput", label="ou saisir une compétence voire un métier en lien avec le développement durable", placeholder="ou saisir une compétence voire un métier en lien avec le développement durable", tooltip="saisir une compétence voire un métier en lien avec le développement durable"), ] ).send() value = settings["competence"] if len(value) < 2: warning = [ cl.Image(name="Warning", size="small", display="inline", path="./public/warning.png") ] await cl.Message(author="Datapcc : 🌐🌐🌐",content="1️⃣ Cliquez sur le bouton dont l'image suit, dans le prompt, pour commencer à élaborer une analyse des compétences liées au développement durable!").send() await cl.Message(author="Datapcc : 🌐🌐🌐",content="", elements=warning).send() await cl.Message(author="Datapcc : 🌐🌐🌐",content="2️⃣ Puis sélectionnez ou saisissez une compétence ou un métier en lien avec le développement durable. Et vous êtes prêt!\n\n🔗 Plateforme de feedback et de fil d'activité : https://cloud.getliteral.ai/").send() contextChat = cl.user_session.get("contextChatBot") if not contextChat: contextChat = df_competences.to_string(index = False) cl.user_session.set("contextDFCOMPChatBot", df_competences.to_string(index = False)) return contextChat async def homeRne(): app_user = cl.user_session.get("user") welcomeUser = app_user.identifier welcomeUserArray = welcomeUser.split('@') welcomeUserStr = welcomeUserArray[0].replace('.',' ') await cl.Message(f"> Bonjour {welcomeUserStr}").send() secteurs_list = await connexion_vector_database_secteurs() secteurs_list.sort() secteurs_list.insert(0, "") df_secteurs = pd.DataFrame(secteurs_list) cl.user_session.set("arraySettingsComp", secteurs_list) settings = await cl.ChatSettings( [ Select( id="competence", label="Secteurs", values=secteurs_list, initial_index=0, ), TextInput(id="competenceInput", label="ou saisir un secteur d'activités", placeholder="ou saisir un secteur d'activités", tooltip="saisir un secteur d'activités"), ] ).send() value = settings["competence"] if len(value) < 2: warning = [ cl.Image(name="Warning", size="small", display="inline", path="./public/warning.png") ] await cl.Message(author="Datapcc : 🌐🌐🌐",content="1️⃣ Cliquez sur le bouton dont l'image suit, dans le prompt, pour commencer à élaborer une liste d'entreprises du secteur d'activités de votre choix!").send() await cl.Message(author="Datapcc : 🌐🌐🌐",content="", elements=warning).send() await cl.Message(author="Datapcc : 🌐🌐🌐",content="2️⃣ Puis sélectionnez ou saisissez un secteur d'activités. Et vous êtes prêt!\n\n🔗 Plateforme de feedback et de fil d'activité : https://cloud.getliteral.ai/").send() contextChat = cl.user_session.get("contextChatBot") if not contextChat: contextChat = df_secteurs.to_string(index = False) cl.user_session.set("contextDFCOMPChatBot", df_secteurs.to_string(index = False)) return contextChat