# app.py import gradio as gr import os from openai import OpenAI # ----------------------------- # 1️⃣ AI Interview logic # ----------------------------- def groq_ask(question, job_role, api_key): """ Sends question + job_role to OpenAI (replace model with Groq Llama-3 when available) """ if not api_key.strip(): return "❌ Please provide API key." client = OpenAI(api_key=api_key) prompt = f"Act as an interviewer for the role of {job_role}. Question: {question}" try: response = client.chat.completions.create( model="gpt-4", messages=[{"role": "user", "content": prompt}], temperature=0.7 ) return response.choices[0].message.content except Exception as e: return f"❌ Error: {e}" def analyze_answer(user_answer): """ Returns confidence score and feedback """ confidence = round(min(len(user_answer)/100, 1.0)*100, 2) feedback = "✅ Good answer!" if confidence > 50 else "⚠️ Needs improvement." return f"Confidence Score: {confidence}%\nFeedback: {feedback}" def interview_app(job_role, user_question, user_answer, api_key): ai_response = groq_ask(user_question, job_role, api_key) feedback = analyze_answer(user_answer) return ai_response, feedback # ----------------------------- # 2️⃣ Gradio 3D UI Layout # ----------------------------- with gr.Blocks(css=""" body {background: linear-gradient(135deg, #0f0c29, #302b63, #24243e);} .gradio-container {color:white;} .gr-button {background-color:#ff4b2b; color:white; border-radius:10px;} .gr-textbox {background-color:#1c1c3c; color:white; border-radius:10px;} """) as demo: gr.HTML("""

💡 AI Interview Coach 3D

""") with gr.Row(): with gr.Column(scale=1): job_role_input = gr.Textbox(label="Job Role", placeholder="Software Developer") user_question_input = gr.Textbox(label="Your Question to AI", placeholder="Type a question") user_answer_input = gr.Textbox(label="Your Answer", placeholder="Type your answer here") api_key_input = gr.Textbox(label="OpenAI/Groq API Key", placeholder="Enter API key") ai_response_output = gr.Textbox(label="AI Interviewer's Response") feedback_output = gr.Textbox(label="Feedback & Confidence Score") gr.Button("Submit").click( interview_app, inputs=[job_role_input, user_question_input, user_answer_input, api_key_input], outputs=[ai_response_output, feedback_output] ) with gr.Column(scale=1): gr.HTML("""
""") # ----------------------------- # 3️⃣ Launch app # ----------------------------- demo.launch()