import os import gradio as gr import openai from llama_index.readers.file import PDFReader from llama_index.core import VectorStoreIndex from llama_index.embeddings.openai import OpenAIEmbedding from llama_index.llms.openai import OpenAI openai.api_key = os.environ.get("OPENAI_API_KEY") def process_pdf(file, question): try: reader = PDFReader() documents = reader.load_data(file=file.name) embed_model = OpenAIEmbedding() llm = OpenAI() index = VectorStoreIndex.from_documents(documents, embed_model=embed_model) query_engine = index.as_query_engine(llm=llm) response = query_engine.query(question) return str(response) except Exception as e: return f"❌ Error: {e}" # Gradio Blocks UI with gr.Blocks(title="Resume Analyzer by Advaith") as demo: gr.Markdown(""" # 📄 Resume Analyzer Upload a resume and ask any question about the candidate! Powered by **LlamaIndex** + **OpenAI** """) with gr.Row(): pdf_file = gr.File(label="📁 Upload your resume (PDF)", file_types=[".pdf"]) question = gr.Textbox(lines=2, label="💬 Ask something", placeholder="e.g., What are the candidate's technical strengths?") analyze_button = gr.Button("🔍 Analyze") result = gr.Textbox(label="🧠 Answer", lines=10) def run_analysis(file, question): return process_pdf(file, question) analyze_button.click(run_analysis, inputs=[pdf_file, question], outputs=result) # Launch app if __name__ == "__main__": demo.launch()