QuentinL52's picture
Update src/crew/crew_pool.py
6ee44e5 verified
raw
history blame
2.69 kB
import json
from crewai import Crew, Process
from .agents import report_generator_agent, skills_extractor_agent, experience_extractor_agent, project_extractor_agent, education_extractor_agent, ProfileBuilderAgent, informations_personnelle_agent, reconversion_detector_agent
from .tasks import generate_report_task
from typing import List
def run_interview_analysis(conversation_history: list, job_description_text: str, analyzer_model, rag_handler) -> str:
"""
Analyse l'intégralité de la conversation et génère un rapport de feedback.
Cette fonction est conçue pour être appelée en arrière-plan.
"""
structured_analysis = analyzer_model.run_full_analysis(conversation_history, job_description_text)
rag_feedback = []
if structured_analysis.get("intent_analysis"):
for intent in structured_analysis["intent_analysis"]:
query = f"Conseils pour un candidat qui cherche à {intent['labels'][0]}"
rag_feedback.extend(rag_handler.get_relevant_feedback(query))
if structured_analysis.get("sentiment_analysis"):
for sentiment_group in structured_analysis["sentiment_analysis"]:
for sentiment in sentiment_group:
if sentiment['label'] == 'stress' and sentiment['score'] > 0.6:
rag_feedback.extend(rag_handler.get_relevant_feedback("gestion du stress en entretien"))
unique_feedback = list(set(rag_feedback))
interview_crew = Crew(
agents=[report_generator_agent],
tasks=[generate_report_task],
process=Process.sequential,
verbose=False,
telemetry=False
)
final_report = interview_crew.kickoff(inputs={
'structured_analysis_data': json.dumps(structured_analysis, indent=2),
'rag_contextual_feedback': "\n".join(unique_feedback)
})
return final_report
def analyse_cv(cv_content: str) -> json:
crew = Crew(
agents=[
informations_personnelle_agent,
skills_extractor_agent,
experience_extractor_agent,
project_extractor_agent,
education_extractor_agent,
reconversion_detector_agent,
ProfileBuilderAgent
],
tasks=[
task_extract_informations,
task_extract_skills,
task_extract_experience,
task_extract_projects,
task_extract_education,
task_detect_reconversion,
task_build_profile
],
process=Process.sequential,
verbose=False,
telemetry=False
)
result = crew.kickoff(inputs={"cv_content": cv_content})
return result