File size: 2,520 Bytes
03c193d
697eef7
03c193d
 
697eef7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import requests
import spacy
from transformers import pipeline

# Load spaCy model for NLP tasks
nlp_spacy = spacy.load("en_core_web_sm")

# Initialize lightweight LLM pipeline (Falcon 1B)
llm = pipeline("text-generation", model="tiiuae/falcon-rw-1b", device="cpu", max_new_tokens=512)

def generate_llm_response(prompt: str) -> str:
    # Generate response from Falcon 1B
    response = llm(prompt, do_sample=True, temperature=0.7)
    return response[0]['generated_text']

def get_skills_suggestions(cv_text: str) -> list:
    prompt = f"Extract and list relevant professional skills from this CV text:\n{cv_text}"
    result = generate_llm_response(prompt)
    skills = [s.strip() for s in result.split('\n') if s.strip()]
    return skills

def get_certifications_suggestions(skills: list) -> list:
    prompt = f"Suggest certifications relevant to these skills:\n{', '.join(skills)}"
    result = generate_llm_response(prompt)
    certs = [c.strip() for c in result.split('\n') if c.strip()]
    return certs

def get_scholarships_suggestions(field: str) -> list:
    prompt = f"List scholarships available for the field: {field}"
    result = generate_llm_response(prompt)
    scholarships = [s.strip() for s in result.split('\n') if s.strip()]
    return scholarships

def get_education_opportunities(field: str) -> list:
    prompt = f"Suggest education opportunities and relevant courses for the field: {field}"
    result = generate_llm_response(prompt)
    educations = [e.strip() for e in result.split('\n') if e.strip()]
    return educations

def get_visa_opportunities(country: str) -> list:
    prompt = f"List visa and immigration options for skilled professionals in {country}"
    result = generate_llm_response(prompt)
    visas = [v.strip() for v in result.split('\n') if v.strip()]
    return visas

def get_job_listings(keywords: str, location: str, limit: int = 5) -> list:
    # For now, we will generate job suggestions with LLM (mock API)
    prompt = f"List {limit} recent job openings for '{keywords}' in {location}, include job title and brief description."
    result = generate_llm_response(prompt)
    jobs = [j.strip() for j in result.split('\n') if j.strip()]
    return jobs

def score_cv(cv_text: str) -> int:
    # Simple heuristic scoring based on keyword richness
    tokens = nlp_spacy(cv_text.lower())
    unique_tokens = set([token.lemma_ for token in tokens if not token.is_stop and token.is_alpha])
    score = min(100, len(unique_tokens))  # max 100 points
    return score