RESUMEBOT / app.py
SANA848's picture
Create app.py
dbe3e79 verified
# πŸ” Securely Set OpenAI API Key
import os
import getpass
os.environ["OPENAI_API_KEY"] = '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' # <- Replace with your key
# πŸ“š Imports
from llama_index.core import VectorStoreIndex, download_loader
import gradio as gr
# πŸ“– Load PDFReader dynamically (works across versions)
PDFReader = download_loader("PDFReader")
# 🌐 Global variables to store index and query engine
index = None
query_engine = None
# πŸ“₯ Load and Process Resume PDF
def process_resume(file):
global index, query_engine
try:
file_path = file.name
loader = PDFReader()
documents = loader.load_data(file_path)
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine()
return "βœ… Resume uploaded and indexed successfully."
except Exception as e:
return f"❌ Error processing resume: {str(e)}"
# ❓ Answer Questions About Resume
def query_resume(question):
global query_engine
if not query_engine:
return "⚠ Please upload a resume first."
try:
response = query_engine.query(question)
return str(response)
except Exception as e:
return f"❌ Error during query: {str(e)}"
# πŸ“€ Gradio Interface for Resume Upload
upload_interface = gr.Interface(
fn=process_resume,
inputs=gr.File(label="Upload Resume (PDF)", file_types=[".pdf"]),
outputs="text",
title="πŸ“„ Resume Uploader",
description="Upload your PDF resume to enable question-answering."
)
# πŸ’¬ Gradio Interface for Resume Querying
query_interface = gr.Interface(
fn=query_resume,
inputs=gr.Textbox(lines=2, placeholder="Ask something like: What are my skills?"),
outputs="text",
title="πŸ€– Resume Query Bot",
description="Ask questions about your uploaded resume.",
examples=[
["What is my email?"],
["What are my technical skills?"],
["List the projects I have done."],
["Where did I study?"],
["Do I have any certifications?"]
]
)
# 🧩 Combine Both Interfaces
app = gr.TabbedInterface(
interface_list=[upload_interface, query_interface],
tab_names=["Upload Resume", "Ask Questions"]
)
# πŸš€ Launch the App
app.launch(share=True)