ruslanmv commited on
Commit
b7dc77c
Β·
verified Β·
1 Parent(s): be3ba7e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +41 -46
app.py CHANGED
@@ -350,10 +350,38 @@ def main():
350
  # Build Gradio interface
351
  with gr.Blocks(css=css) as demo:
352
  gr.Markdown(
353
- "<h1 style='text-align:center;'>πŸ‘‹ AI HR Interview Assistant - Admin Panel</h1>"
354
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
355
 
356
 
 
 
 
 
357
  # Admin Panel Tab
358
  with gr.Tab("Admin Panel", id="admin_tab"):
359
  with gr.Tab("API Key Settings"):
@@ -365,15 +393,8 @@ def main():
365
 
366
  def update_api_key(api_key):
367
  os.environ["OPENAI_API_KEY"] = api_key # Caution: Modifying os.environ is session-based
368
- global interview_func, initial_message, final_message, initial_api_key_status_message # Declare globals to update them
369
  initial_api_key_status_message = check_api_key() # Update status immediately after key is entered
370
- QUESTIONS_FILE_PATH = "questions.json" # Define QUESTIONS_FILE_PATH here
371
- try:
372
- questions = read_questions_from_json(QUESTIONS_FILE_PATH) # reload questions here to fix NameError: name 'questions' is not defined
373
- except Exception as e:
374
- print(f"Error reloading questions in update_api_key: {e}")
375
- return f"❌ Error reloading questions: {e}"
376
-
377
  interview_func, initial_message, final_message = conduct_interview(questions) # Re-init interview function
378
  return initial_api_key_status_message # Return status message
379
 
@@ -387,8 +408,8 @@ def main():
387
  # with gr.Tab("Generate Questions"):
388
  with gr.Tab("Generate Questions"):
389
  try:
390
- # Assuming these are defined in backend2.py
391
- from backend2 import (
392
  load_json_data,
393
  PROFESSIONS_FILE,
394
  TYPES_FILE,
@@ -530,28 +551,6 @@ def main():
530
  )
531
 
532
 
533
- # --- Chatbot, User Input, Audio Output definitions (moved to be before button event handlers) ---
534
- chatbot = gr.Chatbot(
535
- [],
536
- elem_id="chatbot",
537
- bubble_full_width=False,
538
- height=650
539
- )
540
-
541
- user_input = gr.Textbox(
542
- "",
543
- placeholder="Type response here... or record audio",
544
- elem_id="user-input",
545
- show_label=False,
546
- )
547
-
548
- audio_output = gr.Audio(
549
- autoplay=True,
550
- streaming=False
551
- )
552
- # --- End of Chatbot, User Input, Audio Output definitions ---
553
-
554
-
555
  # --- Gradio callback functions ---
556
 
557
  def start_interview():
@@ -622,44 +621,40 @@ def main():
622
  # --- Wire up the event handlers ---
623
 
624
  # 1) Start button
625
- start_btn = gr.Button("Start Interview", variant="primary") # Define start_btn here
626
  start_btn.click(
627
  start_interview,
628
  inputs=[],
629
- outputs=[chatbot, user_input, audio_output] # Now chatbot, user_input, audio_output are defined
630
  )
631
 
632
  # 2) Audio: when recording stops
633
- audio_input = gr.Audio(sources=["microphone"], streaming=False, type="filepath", label="Record Audio") # Define audio_input here, before use
634
  audio_input.stop_recording(
635
  interview_step_wrapper,
636
  inputs=[user_input, audio_input, chatbot],
637
- outputs=[chatbot, user_input, audio_output] # chatbot, user_input, audio_output are defined
638
  )
639
 
640
  # 3) Submit button
641
- submit_btn = gr.Button("Submit", variant="primary") # Define submit_btn here
642
  submit_btn.click(
643
  interview_step_wrapper,
644
  inputs=[user_input, audio_input, chatbot],
645
- outputs=[chatbot, user_input, audio_output] # chatbot, user_input, audio_output are defined
646
  )
647
- # 4) User input textbox submits (Enter key)
648
- user_input.submit( # user_input is defined
 
649
  on_enter_submit,
650
- inputs=[chatbot, user_input], # chatbot, user_input are defined
651
- outputs=[chatbot, user_input, audio_output] # chatbot, user_input, audio_output are defined
652
  )
653
 
654
  # 5) Clear button
655
- clear_btn = gr.Button("Clear Chat") # Define clear_btn here
656
  clear_btn.click(
657
  clear_chat,
658
  inputs=[],
659
- outputs=[chatbot, user_input, audio_output] # chatbot, user_input, audio_output are defined
660
  )
661
 
662
-
663
  # Launch Gradio (remove `share=True` if it keeps failing)
664
  demo.launch(
665
  server_name="0.0.0.0",
 
350
  # Build Gradio interface
351
  with gr.Blocks(css=css) as demo:
352
  gr.Markdown(
353
+ "<h1 style='text-align:center;'>πŸ‘‹ AI HR Interview Assistant</h1>"
354
  )
355
+ gr.Markdown(
356
+ "I will ask you a series of questions. Please answer honestly and thoughtfully. "
357
+ "When you are ready, click **Start Interview** to begin."
358
+ )
359
+
360
+ chatbot = gr.Chatbot( # Moved up here
361
+ label="Interview Chat",
362
+ height=650,
363
+ type='messages' # must return a list of dicts: {"role":..., "content":...}
364
+ )
365
+ audio_input = gr.Audio( # Moved up here
366
+ sources=["microphone"],
367
+ type="filepath",
368
+ label="Record Your Answer"
369
+ )
370
+ user_input = gr.Textbox( # Moved up here
371
+ label="Your Response",
372
+ placeholder="Type your answer here or use the microphone...",
373
+ lines=1,
374
+ )
375
+ audio_output = gr.Audio(label="Response Audio", autoplay=True) # Moved up here
376
+
377
+
378
+ start_btn = gr.Button("Start Interview", variant="primary")
379
 
380
 
381
+ with gr.Row():
382
+ submit_btn = gr.Button("Submit", variant="primary")
383
+ clear_btn = gr.Button("Clear Chat")
384
+
385
  # Admin Panel Tab
386
  with gr.Tab("Admin Panel", id="admin_tab"):
387
  with gr.Tab("API Key Settings"):
 
393
 
394
  def update_api_key(api_key):
395
  os.environ["OPENAI_API_KEY"] = api_key # Caution: Modifying os.environ is session-based
396
+ global interview_func, initial_message, final_message, questions, initial_api_key_status_message # Declare globals to update them and questions
397
  initial_api_key_status_message = check_api_key() # Update status immediately after key is entered
 
 
 
 
 
 
 
398
  interview_func, initial_message, final_message = conduct_interview(questions) # Re-init interview function
399
  return initial_api_key_status_message # Return status message
400
 
 
408
  # with gr.Tab("Generate Questions"):
409
  with gr.Tab("Generate Questions"):
410
  try:
411
+ # Assuming these are defined in backend3.py
412
+ from backend3 import (
413
  load_json_data,
414
  PROFESSIONS_FILE,
415
  TYPES_FILE,
 
551
  )
552
 
553
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
554
  # --- Gradio callback functions ---
555
 
556
  def start_interview():
 
621
  # --- Wire up the event handlers ---
622
 
623
  # 1) Start button
 
624
  start_btn.click(
625
  start_interview,
626
  inputs=[],
627
+ outputs=[chatbot, user_input, audio_output]
628
  )
629
 
630
  # 2) Audio: when recording stops
 
631
  audio_input.stop_recording(
632
  interview_step_wrapper,
633
  inputs=[user_input, audio_input, chatbot],
634
+ outputs=[chatbot, user_input, audio_output]
635
  )
636
 
637
  # 3) Submit button
 
638
  submit_btn.click(
639
  interview_step_wrapper,
640
  inputs=[user_input, audio_input, chatbot],
641
+ outputs=[chatbot, user_input, audio_output]
642
  )
643
+
644
+ # 4) Pressing Enter in the textbox
645
+ user_input.submit(
646
  on_enter_submit,
647
+ inputs=[chatbot, user_input],
648
+ outputs=[chatbot, user_input, audio_output]
649
  )
650
 
651
  # 5) Clear button
 
652
  clear_btn.click(
653
  clear_chat,
654
  inputs=[],
655
+ outputs=[chatbot, user_input, audio_output]
656
  )
657
 
 
658
  # Launch Gradio (remove `share=True` if it keeps failing)
659
  demo.launch(
660
  server_name="0.0.0.0",