Spaces:
Sleeping
Sleeping
| 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 | |