Spaces:
Running
Running
import os | |
import requests | |
GROQ_API_KEY = os.getenv("GROQ_API_KEY") or "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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: | |
# Limit content length per CV to avoid token overflow | |
cv_snippets = [text.strip()[:1500] or "[No content]" for text in cv_snippets[:3]] | |
cv_names = [name[:60] for name in cv_names[:3]] | |
# Create structured prompt | |
prompt = f""" | |
You are an AI recruitment assistant helping to match candidates 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]} | |
Analyze how well each candidate matches the job requirements, especially in terms of: | |
- PHP programming | |
- Software or web development | |
- Relevant technical experience | |
Clearly identify which candidates are suitable and why. | |
""".strip() | |
# Debug info (optional) | |
print("π¦ Prompt length:", len(prompt)) | |
if len(prompt) > 8000: | |
return "β Prompt too long. Please shorten the CVs or JD." | |
# Groq API call | |
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", # Or change to a different supported Groq model | |
"messages": [{"role": "user", "content": prompt}], | |
"temperature": 0.4 | |
}, | |
timeout=30 | |
) | |
response.raise_for_status() | |
return response.json()["choices"][0]["message"]["content"] | |
except Exception as e: | |
return f"β Groq API error: {e}" | |