Spaces:
Running
Running
File size: 2,431 Bytes
84bc138 d31a363 84bc138 3212f8c bf1ae63 84bc138 7e2083c d31a363 5c62f99 84bc138 fb85604 9089c56 e791f2f 3212f8c 9089c56 3212f8c 9089c56 fb85604 3212f8c fb85604 3212f8c 8fa1c54 3212f8c 8fa1c54 3212f8c 84bc138 5c62f99 100dadd 84bc138 9089c56 8421e19 84bc138 3212f8c 57374a9 e791f2f fb85604 3212f8c d31a363 0ac4fb8 5c62f99 d31a363 100dadd d31a363 e791f2f 5c62f99 e791f2f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
import os
import requests
# Set your Groq API Key
GROQ_API_KEY = "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"
def summarize_match(job_description, cv_names, cv_snippets):
if not GROQ_API_KEY:
return "❌ GROQ_API_KEY not set."
try:
# Truncate job description
job_description = job_description.strip()[:800] or "[No description provided]"
# Truncate each CV snippet
cv_snippets = [(text.strip()[:700] or "[No content]") for text in cv_snippets]
cv_names = [name[:60] for name in cv_names]
# Build dynamic CV section
cv_section = ""
for i, (name, snippet) in enumerate(zip(cv_names, cv_snippets), start=1):
cv_section += f"\n{i}. {name}:\n{snippet}\n"
# Build prompt
prompt = f"""
You are an AI recruitment assistant helping to evaluate candidate CVs for a job opening.
Below is the job description, followed by {len(cv_names)} candidate CV summaries.
Your job is to:
- Analyze each candidate's relevance based on their technical skills, tools, and experience
- Be honest: clearly state if a candidate is a good fit or not
- Avoid generic praise unless it's supported by actual content
{"- Rank the candidates based on fit if more than one is provided." if len(cv_names) > 1 else ""}
### Job Description:
{job_description}
### Candidate CVs:{cv_section}
""".strip()
# Enforce character limit (approx 8000 tokens max for llama3-8b-8192)
if len(prompt) > 8000:
prompt = prompt[:8000]
# Call Groq API
response = requests.post(
url="https://api.groq.com/openai/v1/chat/completions",
headers={
"Authorization": f"Bearer {GROQ_API_KEY}",
"Content-Type": "application/json"
},
json={
"model": "llama3-8b-8192",
"messages": [
{"role": "system", "content": "You are a helpful recruitment assistant."},
{"role": "user", "content": prompt}
],
"temperature": 0.4
},
timeout=30
)
response.raise_for_status()
return response.json()["choices"][0]["message"]["content"]
except requests.exceptions.RequestException as e:
return f"❌ Groq API error: {e}"
except Exception as e:
return f"❌ Unexpected error: {e}"
|