MMOON commited on
Commit
771fc4c
·
verified ·
1 Parent(s): ac0749c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -18
app.py CHANGED
@@ -2,10 +2,14 @@ import streamlit as st
2
  from PyPDF2 import PdfReader
3
  import pandas as pd
4
  from groq import Groq # Assurez-vous que la bibliothèque `groq` est installée correctement
 
5
 
6
  # Fonction pour configurer le client Groq
7
  def get_groq_client(api_key):
8
- """Initialise et renvoie un client Groq avec la clé API."""
 
 
 
9
  try:
10
  return Groq(api_key=api_key)
11
  except Exception as e:
@@ -14,6 +18,10 @@ def get_groq_client(api_key):
14
 
15
  # Extraction de texte depuis un PDF
16
  def extract_text_from_pdf(file):
 
 
 
 
17
  try:
18
  reader = PdfReader(file)
19
  text = " ".join(page.extract_text() for page in reader.pages if page.extract_text())
@@ -24,6 +32,10 @@ def extract_text_from_pdf(file):
24
 
25
  # Analyse du CV avec l'API Groq et référentiel
26
  def analyze_cv_with_groq(cv_text, referential, groq_client, model="llama-3.1-70b-versatile"):
 
 
 
 
27
  referential_data = REFERENTIALS.get(referential, {})
28
  general_requirements = referential_data.get("General_Requirements", {})
29
  qualifications = referential_data.get("Qualifications", {})
