Spaces:
Sleeping
Sleeping
File size: 2,120 Bytes
84bc138 d31a363 84bc138 d31a363 84bc138 b908f19 84bc138 7e2083c d31a363 b908f19 84bc138 fb85604 b908f19 57374a9 8421e19 b908f19 fb85604 57374a9 fb85604 100dadd 84bc138 57374a9 100dadd 84bc138 b908f19 7e2083c 84bc138 b908f19 8421e19 84bc138 b908f19 57374a9 fb85604 b908f19 d31a363 b908f19 d31a363 100dadd d31a363 100dadd d31a363 b908f19 100dadd b908f19 |
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 64 65 66 |
# groq_api.py
import os
import requests
# β
Load API key securely from environment variable
GROQ_API_KEY = "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" # DO NOT hardcode keys!
def summarize_match(job_description, cv_names, cv_snippets):
if not GROQ_API_KEY:
return "β GROQ_API_KEY not set. Please set it as an environment variable."
try:
# β
Limit job description and snippet size for Groq token limits
job_description = job_description.strip()[:600] or "[No description provided]"
cv_names = [name[:60] for name in cv_names[:3]]
cv_snippets = [(text.strip()[:400] or "[No content]") for text in cv_snippets[:3]]
# β
Combine into readable 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}
---
Here are the top 3 candidate CVs (partial content):
{cv_info}
Summarize why these candidates may be a good fit for this role.
""".strip()
# β
Optional debug info
print("π¦ Prompt length (chars):", len(prompt))
if len(prompt) > 8000:
return "β Prompt too long for Groq (must be under 8K characters)."
# β
Send request 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": "llama3-8b-8192", # β
Correct Groq model
"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}"
except Exception as e:
return f"β Unexpected error: {e}"
|