cv / groq_api.py
saherPervaiz's picture
Update groq_api.py
8421e19 verified
raw
history blame
1.84 kB
# groq_api.py
import os
import requests
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:
# Safety checks
job_description = job_description.strip() or "[No description]"
cv_names = cv_names[:3]
cv_snippets = [s[:400] for s in cv_snippets[:3]] # shorten per snippet
if not cv_snippets or not any(cv_snippets):
return "❌ No valid CV content to summarize."
# Format prompt
cv_info = "\n\n".join([
f"{cv_names[i]}:\n{cv_snippets[i] or '[No content]'}"
for i in range(len(cv_names))
])
prompt = f"""
You are an AI recruiter assistant.
A company has the following job description:
---
{job_description}
---
Here are the top 3 candidate CVs (partial content):
{cv_info}
Please summarize why these candidates are a good fit for the job.
""".strip()
print("πŸ“¦ Prompt size (chars):", len(prompt))
print("πŸ“¦ Prompt preview:\n", prompt[:800]) # trim to preview
# Call Groq
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.5
},
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}"