datacipen commited on
Commit
e084b32
·
verified ·
1 Parent(s): dadd67e

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +34 -13
main.py CHANGED
@@ -36,6 +36,7 @@ def Chargement_des_datas(profile):
36
  return json.loads(Path(file_path).read_text())
37
 
38
  @cl.step(type="tool", show_input=True)
 
39
  def Chargement_des_datas_web(profile):
40
  if profile == "Toutes les formations":
41
  file_path='./public/html-MIPI-MITIC.txt'
@@ -62,6 +63,7 @@ def connexion_France_Travail():
62
  client_secret=os.getenv('POLE_EMPLOI_CLIENT_SECRET'))
63
  return client
64
 
 
65
  def API_France_Travail_ROME(romeListArray):
66
  client = connexion_France_Travail()
67
  todayDate = datetime.datetime.today()
@@ -87,6 +89,7 @@ def API_France_Travail_ROME(romeListArray):
87
  results_df = pd.DataFrame(results)
88
  return results_df
89
 
 
90
  def API_France_Travail_Metier(metier):
91
  client = connexion_France_Travail()
92
  todayDate = datetime.datetime.today()
@@ -122,6 +125,7 @@ def Generation_reponse(client, data, question):
122
  max_tokens=1024,
123
  )
124
 
 
125
  def Generation_completion(client, data, question):
126
  response = client.chat.complete(
127
  model="Mistral-Nemo",
@@ -150,7 +154,7 @@ async def Affichage_reponse(response):
150
  return msg
151
 
152
  @cl.step(type="tool", show_input=True)
153
- async def Affichage_question_contexte(answer, question):
154
  try:
155
  indexDeb = answer.index("Question en relation avec le sujet")
156
  indexDebLength = len("Question en relation avec le sujet")
@@ -167,12 +171,12 @@ async def Affichage_question_contexte(answer, question):
167
  extraction = answer[indexDeb + indexDebLength + 1: indexFin]
168
 
169
  actions = [
170
- cl.Action(name="Activer", value=extraction + "?", description="Activer la question en relation avec le contexte.")
171
  ]
172
  await cl.Message(author="COPILOT", content="🌐 Question en relation avec le contexte : " + extraction + "?", actions=actions).send()
173
 
174
  actionsWeb = [
175
- cl.Action(name="Site web", value=question, description="Rechercher sur le site web de l'université.")
176
  ]
177
  await cl.Message(author="COPILOT", content="🌐 Rechercher sur le site web de l'université : " + question, actions=actionsWeb).send()
178
 
@@ -185,11 +189,15 @@ async def on_action(action):
185
  await cl.Message(author="COPILOT", content="📊 Connexion à Mistral").send()
186
  response = Generation_reponse(client, data, question)
187
 
188
- msg = await Affichage_reponse(response)
189
-
 
 
 
 
190
  answer = msg.content
191
 
192
- await Affichage_question_contexte(answer, question)
193
 
194
  @cl.action_callback("Site web")
195
  async def on_action(action):
@@ -218,11 +226,15 @@ async def on_action(action):
218
 
219
  response = Generation_reponse(client, answer, question)
220
 
221
- msg = await Affichage_reponse(response)
222
-
 
 
 
 
223
  result = msg.content
224
 
225
- await Affichage_question_contexte(result, question)
226
 
227
 
228
  @cl.set_chat_profiles
@@ -458,18 +470,27 @@ async def main(message: cl.Message):
458
  rt.end(outputs={"output": msg})
459
 
460
  answer = msg.content
461
- await Affichage_question_contexte(answer, message.content)
462
  else:
463
  codeRomeStr = message.content
464
  if codeRomeStr.find('-') != -1 or isinstance(codeRomeStr[-4], int) or isinstance(codeRomeStr[1:5], int):
465
  await cl.Message(author="COPILOT", content="📊 Connexion à l'API France Travail").send()
466
- df_FT = API_France_Travail_ROME(codeRomeStr)
 
 
 
467
  elif isinstance(codeRomeStr[-4], int):
468
  await cl.Message(author="COPILOT", content="📊 Connexion à l'API France Travail").send()
469
- df_FT = API_France_Travail_ROME(codeRomeStr)
 
 
 
470
  else:
471
  await cl.Message(author="COPILOT", content="📊 Connexion à l'API France Travail").send()
472
- df_FT = API_France_Travail_Metier(codeRomeStr)
 
 
 
473
 
474
  await cl.Message(author="COPILOT", content="📈 Tableau des emplois les plus représentatifs : " + cl.user_session.get("chat_profile")).send()
475
  df_intitule = df_FT.groupby('intitule').size().reset_index(name='obs')
 
36
  return json.loads(Path(file_path).read_text())
37
 
38
  @cl.step(type="tool", show_input=True)
39
+ @ls.traceable(run_type="tool", name="Retrieve Context : chargement des données Web")
40
  def Chargement_des_datas_web(profile):
41
  if profile == "Toutes les formations":
42
  file_path='./public/html-MIPI-MITIC.txt'
 
63
  client_secret=os.getenv('POLE_EMPLOI_CLIENT_SECRET'))
64
  return client
65
 
