| import os, json | |
| from openai import AzureOpenAI | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| client = AzureOpenAI( | |
| api_key=os.getenv("AZURE_OPENAI_KEY").strip(), | |
| azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT").strip(), | |
| api_version=os.getenv("AZURE_OPENAI_VERSION").strip() | |
| ) | |
| DEPLOY = os.getenv("AZURE_OPENAI_DEPLOYMENT").strip() | |
| def score(resume, jd): | |
| r = client.chat.completions.create( | |
| model=DEPLOY, | |
| max_completion_tokens=800, | |
| temperature=0.8, | |
| messages=[ | |
| {"role":"system","content":"Act as an ATS. Compare résumé with JD. Return JSON: overall_score(0-100) and category_scores{skills,experience,education}, plus top_skill_gaps list."}, | |
| {"role":"user","content":f"JOB_DESCRIPTION:\n{jd}\n\nRESUME:\n{resume}"} | |
| ] | |
| ) | |
| return json.loads(r.choices[0].message.content.strip()) | |
| def improve(resume, jd=None): | |
| p = ("Provide bullet suggestions to raise the score. " + ("Tailor to this JD:\n"+jd+"\n" if jd else "") + "Here is the résumé:\n"+resume) | |
| r = client.chat.completions.create( | |
| model=DEPLOY, | |
| max_completion_tokens=800, | |
| temperature=0.7, | |
| messages=[ | |
| {"role":"system","content":"You are a résumé coach."}, | |
| {"role":"user","content":p} | |
| ] | |
| ) | |
| return r.choices[0].message.content.strip() | |