File size: 2,905 Bytes
723e191
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from pydantic import BaseModel, Field, Extra
from typing import Dict, Any, List, Optional, Union

class Location(BaseModel):
    name: str = Field(description= "Location name")
    location_type: str | None = Field(description= "Type of location: headquater, office, etc; not a country, city.")

class Education(BaseModel):
    name: str = Field(description= "Degree name such as: Bachelor of Science, Master of Engineer, etc.")
    fields: str | None = Field(description= "Fields of study such as: Computer Science, Math, Information Technology, etc.")
    status: str | None = Field(description= "Education status: graduate, ungraduate, etc.")

class Skill(BaseModel):
    name: str = Field(description= "Skill name")
    hypernym: str | None = Field(description= "Hypernym of skill")

class Work_Exper(BaseModel):
    name: str = Field(description= "Work Experience name")
    duration: Any = Field(description= "Years or months or level of experience")

class Work_Level(BaseModel):
    name: str = Field(description= "Work level: intern, senior, lead, CEO, etc.")

class Company(BaseModel):
    subdiaries: List[str] | None = Field(description= "Subsidiaries or teams belong to the company. It not, if will not be returned.")
    locations: List[Location] | None = Field(description= "Company headquarter or branches. It not, if will not be returned.")
    industry: List[str] | None = Field(description= "The industry in which the company is doing business")


class Job(BaseModel, strict=True):
    description: str = Field(description="Brief summary of what to do when applying for this job.")
    work_at: Location | None = Field(description= "Working location. If not, it will not be returned")
    work_mode: str | None = Field(description= "Work at company (Onsite), Part-time, etc. If not, it will not be returned")
    work_level: Work_Level | None = Field(description= "Word level such as: Intern, Fresher, Junior, etc.")
    education_requirements: List[Education] = Field(description="Education requirements")
    skill_requirements: List[Skill] = Field(description= "Identify and list all the technology skills mentioned. These skills can be specific tools, frameworks, programming languages, or broader categories like 'cloud computing' or 'data science'.")
    work_exper_requirements: List[Work_Exper] = Field(description="Identify the specific years or months of experience required for each position or level of experience (e.g., entry-level, mid-level, senior). If the posting mentions preferred or desired experience, include that information as well.")
    benefit_compensation: str | None = Field(description= "Benefits and compensations include: salary, dayoff, holiday, etc.")
    from_company: Company = Field(description= "The company is recruiting for this job position")


class JobKnowledgeGraph(BaseModel):
    job: Job = Field(description= "Knowledge graph about job.")