Spaces:
Sleeping
Sleeping
# 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}" | |