File size: 2,297 Bytes
84bc138
d31a363
84bc138
0ac4fb8
bf1ae63
84bc138
7e2083c
d31a363
5c62f99
84bc138
fb85604
0ac4fb8
e791f2f
 
 
 
0ac4fb8
e791f2f
57374a9
e791f2f
fb85604
0ac4fb8
fb85604
0ac4fb8
84bc138
5c62f99
100dadd
84bc138
5c62f99
 
 
 
 
 
 
 
 
84bc138
0ac4fb8
 
 
 
 
 
8421e19
84bc138
0ac4fb8
57374a9
e791f2f
fb85604
0ac4fb8
d31a363
 
 
 
 
 
 
0ac4fb8
 
 
 
 
5c62f99
d31a363
 
 
100dadd
d31a363
 
 
e791f2f
5c62f99
e791f2f
 
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
67
68
69
70
71
72
73
74
75
76
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}"