cv / groq_api.py
saherPervaiz's picture
Update groq_api.py
0ac4fb8 verified
raw
history blame
2.3 kB
import os
import requests
# Load from environment variable or fallback
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 3 CVs are present (pad if needed)
while len(cv_names) < 3:
cv_names.append("[No CV]")
cv_snippets.append("[No content]")
# Truncate 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]]
# Compose prompt
prompt = f"""
You are an AI recruitment assistant helping to evaluate candidates for a job.
### 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]}
Please analyze how well each candidate matches the job. Focus on:
- PHP/web development experience
- Programming and software skills
- Relevant technical background
List the best matches and briefly justify each recommendation.
""".strip()
# Truncate to fit Groq token window if needed
if len(prompt) > 8000:
prompt = prompt[:8000]
# Send request to Groq API using LLaMA3
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": "llama3-8b-8192",
"messages": [
{"role": "system", "content": "You are a helpful recruitment assistant."},
{"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}"