# 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}"