66
+ @traceable(run_type="chain", name="API France Travail : recherche par code ROME",)
67
  def API_France_Travail_ROME(romeListArray):
68
  client = connexion_France_Travail()
69
  todayDate = datetime.datetime.today()
 
89
  results_df = pd.DataFrame(results)
90
  return results_df
91
 
92
+ @traceable(run_type="chain", name="API France Travail : recherche par métier type",)
93
  def API_France_Travail_Metier(metier):
94
  client = connexion_France_Travail()
95
  todayDate = datetime.datetime.today()
 
125
  max_tokens=1024,
126
  )
127
 
128
+ @ls.traceable(run_type="llm", name="Connexion à Mistral : paramétrages de la conversation")
129
  def Generation_completion(client, data, question):
130
  response = client.chat.complete(
131
  model="Mistral-Nemo",
 
154
  return msg
155
 
156
  @cl.step(type="tool", show_input=True)
157
+ async def Affichage_question_contexte(answer, question, contexte):
158
  try:
159
  indexDeb = answer.index("Question en relation avec le sujet")
160
  indexDebLength = len("Question en relation avec le sujet")
 
171
  extraction = answer[indexDeb + indexDebLength + 1: indexFin]
172
 
173
  actions = [
174
+ cl.Action(name="Activer", value=extraction + "?", description=contexte)
175
  ]
176
  await cl.Message(author="COPILOT", content="🌐 Question en relation avec le contexte : " + extraction + "?", actions=actions).send()
177
 
178
  actionsWeb = [
179
+ cl.Action(name="Site web", value=question, description=contexte)
180
  ]
181
  await cl.Message(author="COPILOT", content="🌐 Rechercher sur le site web de l'université : " + question, actions=actionsWeb).send()
182
 
 
189
  await cl.Message(author="COPILOT", content="📊 Connexion à Mistral").send()
190
  response = Generation_reponse(client, data, question)
191
 
192
+ #msg = await Affichage_reponse(response)
193
+ app_inputs = {"input": question}
194
+ with ls.trace("Réponse de l'assistant sur les données MIS", "chain", project_name=action.description, inputs=app_inputs) as rt:
195
+ msg = await Affichage_reponse(response, langsmith_extra={"metadata": {"session_id": session_id}})
196
+ rt.end(outputs={"output": msg})
197
+
198
  answer = msg.content
199
 
200
+ await Affichage_question_contexte(answer, question, action.description)
201
 
202
  @cl.action_callback("Site web")
203
  async def on_action(action):
 
226
 
227
  response = Generation_reponse(client, answer, question)
228
 
229
+ #msg = await Affichage_reponse(response)
230
+ app_inputs = {"input": question}
231
+ with ls.trace("Réponse de l'assistant sur les données Web", "chain", project_name=action.description, inputs=app_inputs) as rt:
232
+ msg = await Affichage_reponse(response, langsmith_extra={"metadata": {"session_id": session_id}})
233
+ rt.end(outputs={"output": msg})
234
+
235
  result = msg.content
236
 
237
+ await Affichage_question_contexte(result, question, action.description)
238
 
239
 
240
  @cl.set_chat_profiles
 
470
  rt.end(outputs={"output": msg})
471
 
472
  answer = msg.content
473
+ await Affichage_question_contexte(answer, message.content, cl.user_session.get("chat_profile"))
474
  else:
475
  codeRomeStr = message.content
476
  if codeRomeStr.find('-') != -1 or isinstance(codeRomeStr[-4], int) or isinstance(codeRomeStr[1:5], int):
477
  await cl.Message(author="COPILOT", content="📊 Connexion à l'API France Travail").send()
478
+ app_inputs = {"input": codeRomeStr}
479
+ with ls.trace("Réponse de l'assistant sur les données emplois France Travail par code ROME", "chain", project_name=cl.user_session.get("chat_profile"), inputs=app_inputs) as rt:
480
+ df_FT = API_France_Travail_ROME(codeRomeStr)
481
+ rt.end(outputs={"output": df_FT})
482
  elif isinstance(codeRomeStr[-4], int):
483
  await cl.Message(author="COPILOT", content="📊 Connexion à l'API France Travail").send()
484
+ app_inputs = {"input": codeRomeStr}
485
+ with ls.trace("Réponse de l'assistant sur les données emplois France Travail par code ROME", "chain", project_name=cl.user_session.get("chat_profile"), inputs=app_inputs) as rt:
486
+ df_FT = API_France_Travail_ROME(codeRomeStr)
487
+ rt.end(outputs={"output": df_FT})
488
  else:
489
  await cl.Message(author="COPILOT", content="📊 Connexion à l'API France Travail").send()
490
+ app_inputs = {"input": codeRomeStr}
491
+ with ls.trace("Réponse de l'assistant sur les données emplois France Travail par métier type", "chain", project_name=cl.user_session.get("chat_profile"), inputs=app_inputs) as rt:
492
+ df_FT = API_France_Travail_Metier(codeRomeStr)
493
+ rt.end(outputs={"output": df_FT})
494
 
495
  await cl.Message(author="COPILOT", content="📈 Tableau des emplois les plus représentatifs : " + cl.user_session.get("chat_profile")).send()
496
  df_intitule = df_FT.groupby('intitule').size().reset_index(name='obs')