datacipen commited on
Commit
c363603
1 Parent(s): 05fd13d

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +17 -42
main.py CHANGED
@@ -6,7 +6,7 @@ from langchain.schema import StrOutputParser
6
  from langchain.schema.runnable import Runnable, RunnablePassthrough, RunnableLambda
7
  from langchain.schema.runnable.config import RunnableConfig
8
  from langchain.schema import StrOutputParser
9
- from langchain.document_loaders.csv_loader import CSVLoader
10
  import os
11
  import pandas as pd
12
  import numpy as np
@@ -20,7 +20,7 @@ from deep_translator import GoogleTranslator
20
  import chainlit as cl
21
 
22
  def library():
23
- return "Exemple de requêtes sur les données des emplois'.\n\nQ1 : donne les 10 métiers principaux. Génère le résultat dans un tableau avec les compétences représentatives correspondant à chaque emploi.\nQ2 : donne les 10 compétences principales. Génère le résultat dans un tableau avec les emplois représentatifs correspondant à chaque compétence.\nQ3 : Donne les 10 compétences principales. Génère le résultat dans un tableau avec les niveaux de qualification représentatifs correspondant à chaque compétence.\nQ4 : donne les 10 compétences principales. Génère le résultat dans un tableau avec les salaires représentatifs correspondant à chaque compétence.\nQ5 : donne les 10 compétences principales. Génère le résultat dans un tableau avec les contrats représentatifs correspondant à chaque compétence.\nQ6 : donne les 10 contrats principaux. Génère le résultat dans un tableau avec les emplois représentatifs correspondant à chaque contrat."
24
  @cl.author_rename
25
  def rename(orig_author: str):
26
  rename_dict = {"AgentExecutor": "Agent conversationnel", "Error": "Réponse de l'assistant", "DatapccSkillStream": "Copilot", "load_memory_variables": "Historique de conversation 💬", "Retriever": "Agent conversationnel", "StuffDocumentsChain": "Chaîne de documents", "LLMChain": "Agent", "HuggingFaceEndpoint": "Réponse de Mistral AI 🤖"}
@@ -28,7 +28,7 @@ def rename(orig_author: str):
28
 
29
  @cl.on_chat_start
30
  async def on_chat_start():
31
- await cl.Message(f"> Votre assistant conversationnel vous permet d'analyser les données du marché de l'emploi par formation, issues de France Travail.").send()
32
  listPrompts_name = f"Liste des requêtes"
33
  prompt_elements = []
34
  prompt_elements.append(
@@ -39,43 +39,20 @@ async def on_chat_start():
39
  name="You",
40
  url="https://cipen.univ-gustave-eiffel.fr/typo3conf/ext/cipen_package/Resources/Public/Dataviz/datalab/Venus/logo-ofipe.jpg",
41
  ).send()
42
-
43
- loader = CSVLoader(file_path="./public/FilesMarcheEmploi.csv", csv_args={"delimiter": ",", "fieldnames": ["Label", "Number"],},)
44
 
45
- data = loader.load()
46
- actions = []
47
- for j in range(0,len(data)):
48
- datas = data[j].page_content
49
- datasArray = datas.split(':')
50
- label = datasArray[1].replace('Number','')
51
- value = datasArray[2]
52
- actions.append(cl.Action(name="selectRome", value=value, label=label),)
53
-
54
- selectRome = await cl.AskActionMessage(
55
- content="Sélectionnez une formation pour laquelle le COPILOT vous assistera :",
56
- actions=actions,
57
- timeout=600,
58
- ).send()
59
-
60
- if selectRome and selectRome.get("name") == "selectRome":
61
- await cl.Message(
62
- content=f"Vous pouvez utiliser le COPILOT pour répondre à vos questions sur : \"{selectRome.get('label')}\", Codes ROME : \"{selectRome.get('value')}\"",
63
- ).send()
64
- selectRomes = selectRome.get('value')
65
- os.environ['HUGGINGFACEHUB_API_TOKEN'] = os.environ['HUGGINGFACEHUB_API_TOKEN']
66
- repo_id = "mistralai/Mixtral-8x7B-Instruct-v0.1"
67
-
68
- llm = HuggingFaceEndpoint(
69
- repo_id=repo_id, temperature=1.0
70
- )
71
- agent = create_csv_agent(
72
- llm,
73
- "https://cipen.univ-gustave-eiffel.fr/typo3conf/ext/cipen_package/Resources/Public/Dataviz/datalab/crossfilterings/EmploisRome/" + selectRomes[1:] + ".csv",
74
- verbose=False,
75
- agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
76
- max_iterations=5,
77
- )
78
- cl.user_session.set("runnable", agent)
79
 
80
  @cl.on_message
81
  async def on_message(message: cl.Message):
@@ -83,9 +60,7 @@ async def on_message(message: cl.Message):
83
  runnable = cl.user_session.get("runnable") # type: Runnable
84
  cb = cl.AsyncLangchainCallbackHandler()
85
  try:
