cv / groq_api.py
saherPervaiz's picture
Update groq_api.py
e791f2f verified
raw
history blame
2.07 kB
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}"