prisantos commited on
Commit
afe87e5
1 Parent(s): 9f0e250

[style] language adjustment

Browse files
Files changed (2) hide show
  1. src/agents.py +55 -62
  2. src/tasks.py +39 -52
src/agents.py CHANGED
@@ -3,25 +3,28 @@ from textwrap import dedent
3
  from crewai import Agent
4
  from crewai_tools import ScrapeWebsiteTool, SerperDevTool
5
 
 
6
  search_tool = SerperDevTool()
7
  scrape_tool = ScrapeWebsiteTool()
8
 
9
 
10
- # Agente consultor de carreira
11
  class MultiAgents:
12
  def researcher(self, scrape_tool, search_tool):
13
  researcher_agent = Agent(
14
- role="Pesquisador de empregos",
15
- goal="Realizar análises de anúncios de emprego para ajudar "
16
- "candidatos a encontrar as melhores oportunidades.",
 
 
17
  backstory=dedent(
18
- """Como Pesquisador de Empregos, vocês possui habilidades
19
- incomparáveis em navegar e extrair informações cruciais de
20
- ofertas de emprego. Sua expertise permite identificar as
21
- qualificações e competências mais procuradas pelos
22
- empregadores, fornecendo a base para adaptações eficazes das
23
- candidaturas. Sua capacidade de análise detalhada ajuda
24
- candidatos a entender as oportunidades disponíveis."""
25
  ),
26
  verbose=True,
27
  tools=[scrape_tool, search_tool],
@@ -32,25 +35,22 @@ class MultiAgents:
32
  self, search_tool, scrape_tool, semantic_search_resume
33
  ):
34
  profile_creator_agent = Agent(
35
- role="Criador de Perfil",
36
- goal="Realizar pesquisas detalhadas e confiáveis sobre "
37
- "candidatos a empregos para ajudá-los a se destacar no "
38
- "mercado de trabalho.",
 
39
  backstory=dedent(
40
- """"Como criador de Perfil, você possui uma habilidade
41
- excepcional, que permite examinar e sintetizar informações
42
- de diversas fontes com precisão. Você desenvolve perfis
43
- pessoais abrangentes e personalizados, que são
44
- fundamentais para otimizar currículos. Sua expertise
45
- possibilita que candidatos destaquem suas qualificações e
46
- competênciais mais relevantes, potencializando suas
47
- chances de sucesso no competitivo mercado de trabalho."""
48
  ),
49
- tools=[
50
- scrape_tool,
51
- search_tool,
52
- semantic_search_resume,
53
- ],
54
  verbose=True,
55
  )
56
  return profile_creator_agent
@@ -59,24 +59,20 @@ class MultiAgents:
59
  self, search_tool, scrape_tool, semantic_search_resume
60
  ):
61
  professional_consultant_agent = Agent(
62
- role="Consultor Profissional de Currículos",
63
- goal="Encontrar todas as melhores estratégias para fazer um "
64
- "currículo se destacar no mercado de trabalho.",
 
 
65
  backstory=dedent(
66
- """Com uma mente estratégica e uma atenção minuciosa aos
67
- detalhes, você se destaca em refinar currículos para maximizar
68
- a apresentação de habilidades e experiências relevantes. Sua
69
- abordagem consultiva garante que os currículos ressoem
70
- perfeitamente com os requisitos do trabalho, aumentando as
71
- chances de sucesso dos engenheiros no competitivo mercado de
72
- trabalho."
73
- """
74
  ),
75
- tools=[
76
- search_tool,
77
- scrape_tool,
78
- semantic_search_resume,
79
- ],
80
  verbose=True,
81
  )
82
  return professional_consultant_agent
@@ -85,26 +81,23 @@ class MultiAgents:
85
  self, search_tool, scrape_tool, semantic_search_resume
86
  ):
