umaircqai's picture
Update app.py
6b6eb54 verified
raw
history blame
2.55 kB
import os
from dotenv import load_dotenv
from sentence_transformers import SentenceTransformer, util
import gradio as gr
from huggingface_hub import login
import requests
from huggingface_hub import HfApi
# Load environment variables
import os
from huggingface_hub import HfApi
hf_token = os.getenv("hf_token")
api = HfApi(token=hf_token)
# Load embedding model
embed_model = SentenceTransformer("sentence-transformers/all-mpnet-base-v2")
# API call function to Zephyr model
def call_zephyr_api(prompt):
url = "https://api-inference.huggingface.co/models/HuggingFaceH4/zephyr-7b-beta"
headers = {
"Authorization": f"Bearer {hf_token}",
"Content-Type": "application/json"
}
payload = {
"inputs": prompt,
"parameters": {
"max_new_tokens": 512,
"temperature": 0.7
}
}
try:
response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()
return response.json()[0]["generated_text"]
except Exception as e:
return f"⚠️ Error generating suggestions: {e}"
# Resume matcher function
def resume_matcher_and_advisor(resume_text, job_desc):
embeddings = embed_model.encode([resume_text, job_desc], convert_to_tensor=True)
similarity_score = util.pytorch_cos_sim(embeddings[0], embeddings[1]).item()
res_score = round(similarity_score * 100, 2)
if res_score > 85:
suggestions = "✅ This resume is a good fit for the job description!"
else:
prompt = f"""<|system|>
You are a professional resume reviewer.
<|user|>
Compare the following resume with the job description and give bullet-point suggestions to improve the resume so that it better fits the job requirements.
- Be critical and constructive.
- Do NOT assume the resume matches the job.
- DO NOT rewrite the resume or job.
- DO NOT hallucinate skills.
Job Description:
{job_desc}
Resume:
{resume_text}
</s>"""
suggestions = call_zephyr_api(prompt)
return res_score, suggestions
# Launch Gradio interface
iface = gr.Interface(
fn=resume_matcher_and_advisor,
inputs=[
gr.Textbox(lines=15, label="Paste Resume Text"),
gr.Textbox(lines=15, label="Paste Job Description")
],
outputs=[
gr.Number(label="Similarity Score (%)"),
gr.Textbox(label="Improvement Suggestions")
],
title="🧠 Resume Matcher & Advisor",
description="Paste a resume and job description. Get a match score and improvement suggestions."
)
iface.launch(share=True)