Jayra Ortiz
:star: added initial working architecture
b0716cb
from core.models.parser import ApplicantResume
from core.parser.file_parser import BaseParser
from core.parser.prompt import generate_context_prompt, generate_identity_prompt
from core.resources.azure_openai import generate_response
import json
def extractor_task(file_name: str):
# Parse all data in it's raw format.
parser = BaseParser(file_name)
raw_txt = parser.parse_pdf()
messages = generate_messages(raw_txt)
# generate response and put it in a pydantic model that validates what gpt has given us
# it will also serve as our baseline on which data we can access from the resume
# if it has enough fields for us to do an context similarity on, we can generate a proper report.
# The model will also serve in our reporting as we can raise this as an issue if they do not have
# enough context for us to work on. that means it is either it is not a complete resume.
response = generate_response(messages)
json_response = json.loads(response)
model_response = ApplicantResume(**json_response)
return json_response
def generate_messages(raw_txt: str):
print("raw_txt in generate_messages", raw_txt)
messages = []
identity_prompt = generate_identity_prompt()
context_prompt = generate_context_prompt(raw_txt)
messages.append({"role": "system", "content": identity_prompt})
messages.append({"role": "system", "content": context_prompt})
return messages
def list_dict_to_str_parser(items):
result = ""
for item in items:
for val in item.dict().values():
result += f"{val}\n"
return result