Alexvatti commited on
Commit
144401d
·
verified ·
1 Parent(s): 42b9c3f

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +28 -1
main.py CHANGED
@@ -6,6 +6,8 @@ from fastapi.responses import JSONResponse
6
  from fastapi.middleware.cors import CORSMiddleware
7
  import aiofiles
8
  import PyPDF2
 
 
9
 
10
  UPLOAD_FOLDER = "uploads"
11
  os.makedirs(UPLOAD_FOLDER, exist_ok=True)
@@ -22,6 +24,28 @@ app.add_middleware(
22
  )
23
 
24
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  # ✅ Save uploaded file asynchronously
26
  async def save_file(file: UploadFile) -> str:
27
  filename = f"{uuid4()}_{file.filename}"
@@ -56,10 +80,13 @@ async def parse_resume(file: UploadFile = File(...)):
56
  text = extract_text_from_pdf(path)
57
  print("✅ Text extracted.")
58
 
 
 
 
59
  os.remove(path)
60
  print("🧹 File removed.")
61
 
62
- return JSONResponse(content={"text": text}, media_type="application/json")
63
 
64
  except Exception as e:
65
  import traceback
 
6
  from fastapi.middleware.cors import CORSMiddleware
7
  import aiofiles
8
  import PyPDF2
9
+ from langchain_openai import ChatOpenAI
10
+ from langchain.schema import HumanMessage
11
 
12
  UPLOAD_FOLDER = "uploads"
13
  os.makedirs(UPLOAD_FOLDER, exist_ok=True)
 
24
  )
25
 
26
 
27
+ llm = ChatOpenAI(
28
+ model_name="gpt-4o-mini", # Use a valid model name like "gpt-4o" or "gpt-4-turbo"
29
+ temperature=0,
30
+ openai_api_key=os.getenv("OPENAI_API_KEY")
31
+ )
32
+
33
+ def parse_resume_text(text: str) -> dict:
34
+ prompt = f"""
35
+ Extract structured information from this resume text and return the result as a JSON object with the following keys:
36
+ - basics: {first_name, last_name, gender, emails, phone_numbers, address, total_experience_in_years, profession, summary, skills, has_driving_license}
37
+ - educations
38
+ - professional_experiences
39
+ - trainings_and_certifications
40
+ - languages
41
+ - awards
42
+ - references
43
+ Resume:
44
+ {text}
45
+ """
46
+ result = llm([HumanMessage(content=prompt)])
47
+ return result.content
48
+
49
  # ✅ Save uploaded file asynchronously
50
  async def save_file(file: UploadFile) -> str:
51
  filename = f"{uuid4()}_{file.filename}"
 
80
  text = extract_text_from_pdf(path)
81
  print("✅ Text extracted.")
82
 
83
+ json_result = parse_resume_text(text)
84
+ print("✅ JSON Created.")
85
+
86
  os.remove(path)
87
  print("🧹 File removed.")
88
 
89
+ return json_result
90
 
91
  except Exception as e:
92
  import traceback