86
- res = await runnable.acall("Tu es un spécialiste du marché de l'emploi. Tu es en capacité d'analyser les emplois et d'en décrire les caractéristiques par rapport aux types de contrat, par rapport aux compétences professionnelles, par rapport aux niveaux de qualification. Réponds en langue française à la question suivante : " + message.content + "\nSi l'information est manquante ou de type nan, fais un projection ou une estimation.\nDétaille la réponse en faisant une analyse complète sachant que la colonne Poste correspond à la colonne des emplois, la colonne Contrat correspond à la colonne des types de contrat, la colonne Savoir correspond à la colonne des compétences professionnelles demandées par les employeurs, la colonne Localisation correspond à la colonne des départements, la colonne Niveau correspond à la colonne des niveaux de qualification.", callbacks=[cb])
87
- translated = GoogleTranslator(source='auto', target='de').translate("keep it up, you are awesome")
88
-
89
  await cl.Message(author="COPILOT",content=GoogleTranslator(source='auto', target='fr').translate(res['output'])).send()
90
  listPrompts_name = f"Liste des requêtes"
91
  prompt_elements = []
 
6
  from langchain.schema.runnable import Runnable, RunnablePassthrough, RunnableLambda
7
  from langchain.schema.runnable.config import RunnableConfig
8
  from langchain.schema import StrOutputParser
9
+ from langchain_community.document_loaders.csv_loader import CSVLoader
10
  import os
11
  import pandas as pd
12
  import numpy as np
 
20
  import chainlit as cl
21
 
22
  def library():
23
+ return "Exemple de requêtes sur les données de l'enquête.\n\nQ1 : Quels sont les équipements préférentiels des étudiant.e.s?\nQ2 : Quels sont les 3 outils numériques principaux de l'université pour le travail universitaire?\nQ3 : Quels sont les outils numériques de l'université préférés des étudiant.e.s?\nQ4 : Quels sont les réseaux sociaux préférés des étudiant.e.s?\nQ5 : Quels sont les outils numériques de l'université préférés des étudiant.e.s pour communiquer?\nQ6 : Quels sont les outils numériques de l'université préférés des étudiant.e.s pour le travail universitaire?\nQ7 : Quel est l'usage du mail de l'université?\nQ8 : Quel est l'usage de l'ENT de l'université?\nQ9 : Donne le pourcentage d'étudiant.e.s en licence3 qui utilise souvent Moodle?\nQ10 : Donne le pourcentage d'étudiant.e.s en licence1 qui utilise souvent le mail?\nQ11 : Donne le pourcentage d'étudiant.e.s en licence1 de la filière Sciences économiques qui utilise souvent le mail?\nQ12 : Pourquoi les étudiants utilisent WhatsApp?\nQ13 : Pourquoi les étudiants utilisent Discord?\nQ14 : Quels avantages représentent les outils numériques?\nQ15 : Quelles sont les principales difficultés?\nQ16 : Compare l'usage de l'ENT par rapport à l'usage de l'email."
24
  @cl.author_rename
25
  def rename(orig_author: str):
26
  rename_dict = {"AgentExecutor": "Agent conversationnel", "Error": "Réponse de l'assistant", "DatapccSkillStream": "Copilot", "load_memory_variables": "Historique de conversation 💬", "Retriever": "Agent conversationnel", "StuffDocumentsChain": "Chaîne de documents", "LLMChain": "Agent", "HuggingFaceEndpoint": "Réponse de Mistral AI 🤖"}
 
28
 
29
  @cl.on_chat_start
30
  async def on_chat_start():
31
+ await cl.Message(f"> Votre assistant conversationnel vous permet d'analyser les données de l'enquête sur les usages du numérique par les étudiant.e.s Licence").send()
32
  listPrompts_name = f"Liste des requêtes"
33
  prompt_elements = []
34
  prompt_elements.append(
 
39
  name="You",
40
  url="https://cipen.univ-gustave-eiffel.fr/typo3conf/ext/cipen_package/Resources/Public/Dataviz/datalab/Venus/logo-ofipe.jpg",
41
  ).send()
42
+ os.environ['HUGGINGFACEHUB_API_TOKEN'] = os.environ['HUGGINGFACEHUB_API_TOKEN']
43
+ repo_id = "mistralai/Mixtral-8x7B-Instruct-v0.1"
44
 
45
+ llm = HuggingFaceEndpoint(
46
+ repo_id=repo_id, temperature=1.0
47
+ )
48
+ agent = create_csv_agent(
49
+ llm,
50
+ "https://cipen.univ-gustave-eiffel.fr/typo3conf/ext/cipen_package/Resources/Public/Dataviz/datalab/crossfilterings/enquete-DClic-juin2022-dataviz-ord1.csv",
51
+ verbose=True,
52
+ agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
53
+ max_iterations=5,
54
+ )
55
+ cl.user_session.set("runnable", agent)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
 
57
  @cl.on_message
58
  async def on_message(message: cl.Message):
 
60
  runnable = cl.user_session.get("runnable") # type: Runnable
61
  cb = cl.AsyncLangchainCallbackHandler()
62
  try:
63
+ res = await runnable.acall("Réponds en langue française à la question suivante :\n" + message.content + "\nDétaille la réponse en faisant une analyse complète.", callbacks=[cb])
 
 
64
  await cl.Message(author="COPILOT",content=GoogleTranslator(source='auto', target='fr').translate(res['output'])).send()
65
  listPrompts_name = f"Liste des requêtes"
66
  prompt_elements = []