Spaces:
Sleeping
Sleeping
[add] initial files
Browse files- README copy.md +1 -0
- db/10242bf6-cf5e-471d-a7fd-53f0502282a1/data_level0.bin +3 -0
- db/10242bf6-cf5e-471d-a7fd-53f0502282a1/header.bin +3 -0
- db/10242bf6-cf5e-471d-a7fd-53f0502282a1/length.bin +3 -0
- db/10242bf6-cf5e-471d-a7fd-53f0502282a1/link_lists.bin +0 -0
- db/chroma.sqlite3 +0 -0
- file_path +0 -0
- poetry.lock +0 -0
- pyproject.toml +16 -0
- src/agents.py +110 -0
- src/app.py +164 -0
- src/assistente-de-robo.png +0 -0
- src/tasks.py +110 -0
README copy.md
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
# interview_preparer
|
db/10242bf6-cf5e-471d-a7fd-53f0502282a1/data_level0.bin
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:f18abd8c514282db82706e52b0a33ed659cd534e925a6f149deb7af9ce34bd8e
|
3 |
+
size 6284000
|
db/10242bf6-cf5e-471d-a7fd-53f0502282a1/header.bin
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:effaa959ce2b30070fdafc2fe82096fc46e4ee7561b75920dd3ce43d09679b21
|
3 |
+
size 100
|
db/10242bf6-cf5e-471d-a7fd-53f0502282a1/length.bin
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:05f55bdd317922e58d96cc24a1256a36c11dbb19be4501c7fc29c6ddd350fb8a
|
3 |
+
size 4000
|
db/10242bf6-cf5e-471d-a7fd-53f0502282a1/link_lists.bin
ADDED
File without changes
|
db/chroma.sqlite3
ADDED
Binary file (180 kB). View file
|
|
file_path
ADDED
Binary file (52.1 kB). View file
|
|
poetry.lock
ADDED
The diff for this file is too large to render.
See raw diff
|
|
pyproject.toml
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[tool.poetry]
|
2 |
+
name = "agent-jobmatch"
|
3 |
+
version = "0.1.0"
|
4 |
+
description = ""
|
5 |
+
authors = ["Priscilla Nascimento Santos <priscilla.batista18@gmail.com>"]
|
6 |
+
package-mode = false
|
7 |
+
|
8 |
+
[tool.poetry.dependencies]
|
9 |
+
python = ">=3.10,<=3.13"
|
10 |
+
streamlit = "^1.36.0"
|
11 |
+
crewai = "^0.32.2"
|
12 |
+
crewai-tools = "^0.3.0"
|
13 |
+
|
14 |
+
[build-system]
|
15 |
+
requires = ["poetry-core>=1.0.0"]
|
16 |
+
build-backend = "poetry.core.masonry.api"
|
src/agents.py
ADDED
@@ -0,0 +1,110 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from textwrap import dedent
|
2 |
+
|
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],
|
28 |
+
)
|
29 |
+
return researcher_agent
|
30 |
+
|
31 |
+
def profile_creator(
|
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
|
57 |
+
|
58 |
+
def professional_consultant(
|
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
|
83 |
+
|
84 |
+
def interview_preparer(
|
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
|
src/app.py
ADDED
@@ -0,0 +1,164 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import os
|
2 |
+
|
3 |
+
import streamlit as st
|
4 |
+
from crewai import Crew
|
5 |
+
from crewai_tools import PDFSearchTool, ScrapeWebsiteTool, SerperDevTool
|
6 |
+
from dotenv import load_dotenv
|
7 |
+
from PIL import Image
|
8 |
+
|
9 |
+
from agents import MultiAgents
|
10 |
+
from tasks import MultiTasks
|
11 |
+
|
12 |
+
# Carregar variáveis de ambiente
|
13 |
+
load_dotenv()
|
14 |
+
os.environ["OPENAI_MODEL_NAME"] = "gpt-3.5-turbo"
|
15 |
+
|
16 |
+
|
17 |
+
# Inicializar agentes e tarefas
|
18 |
+
agents = MultiAgents()
|
19 |
+
tasks = MultiTasks()
|
20 |
+
search_tool = SerperDevTool()
|
21 |
+
scrape_tool = ScrapeWebsiteTool()
|
22 |
+
|
23 |
+
# Carregar imagem do ícone
|
24 |
+
imagem_icon = Image.open("src/assistente-de-robo.png")
|
25 |
+
imagem_icon = imagem_icon.resize((100, 100))
|
26 |
+
|
27 |
+
|
28 |
+
def save_uploaded_file(uploaded_file):
|
29 |
+
temp_dir = "tempDir"
|
30 |
+
if not os.path.exists(temp_dir):
|
31 |
+
os.makedirs(temp_dir)
|
32 |
+
temp_file_path = os.path.join(temp_dir, uploaded_file.name)
|
33 |
+
with open(temp_file_path, "wb") as f:
|
34 |
+
f.write(uploaded_file.getbuffer())
|
35 |
+
return temp_file_path
|
36 |
+
|
37 |
+
|
38 |
+
def read_file(file_path):
|
39 |
+
pdf_search_tool = PDFSearchTool(pdf=file_path)
|
40 |
+
return pdf_search_tool
|
41 |
+
|
42 |
+
|
43 |
+
def main():
|
44 |
+
with st.sidebar:
|
45 |
+
st.title("Olá, Sou o Taylor IA, seu Consultor de carreira:")
|
46 |
+
st.write(
|
47 |
+
"""Estou aqui para ajudá-lo a destacar suas habilidades e
|
48 |
+
experiências para o mercado de trabalho."""
|
49 |
+
)
|
50 |
+
|
51 |
+
st.session_state.openai_api_key = st.text_input(
|
52 |
+
"Insira seu token da OpenAI:", type="password"
|
53 |
+
)
|
54 |
+
|
55 |
+
st.session_state.serper_api_key = st.text_input(
|
56 |
+
"Insira seu token da SERPER:", type="password"
|
57 |
+
)
|
58 |
+
|
59 |
+
st.image(imagem_icon, use_column_width=True)
|
60 |
+
|
61 |
+
if st.session_state.openai_api_key:
|
62 |
+
os.environ["OPENAI_API_KEY"] = st.session_state.openai_api_key
|
63 |
+
if st.session_state.serper_api_key:
|
64 |
+
os.environ["SERPER_API_KEY"] = st.session_state.serper_api_key
|
65 |
+
|
66 |
+
st.header("Consultor de Carreira")
|
67 |
+
|
68 |
+
if "result_done" not in st.session_state:
|
69 |
+
st.session_state.result_done = False
|
70 |
+
if "result" not in st.session_state:
|
71 |
+
st.session_state.result = None
|
72 |
+
|
73 |
+
candidate_name = st.text_input("Digite seu nome:")
|
74 |
+
job_posting_url = st.text_input("Informe a URL da vaga desejada:")
|
75 |
+
github_url = st.text_input("Informe a URL do seu Github:")
|
76 |
+
uploaded_resume = st.file_uploader(
|
77 |
+
"Por favor, faça o upload do seu currículo nos formatos PDF ou DOCX.",
|
78 |
+
type=["pdf", "docx"],
|
79 |
+
)
|
80 |
+
|
81 |
+
if uploaded_resume:
|
82 |
+
if uploaded_resume.type == "application/pdf":
|
83 |
+
temp_file_path = save_uploaded_file(uploaded_resume)
|
84 |
+
pdf_search_tool = read_file(temp_file_path)
|
85 |
+
os.remove(temp_file_path)
|
86 |
+
|
87 |
+
if st.button("Realizar Análise"):
|
88 |
+
# Agentes
|
89 |
+
researcher = agents.researcher(search_tool, scrape_tool)
|
90 |
+
profile_creator = agents.profile_creator(
|
91 |
+
search_tool, scrape_tool, pdf_search_tool
|
92 |
+
)
|
93 |
+
professional_consultant = agents.professional_consultant(
|
94 |
+
search_tool, scrape_tool, pdf_search_tool
|
95 |
+
)
|
96 |
+
interview_preparer = agents.interview_preparer(
|
97 |
+
search_tool, scrape_tool, pdf_search_tool
|
98 |
+
)
|
99 |
+
|
100 |
+
# Tarefas
|
101 |
+
research_task = tasks.research_task(researcher, job_posting_url)
|
102 |
+
profile_manager_task = tasks.profile_manager_task(
|
103 |
+
profile_creator, github_url, candidate_name
|
104 |
+
)
|
105 |
+
resume_adaptation_task = tasks.resume_adaptation_task(
|
106 |
+
candidate_name,
|
107 |
+
professional_consultant,
|
108 |
+
profile_manager_task,
|
109 |
+
profile_manager_task,
|
110 |
+
)
|
111 |
+
interview_preparation_task = tasks.interview_preparation_task(
|
112 |
+
interview_preparer,
|
113 |
+
research_task,
|
114 |
+
profile_manager_task,
|
115 |
+
resume_adaptation_task,
|
116 |
+
)
|
117 |
+
|
118 |
+
crew = Crew(
|
119 |
+
agents=[
|
120 |
+
researcher,
|
121 |
+
profile_creator,
|
122 |
+
professional_consultant,
|
123 |
+
interview_preparer,
|
124 |
+
],
|
125 |
+
tasks=[
|
126 |
+
research_task,
|
127 |
+
profile_manager_task,
|
128 |
+
resume_adaptation_task,
|
129 |
+
interview_preparation_task,
|
130 |
+
],
|
131 |
+
verbose=True,
|
132 |
+
)
|
133 |
+
|
134 |
+
inputs = {
|
135 |
+
"candidate_name": candidate_name,
|
136 |
+
"github_url": github_url,
|
137 |
+
"job_posting_url": job_posting_url,
|
138 |
+
"uploaded_resume": uploaded_resume,
|
139 |
+
}
|
140 |
+
|
141 |
+
# Executar a análise
|
142 |
+
result = crew.kickoff(inputs=inputs)
|
143 |
+
st.session_state.result_done = True
|
144 |
+
st.session_state.result = result
|
145 |
+
st.session_state.show_success = False
|
146 |
+
|
147 |
+
st.write(st.session_state.result)
|
148 |
+
resume_file_path = os.path.basename(
|
149 |
+
f"curriculo_personalizado_{candidate_name}.md"
|
150 |
+
)
|
151 |
+
with open(resume_file_path, "rb") as file:
|
152 |
+
btn = st.download_button(
|
153 |
+
label="Baixar Currículo Gerado",
|
154 |
+
data=file,
|
155 |
+
file_name=os.path.basename(resume_file_path),
|
156 |
+
mime="text/plain",
|
157 |
+
)
|
158 |
+
if btn:
|
159 |
+
st.success("Download Iniciado!")
|
160 |
+
st.success(f"Análise concluída! Obrigado, {candidate_name}!")
|
161 |
+
|
162 |
+
|
163 |
+
if __name__ == "__main__":
|
164 |
+
main()
|
src/assistente-de-robo.png
ADDED
src/tasks.py
ADDED
@@ -0,0 +1,110 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from textwrap import dedent
|
2 |
+
|
3 |
+
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,
|
21 |
+
expected_output=expected_output,
|
22 |
+
agent=agent,
|
23 |
+
async_execution=True,
|
24 |
+
)
|
25 |
+
return job_research_task
|
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 |
+
tarefa_pesquisador,
|
54 |
+
tarefa_gerenciador_perfil,
|
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=[tarefa_pesquisador, tarefa_gerenciador_perfil],
|
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 |
+
tarefa_pesquisador,
|
84 |
+
tarefa_gerenciador_perfil,
|
85 |
+
tarefa_curriculo,
|
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 |
+
tarefa_pesquisador,
|
105 |
+
tarefa_gerenciador_perfil,
|
106 |
+
tarefa_curriculo,
|
107 |
+
],
|
108 |
+
agent=agent,
|
109 |
+
)
|
110 |
+
return interview_preparation_task
|