87
  interview_preparer_agent = Agent(
88
- role="Preparador de entrevista para profissionais",
89
- goal="Desenvolver perguntas para entrevistas e pontos de "
90
- "discussão com base no currículo e nos requisitos do trabalho. "
91
- "Responda sempre em português=br",
 
 
92
  backstory=dedent(
93
- """Seu papel é fundamental para antecipar a dinâmica das
94
- entrevistas. Com sua habilidade excepcional em formular
95
- perguntas-chave e pontos de discussão estratégicos, você
96
- prepara os candidatos para o sucesso, assegurando que eles
97
- abordem com confiança todos os aspectos do anúncio da vaga ao
98
- qual estão se candidatando. Sua expertise garante que os
99
- candidatos estejam bem equipados para destacar suas
100
- qualificações e se alinhem perfeitamente com os requisitos da
101
- posição."""
102
  ),
103
- tools=[
104
- search_tool,
105
- scrape_tool,
106
- semantic_search_resume,
107
- ],
108
  verbose=True,
109
  )
110
  return interview_preparer_agent
 
3
  from crewai import Agent
4
  from crewai_tools import ScrapeWebsiteTool, SerperDevTool
5
 
6
+ # Initialize the tools
7
  search_tool = SerperDevTool()
8
  scrape_tool = ScrapeWebsiteTool()
9
 
10
 
11
+ # Career consulting agents
12
  class MultiAgents:
13
  def researcher(self, scrape_tool, search_tool):
14
  researcher_agent = Agent(
15
+ role="Job Searcher",
16
+ goal=dedent(
17
+ """Perform job ad analyses to help candidates find the best
18
+ opportunities."""
19
+ ),
20
  backstory=dedent(
21
+ """As a Job Researcher, you possess unparalleled skills in
22
+ navigating and extracting crucial information from job offers.
23
+ Your expertise allows you to identify the most sought-after
24
+ qualifications and skills by employers, providing a foundation
25
+ for effective application adjustments.
26
+ Your detailed analysis capability helps candidates understand
27
+ the available opportunities."""
28
  ),
29
  verbose=True,
30
  tools=[scrape_tool, search_tool],
 
35
  self, search_tool, scrape_tool, semantic_search_resume
36
  ):
37
  profile_creator_agent = Agent(
38
+ role="Profile Creator",
39
+ goal=dedent(
40
+ """Perform detailed and reliable research on job candidates to
41
+ help them stand out in the job market."""
42
+ ),
43
  backstory=dedent(
44
+ """As a Profile Creator, you possess exceptional skills that
45
+ allow you to examine and synthesize information from various
46
+ sources with precision.
47
+ You develop comprehensive and personalized personal profiles,
48
+ which are essential for optimizing resumes.
49
+ Your expertise enables candidates to highlight their most
50
+ relevant qualifications and skills, enhancing their chances of
51
+ success in the competitive job market."""
52
  ),
53
+ tools=[scrape_tool, search_tool, semantic_search_resume],
 
 
 
 
54
  verbose=True,
55
  )
56
  return profile_creator_agent
 
59
  self, search_tool, scrape_tool, semantic_search_resume
60
  ):
61
  professional_consultant_agent = Agent(
62
+ role="Professional Resume Consultant",
63
+ goal=dedent(
64
+ """Find the best strategies to make a resume stand out in the
65
+ job market."""
66
+ ),
67
  backstory=dedent(
68
+ """With a strategic mind and meticulous attention to detail,
69
+ you excel in refining resumes to maximize the presentation of
70
+ relevant skills and experiences.
71
+ Your consultative approach ensures that resumes perfectly
72
+ resonate with job requirements, increasing the chances of
73
+ success in the competitive job market."""
 
 
74
  ),
75
+ tools=[search_tool, scrape_tool, semantic_search_resume],
 
 
 
 
76
  verbose=True,
77
  )
78
  return professional_consultant_agent
 
81
  self, search_tool, scrape_tool, semantic_search_resume
82
  ):
