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