Spaces:
Sleeping
Sleeping
File size: 2,065 Bytes
84bc138 d31a363 84bc138 e791f2f 84bc138 7e2083c d31a363 5c62f99 84bc138 fb85604 e791f2f 57374a9 e791f2f fb85604 e791f2f fb85604 e791f2f 84bc138 5c62f99 100dadd 84bc138 5c62f99 84bc138 e791f2f 8421e19 84bc138 e791f2f 57374a9 e791f2f fb85604 e791f2f d31a363 e791f2f d31a363 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
# Use environment variable or fallback 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:
# Ensure we have 3 entries
while len(cv_names) < 3:
cv_names.append("[No CV]")
cv_snippets.append("[No content]")
# Trim content safely
job_description = job_description.strip()[:1000] or "[No description provided]"
cv_names = [name[:60] for name in cv_names[:3]]
cv_snippets = [(text.strip()[:1500] or "[No content]") for text in cv_snippets[:3]]
# Construct prompt
prompt = f"""
You are an AI recruitment assistant helping match CVs to job descriptions.
### Job Description:
{job_description}
### Candidate CVs:
1. {cv_names[0]}:
{cv_snippets[0]}
2. {cv_names[1]}:
{cv_snippets[1]}
3. {cv_names[2]}:
{cv_snippets[2]}
Based on the job requirements, analyze each candidate and explain which (if any) are suitable. Focus on:
- PHP experience
- Web/software development
- Technical relevance
""".strip()
# Safety: Truncate if prompt is too long
if len(prompt) > 8000:
prompt = prompt[:8000]
# Make Groq API request
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": "mixtral-8x7b-32768",
"messages": [{"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}"
|