@@ -67,13 +79,21 @@ def analyze_cv_with_groq(cv_text, referential, groq_client, model="llama-3.1-70b
67
 
68
  # Génération d'une conclusion
69
  def generate_conclusion(analysis):
70
- if "non-conformité" in analysis:
 
 
 
 
71
  return "Le candidat répond partiellement aux exigences du référentiel sélectionné. Des améliorations spécifiques sont recommandées."
72
  else:
73
  return "Le candidat satisfait pleinement aux exigences du référentiel sélectionné."
74
 
75
  # Interface utilisateur principale
76
  def main():
 
 
 
 
77
  st.title("Analyse de CV selon les référentiels GFSI")
78
  st.markdown("""
79
  Bienvenue sur l'outil d'analyse de CV GFSI. Utilisez cet outil pour évaluer un CV selon les référentiels tels que BRCGS, FSSC 22000, et IFS.
@@ -91,25 +111,34 @@ def main():
91
 
92
  # Chargement du fichier PDF
93
  uploaded_file = st.file_uploader("Téléchargez un fichier PDF (CV)", type="pdf")
 
 
 
 
 
94
  referential = st.selectbox("Sélectionnez un référentiel", list(REFERENTIALS.keys()))
95
-
96
- if uploaded_file and referential:
97
- cv_text = extract_text_from_pdf(uploaded_file)
98
- if cv_text:
99
- st.markdown("### Résultat de l'analyse")
100
- analysis = analyze_cv_with_groq(cv_text, referential, groq_client)
101
- if analysis:
102
- st.markdown(f"<div style='font-size:16px;line-height:1.6;'>{analysis}</div>", unsafe_allow_html=True)
103
- conclusion = generate_conclusion(analysis)
104
- st.markdown(f"""
105
- <div style="background-color:#dff0d8;padding:10px;border-radius:5px;margin-top:20px;">
106
- <strong>Conclusion :</strong> {conclusion}
107
- </div>
108
- """, unsafe_allow_html=True)
 
 
 
 
109
  else:
110
- st.error("Impossible d'extraire le texte du CV. Vérifiez que le fichier PDF est lisible.")
111
  else:
112
- st.info("Veuillez télécharger un fichier PDF et sélectionner un référentiel pour lancer l'analyse.")
113
 
114
  if __name__ == "__main__":
115
  main()
 
2
  from PyPDF2 import PdfReader
3
  import pandas as pd
4
  from groq import Groq # Assurez-vous que la bibliothèque `groq` est installée correctement
5
+ from referentials import REFERENTIALS # Importation des référentiels
6
 
7
  # Fonction pour configurer le client Groq
8
  def get_groq_client(api_key):
9
+ """
10
+ Initialise et renvoie un client Groq avec la clé API.
11
+ Vérifie que la clé API est valide avant de renvoyer le client.
12
+ """
13
  try:
14
  return Groq(api_key=api_key)
15
  except Exception as e:
 
18
 
19
  # Extraction de texte depuis un PDF
20
  def extract_text_from_pdf(file):
21
+ """
22
+ Extrait le texte d'un fichier PDF.
23
+ Renvoie le contenu texte extrait ou signale une erreur.
24
+ """
25
  try:
26
  reader = PdfReader(file)
27
  text = " ".join(page.extract_text() for page in reader.pages if page.extract_text())
 
32
 
33
  # Analyse du CV avec l'API Groq et référentiel
34
  def analyze_cv_with_groq(cv_text, referential, groq_client, model="llama-3.1-70b-versatile"):
35
+ """
36
+ Analyse le texte d'un CV par rapport aux exigences d'un référentiel GFSI.
37
+ Utilise l'API Groq pour générer une analyse détaillée.
38
+ """
39
  referential_data = REFERENTIALS.get(referential, {})
40
  general_requirements = referential_data.get("General_Requirements", {})
41
  qualifications = referential_data.get("Qualifications", {})
 
79
 
80
  # Génération d'une conclusion
81
  def generate_conclusion(analysis):
82
+ """
83
+ Génère une conclusion basée sur l'analyse du CV.
84
+ Vérifie la présence de "non-conformité" dans le texte pour déterminer si des lacunes existent.
85
+ """
86
+ if "non-conformité" in analysis.lower():
87
  return "Le candidat répond partiellement aux exigences du référentiel sélectionné. Des améliorations spécifiques sont recommandées."
88
  else:
89
  return "Le candidat satisfait pleinement aux exigences du référentiel sélectionné."
90
 
91
  # Interface utilisateur principale
92
  def main():
93
+ """
94
+ Interface principale Streamlit pour l'analyse des CV selon les référentiels GFSI.
95
+ Permet à l'utilisateur de fournir une clé API, de télécharger un CV, et de sélectionner un référentiel.
96
+ """
97
  st.title("Analyse de CV selon les référentiels GFSI")
98
  st.markdown("""
99
  Bienvenue sur l'outil d'analyse de CV GFSI. Utilisez cet outil pour évaluer un CV selon les référentiels tels que BRCGS, FSSC 22000, et IFS.
 
111
 
112
  # Chargement du fichier PDF
113
  uploaded_file = st.file_uploader("Téléchargez un fichier PDF (CV)", type="pdf")
114
+ if not uploaded_file:
115
+ st.info("Veuillez télécharger un fichier PDF pour continuer.")
116
+ return
117
+
118
+ # Sélection du référentiel
119
  referential = st.selectbox("Sélectionnez un référentiel", list(REFERENTIALS.keys()))
120
+ if not referential:
121
+ st.warning("Veuillez sélectionner un référentiel pour continuer.")
122
+ return
123
+
124
+ # Extraction et analyse du texte du CV
125
+ cv_text = extract_text_from_pdf(uploaded_file)
126
+ if cv_text:
127
+ st.markdown("### Résultat de l'analyse")
128
+ analysis = analyze_cv_with_groq(cv_text, referential, groq_client)
129
+ if analysis:
130
+ # Affichage des résultats
131
+ st.markdown(f"<div style='font-size:16px;line-height:1.6;'>{analysis}</div>", unsafe_allow_html=True)
132
+ conclusion = generate_conclusion(analysis)
133
+ st.markdown(f"""
134
+ <div style="background-color:#dff0d8;padding:10px;border-radius:5px;margin-top:20px;">
135
+ <strong>Conclusion :</strong> {conclusion}
136
+ </div>
137
+ """, unsafe_allow_html=True)
138
  else:
139
+ st.error("Une erreur est survenue lors de l'analyse du CV. Veuillez réessayer.")
140
  else:
141
+ st.error("Impossible d'extraire le texte du CV. Vérifiez que le fichier PDF est lisible.")
142
 
143
  if __name__ == "__main__":
144
  main()