83
  interview_preparer_agent = Agent(
84
+ role="Professional Interview Preparer",
85
+ goal=dedent(
86
+ """Develop interview questions and discussion points
87
+ based on the resume and job requirements. Always
88
+ respond in Portuguese (Brazil)."""
89
+ ),
90
  backstory=dedent(
91
+ """Your role is crucial in anticipating the dynamics of
92
+ interviews. With your exceptional skill in formulating key
93
+ questions and strategic discussion points,
94
+ you prepare candidates for success, ensuring they confidently
95
+ address all aspects of the job ad they are applying for.
96
+ Your expertise ensures that candidates are well-equipped to
97
+ highlight their qualifications and align perfectly with the
98
+ position's requirements."""
 
99
  ),
100
+ tools=[search_tool, scrape_tool, semantic_search_resume],
 
 
 
 
101
  verbose=True,
102
  )
103
  return interview_preparer_agent
src/tasks.py CHANGED
@@ -4,17 +4,17 @@ from crewai import Task
4
 
5
 
6
  class MultiTasks:
 
7
  def research_task(self, agent, job_posting_url):
8
  description = dedent(
9
- """Examine a URL do anúncio do emprego fornecido
10
- ({job_posting_url}) para extrair as habilidades, experiências
11
- e qualificações essenciais exigidas. Utilize as ferramentas
12
- disponíveis para coletar e analisar o conteúdo, identificando
13
- e categorizando os requisitos de forma eficiente."""
14
  )
15
  expected_output = dedent(
16
- """Uma lista estruturada de requisitos do trabalho, incluindo
17
- as habilidades, qualificações e experiências necessárias."""
18
  )
