Spaces:
Sleeping
Sleeping
File size: 1,748 Bytes
84bc138 d31a363 84bc138 d31a363 84bc138 a110ef4 84bc138 7e2083c d31a363 100dadd 84bc138 fb85604 57374a9 8421e19 57374a9 fb85604 57374a9 fb85604 100dadd 84bc138 57374a9 100dadd 84bc138 57374a9 7e2083c 84bc138 57374a9 8421e19 84bc138 57374a9 fb85604 57374a9 d31a363 100dadd d31a363 100dadd d31a363 57374a9 100dadd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# 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:
# Clean + limit all text
job_description = job_description.strip()[:600] or "[No description]"
cv_names = [name[:60] for name in cv_names[:3]]
cv_snippets = [(text.strip()[:400] or "[No content]") for text in cv_snippets[:3]]
# Assemble cleaned prompt
cv_info = "\n\n".join([
f"{cv_names[i]}:\n{cv_snippets[i]}"
for i in range(len(cv_names))
])
prompt = f"""
You are an AI recruiter assistant.
Here is the job description:
---
{job_description}
---
Top 3 CV snippets:
{cv_info}
Summarize why these candidates may be a good fit.
""".strip()
# Show debugging info
print("π¦ Prompt length:", len(prompt))
if len(prompt) > 8000:
return "β Prompt too long for Groq (must be under 8K characters)."
# Send to Groq API
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 Exception as e:
return f"β Groq API error: {e}"
|