mh_test / prompts /mh_evaluation_prompt.py
Sanjay Malladi
Your commit message
2792fd5
from typing import List
from pydantic import BaseModel
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
from langchain.chat_models import ChatOpenAI
# Define the structured output model
class MHEvaluationResult(BaseModel):
category: str # Category I, II, or III
evidence: str # Justification for the categorization
# Define the prompt template
resume_evaluation_prompt = PromptTemplate(
input_variables=["job_description", "candidates_profile", "checkpoints", "answer_script"],
template="""
You are an expert recruiter specializing in evaluating resumes against job descriptions.
Your task is to evaluate and assign a categorization for the candidate's resume based on the "checkpoints" and "answer_script" provided to understand how well it aligns with the JD. Also, provide a brief reasoning. You are required to take a pragmatic and holistic approach considering the context of the resume and implied aspects.
### Steps:
Step 1: Understand the Job Description along with the checkpoints and answer script.
Step 2: Analyze if the answers from the checkpoints and answer script satisfy the must-haves while considering the following aspects:
- Years of experience: Consider responsibilities and role context rather than strictly adhering to a numeric limit.
- Education: If a post-graduate degree is mentioned, assume the person has an undergraduate degree.
- Implicit and explicit matches: Identify if relevant skills and experience satisfy the role.
Step 3: Based on analysis, categorize the resume into:
- **Category I:** JD does not explicitly or implicitly specify any must-haves.
- **Category II:** Satisfies all must-haves explicitly or implicitly.
- **Category III:** Lacks one or more must-haves.
Step 4: Provide evidence supporting the categorization.
**Job Description:**
{job_description}
**Candidate's Resume:**
{candidates_profile}
**Checkpoints:**
{checkpoints}
**Answer Script:**
{answer_script}
### Output Format:
- **category**: (I/II/III)
- **evidence**: A concise 70-100 word justification.
Output:
- Category: [Assign category]
- Evidence: [Provide justification]
"""
)
# Initialize the LLM (e.g., GPT-4)
llm = ChatOpenAI(model_name="gpt-4o-mini", temperature=0)
# Create an LLMChain
resume_evaluation_chain = LLMChain(llm=llm, prompt=resume_evaluation_prompt)
# Example input
job_description = "Looking for a Data Scientist with 3+ years of experience in Python and ML. A Master's degree is preferred."
candidates_profile = "John Doe has a Master's in Data Science and 4 years of Python experience in ML projects."
checkpoints = "1. Must have Python experience. 2. Must have a Master's degree. 3. Must have 3+ years of ML experience."
answer_script = "John Doe explicitly mentions 4 years of Python and ML experience, along with a Master's degree."
# Run the evaluation
response = resume_evaluation_chain.run(
job_description=job_description,
candidates_profile=candidates_profile,
checkpoints=checkpoints,
answer_script=answer_script
)
print(response)