19
  job_research_task = Task(
20
  description=description,
@@ -26,85 +26,72 @@ class MultiTasks:
26
 
27
  def profile_manager_task(self, agent, github_url, candidate_name):
28
  description = dedent(
29
- """Analise o perfil do GitHub ({github_url} para extrair as
30
- competências do candidato. Utilize ferramentas especializadas para
31
- examinar os repositórios, commits, projetos e contribuições do
32
- candidato, identificando e categorizando suas habilidades técnicas
33
- e experiências relevantes."""
34
  )
35
  expected_output = dedent(
36
- """"Um currículo atualizado que destaque efetivamente as
37
- qualificações, características e experiências relevantes do
38
- candidato para o trabalho."""
39
  )
40
  profile_manager_task = Task(
41
  description=description,
42
  expected_output=expected_output,
43
  agent=agent,
44
- output_file=f"curriculo_personalizado_{candidate_name}.md",
45
  async_execution=True,
46
  )
47
  return profile_manager_task
48
 
49
  def resume_adaptation_task(
50
- self,
51
- candidate_name,
52
- agent,
53
- task_researcher,
54
- profile_manager_task,
55
  ):
56
  description = dedent(
57
- """Usando o perfil e os requisitos de trabalho obtidos em tarefas
58
- anteriores, adapte o currículo para destacar ao máximo áreas
59
- relevantes. Utilize ferramentas para ajustar e melhorar o
60
- conteúdo, assegurando que este seja o melhor currículo possível
61
- sem inventar nenhuma informação. Atualize todas as seções,
62
- incluindo o resumo inicial, experiência profissional, habilidades
63
- e educação, para refletir melhor as habilidades do candidato e
64
- alinhar-se aos requisitos do anúncio de emprego."""
65
  )
66
  expected_output = dedent(
67
- """Um currículo atualizado que destaque efetivamente as
68
- qualificações, características e experiências relevantes do
69
- candidato para o trabalho."""
70
  )
71
  resume_adaptation_task = Task(
72
  description=description,
73
  expected_output=expected_output,
74
  context=[task_researcher, profile_manager_task],
75
- output_file=f"curriculo_personalizado_{candidate_name}.md",
76
  agent=agent,
77
  )
78
  return resume_adaptation_task
79
 
80
  def interview_preparation_task(
81
- self,
82
- agent,
83
- task_researcher,
84
- profile_manager_task,
85
- resume_task,
86
  ):
87
  description = dedent(
88
- """Informe as principais habilidades do anúncio da vaga e crie um
89
- conjunto de possíveis perguntas para entrevistas e
90
- pontos de discussão com base no currículo personalizado e nos
91
- requisitos do trabalho. Utilize ferramentas para gerar questões e
92
- tópicos relevantes. Certifique-se de que essas perguntas e pontos
93
- de discussão ajudem o candidato a destacar os principais pontos do
94
- currículo e como eles correspondem ao anúncio do emprego."""
95
  )
96
  expected_output = dedent(
97
- """Um documento contendo perguntas-chave e pontos de discussão que
98
- o candidato deve se preparar para a entrevista inicial."""
99
  )
100
  interview_preparation_task = Task(
101
  description=description,
102
  expected_output=expected_output,
103
- context=[
104
- task_researcher,
105
- profile_manager_task,
106
- resume_task,
107
- ],
108
  agent=agent,
109
  )
110
  return interview_preparation_task
 
4
 
5
 
6
  class MultiTasks:
7
+
8
  def research_task(self, agent, job_posting_url):
9
  description = dedent(
10
+ f"""Examine the provided job posting URL ({job_posting_url})
11
+ to extract essential skills, experiences, and qualifications
12
+ required. Use available tools to collect and analyze the content,
13
+ efficiently identifying and categorizing the requirements."""
 
14
  )
15
  expected_output = dedent(
16
+ """A structured list of job requirements, including the necessary
17
+ skills, qualifications, and experiences."""
18
  )
19
  job_research_task = Task(
20
  description=description,
 
26
 
27
  def profile_manager_task(self, agent, github_url, candidate_name):
28
  description = dedent(
29
+ """Analyze the GitHub profile ({github_url}) to extract the
30
+ candidate's competencies.
31
+ Use specialized tools to examine repositories, commits, projects,
32
+ and contributions, identifying and categorizing their technical
33
+ skills and relevant experiences."""
34
  )
35
  expected_output = dedent(
36
+ """An updated resume that effectively highlights the candidate's
37
+ relevant qualifications, characteristics, and experiences for the
38
+ job."""
39
  )
40
  profile_manager_task = Task(
41
  description=description,
42
  expected_output=expected_output,
43
  agent=agent,
44
+ output_file=f"custom_resume_{candidate_name}.md",
45
  async_execution=True,
46
  )
47
  return profile_manager_task
48
 
49
  def resume_adaptation_task(
50
+ self, candidate_name, agent, task_researcher, profile_manager_task
 
 
 
 
51
  ):
52
  description = dedent(
53
+ """Using the profile and job requirements obtained in previous
54
+ tasks, adapt the resume to highlight the most relevant areas.
55
+ Use tools to adjust and enhance the content, ensuring it is the
56
+ best possible resume without inventing any information. Update all
57
+ sections, including the summary, work experience, skills, and
58
+ education, to better reflect the candidate's abilities and align
59
+ with the job requirements."""
 
60
  )
61
  expected_output = dedent(
62
+ """An updated resume that effectively highlights the candidate's
63
+ relevant qualifications, characteristics, and experiences for the
64
+ job."""
65
  )
66
  resume_adaptation_task = Task(
67
  description=description,
68
  expected_output=expected_output,
69
  context=[task_researcher, profile_manager_task],
70
+ output_file=f"custom_resume_{candidate_name}.md",
71
  agent=agent,
72
  )
73
  return resume_adaptation_task
74
 
75
  def interview_preparation_task(
76
+ self, agent, task_researcher, profile_manager_task, resume_task
 
 
 
 
77
  ):
78
  description = dedent(
79
+ """Identify the key skills from the job posting and create a set
80
+ of possible interview questions and discussion points based on the
81
+ customized resume and job requirements. Use tools to generate
82
+ relevant questions and topics.
83
+ Ensure that these questions and discussion points help the
84
+ candidate highlight the key aspects of the resume and how they
85
+ match the job posting."""
86
  )
87
  expected_output = dedent(
88
+ """A document containing key questions and discussion points
89
+ that the candidate should prepare for the initial interview."""
90
  )
91
  interview_preparation_task = Task(
92
  description=description,
93
  expected_output=expected_output,
94
+ context=[task_researcher, profile_manager_task, resume_task],
 
 
 
 
95
  agent=agent,
96
  )
97
  return interview_preparation_task