import streamlit as st from referentials import REFERENTIALS # Chargement des référentiels depuis un fichier from PyPDF2 import PdfReader from pocketgroq import GroqProvider # Fonction pour obtenir le fournisseur Groq def get_groq_provider(): if "api_key" not in st.session_state or not st.session_state.api_key: st.error("Veuillez entrer votre clé API Groq.") return None return GroqProvider(api_key=st.session_state.api_key) # Extraction de texte depuis un PDF def extract_text_from_pdf(file): try: reader = PdfReader(file) text = " ".join(page.extract_text() for page in reader.pages if page.extract_text()) return text except Exception as e: st.error(f"Erreur lors de l'extraction du texte : {str(e)}") return None # Analyse du CV avec Groq et référentiel def analyze_cv_with_groq(cv_text, referential): groq = get_groq_provider() if not groq: return "Erreur : clé API non fournie." referential_data = REFERENTIALS.get(referential, {}) general_requirements = referential_data.get("General_Requirements", {}) qualifications = referential_data.get("Qualifications", {}) audit_experience = referential_data.get("Audit_Experience", {}) advanced_requirements = referential_data.get("Advanced_Requirements", {}) prompt = f""" Vous êtes un expert en évaluation des compétences selon les référentiels GFSI ({referential}). Analysez ce CV, sans citer le nom du candidat (toujours faire référence en le nommant : le candidat), pour vérifier sa conformité avec les exigences suivantes : Général : {general_requirements} Qualifications : {qualifications} Expérience en audit : {audit_experience} Exigences avancées : {advanced_requirements} Contenu du CV : {cv_text} Fournissez une analyse détaillée rédigée en langue française , de manière prefessionnelle et complète, en identifiant : 1. Les exigences remplies. 2. Les lacunes ou non-conformités. 3. Des recommandations pour combler les lacunes par rapports aux exigences strictes du référentiel. Il faut rester au plus proche des exigences des référentiels , ne pas ajouter des exigences, toujours faire une vérification sur la base de la chain of thoughts avec un réévaluation a chaque fois pour confirmer qu'il s'agit bien d'exigences demandés par le referentiel choisi dans REFERENTIALS.keys il ne faut evaluer le cv que sur le referentiel choisi , il ne faut pas mélanger les référentiels """ try: return groq.generate(prompt, max_tokens=1000, temperature=0.2, use_cot=True) except Exception as e: st.error(f"Erreur lors de l'analyse du CV : {str(e)}") return None # Génération d'une conclusion def generate_conclusion(analysis): if "non-conformité" in analysis: return "Le candidat répond partiellement aux exigences du référentiel sélectionné. Des améliorations spécifiques sont recommandées." else: return "Le candidat satisfait pleinement aux exigences du référentiel sélectionné." # Interface utilisateur principale def main(): st.title("Analyse de CV selon les référentiels GFSI") st.markdown("""
Utilisez cet outil pour évaluer un CV selon les référentiels tels que BRCGS, FSSC 22000, et IFS.