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