pratham0011's picture
Update frontend.py
841c3f5 verified
raw
history blame contribute delete
3.11 kB
import gradio as gr
import pandas as pd
import os
import sys
import requests
import json
# Add parent directory to path to import from parent directory
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from utils.validators import url
# Configuration for backend API
BACKEND_API_URL = "https://pratham0011-shl-test-recommender-api.hf.space"
def is_valid_url(input_url):
return url(input_url)
def get_recommendations(input_text, max_recommendations):
try:
is_url = is_valid_url(input_text)
# Make API request to backend
api_url = f"{BACKEND_API_URL}/recommend"
payload = {
"query": input_text,
"max_recommendations": max_recommendations
}
response = requests.post(api_url, json=payload)
response.raise_for_status() # Raise exception for HTTP errors
data = response.json()
# Convert to DataFrame for Gradio display
formatted_assessments = []
for assessment in data.get("recommended_assessments", []):
formatted_assessments.append({
"url": assessment.get("url", ""),
"adaptive_support": assessment.get("adaptive_support", "No"),
"description": assessment.get("description", ""),
"duration": assessment.get("duration", 60),
"remote_support": assessment.get("remote_support", "No"),
"test_type": ", ".join(assessment.get("test_type", ["General Assessment"]))
})
df = pd.DataFrame(formatted_assessments)
return df
except Exception as e:
# Return error as DataFrame for display
return pd.DataFrame([{"url": "", "adaptive_support": "", "description": f"Error: {str(e)}", "duration": 0, "remote_support": "", "test_type": ""}])
with gr.Blocks(title="SHL Test Recommender") as demo:
gr.Markdown("# SHL Test Recommender")
gr.Markdown("""
This tool recommends SHL tests based on job descriptions or natural language queries.
""")
with gr.Row():
with gr.Column():
input_text = gr.Textbox(
label="Enter job description or URL",
placeholder="Paste job description or URL here...",
lines=10
)
max_recommendations = gr.Slider(
minimum=1,
maximum=10,
value=4,
step=1,
label="Maximum number of recommendations"
)
submit_btn = gr.Button("Get Recommendations", variant="primary")
recommendations_output = gr.DataFrame(
label="Recommended SHL Tests",
headers=["url", "adaptive_support", "description", "duration", "remote_support", "test_type"],
interactive=False
)
submit_btn.click(
fn=get_recommendations,
inputs=[input_text, max_recommendations],
outputs=[recommendations_output]
)
if __name__ == "__main__":
demo.launch(server_name="0.0.0.0", server_port=7860, share=False,debug = True)