MMOON commited on
Commit
df1c813
·
verified ·
1 Parent(s): 71d9eb4

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +97 -0
app.py ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from referentials import REFERENTIALS # Import des exigences depuis le fichier referentials.py
3
+ from PyPDF2 import PdfReader # Pour extraire le texte des CV en PDF
4
+ from pocketgroq import GroqProvider # Assurez-vous d'installer et configurer cette bibliothèque
5
+
6
+ # Initialisation du fournisseur Groq
7
+ def get_groq_provider():
8
+ if "api_key" not in st.session_state or not st.session_state.api_key:
9
+ st.error("Veuillez entrer votre clé API Groq.")
10
+ return None
11
+ return GroqProvider(api_key=st.session_state.api_key)
12
+
13
+ # Extraction de texte depuis un fichier PDF
14
+ def extract_text_from_pdf(file):
15
+ try:
16
+ reader = PdfReader(file)
17
+ text = " ".join(page.extract_text() for page in reader.pages if page.extract_text())
18
+ return text
19
+ except Exception as e:
20
+ st.error(f"Erreur lors de l'extraction du texte : {str(e)}")
21
+ return None
22
+
23
+ # Analyse du CV avec les exigences du référentiel et Groq
24
+ def analyze_cv_with_groq(cv_text, referential):
25
+ groq = get_groq_provider()
26
+ if not groq:
27
+ return "Erreur : clé API non fournie."
28
+
29
+ # Charger les exigences du référentiel
30
+ referential_data = REFERENTIALS.get(referential, {})
31
+ general_requirements = referential_data.get("General_Requirements", {})
32
+ qualifications = referential_data.get("Qualifications", {})
33
+ audit_experience = referential_data.get("Audit_Experience", {})
34
+ advanced_requirements = referential_data.get("Advanced_Requirements", {})
35
+
36
+ # Construire le prompt pour l'API Groq
37
+ prompt = f"""
38
+ Vous êtes un expert en évaluation des compétences selon les référentiels GFSI ({referential}).
39
+ Analysez ce CV pour vérifier sa conformité avec les exigences suivantes :
40
+
41
+ Général :
42
+ {general_requirements}
43
+
44
+ Qualifications :
45
+ {qualifications}
46
+
47
+ Expérience en audit :
48
+ {audit_experience}
49
+
50
+ Exigences avancées :
51
+ {advanced_requirements}
52
+
53
+ Contenu du CV :
54
+ {cv_text}
55
+
56
+ Fournissez une analyse détaillée en identifiant :
57
+ 1. Les exigences remplies.
58
+ 2. Les lacunes ou non-conformités.
59
+ 3. Des recommandations pour combler les lacunes.
60
+ """
61
+
62
+ try:
63
+ return groq.generate(prompt, max_tokens=1000, temperature=0.5, use_cot=True)
64
+ except Exception as e:
65
+ st.error(f"Erreur lors de l'analyse du CV : {str(e)}")
66
+ return None
67
+
68
+ # Interface utilisateur Streamlit
69
+ def main():
70
+ st.title("Analyse de CV selon les référentiels GFSI")
71
+ st.markdown("""
72
+ Cette application permet d'évaluer un CV en fonction des référentiels GFSI tels que BRCGS, FSSC 22000, et IFS.
73
+ Téléchargez un CV en PDF, sélectionnez un référentiel, et lancez l'analyse.
74
+ """)
75
+
76
+ # Entrée clé API
77
+ api_key = st.text_input("Entrez votre clé API Groq :", type="password")
78
+ if api_key:
79
+ st.session_state.api_key = api_key
80
+
81
+ # Téléversement de fichier PDF
82
+ uploaded_file = st.file_uploader("Téléchargez un fichier PDF (CV)", type="pdf")
83
+ referential = st.selectbox("Sélectionnez un référentiel", list(REFERENTIALS.keys()))
84
+
85
+ if uploaded_file and referential:
86
+ # Extraire le texte du CV
87
+ cv_text = extract_text_from_pdf(uploaded_file)
88
+ if cv_text:
89
+ st.markdown("### Résultat de l'analyse")
90
+ analysis = analyze_cv_with_groq(cv_text, referential)
91
+ if analysis:
92
+ st.text_area("Analyse générée :", analysis, height=300)
93
+ else:
94
+ st.error("Impossible d'extraire le texte du CV. Vérifiez que le fichier PDF est lisible.")
95
+
96
+ if __name__ == "__main__":
97
+ main()