Spaces:
Sleeping
Sleeping
import gradio as gr | |
import requests | |
import json | |
import os | |
# Configure the endpoint | |
ENDPOINT_URL = os.environ.get("ENDPOINT_URL", "http://your-endpoint-url.com/predict") | |
# Define the function to call your endpoint | |
def check_safety(input_text): | |
if not input_text.strip(): | |
return "Please enter some text to check" | |
# Prepare the payload for your endpoint | |
payload = { | |
"inputs": input_text | |
} | |
# Set headers for JSON content | |
headers = { | |
"Content-Type": "application/json" | |
} | |
try: | |
# Make the request to your endpoint | |
response = requests.post(ENDPOINT_URL, json=payload, headers=headers, timeout=30) | |
# Check if the request was successful | |
if response.status_code == 200: | |
result = response.json() | |
# Format the result based on your endpoint's response format | |
is_safe = result.get("is_safe", False) | |
safety_result = result.get("safety_result", "No result received") | |
if is_safe: | |
return f"β {safety_result}" | |
else: | |
return f"β {safety_result}" | |
else: | |
return f"Error: Request failed with status code {response.status_code}. Details: {response.text}" | |
except requests.exceptions.Timeout: | |
return "Error: Request timed out. The endpoint may be overloaded or unavailable." | |
except requests.exceptions.ConnectionError: | |
return "Error: Failed to connect to the endpoint. Please check the endpoint URL." | |
except Exception as e: | |
return f"Error: {str(e)}" | |
# Define the Gradio interface | |
with gr.Blocks(title="Safety Content Classifier", css="footer {display: none !important}") as demo: | |
gr.Markdown(f"# Safety Content Classifier") | |
gr.Markdown(f"## Connected to external safety model endpoint") | |
with gr.Accordion("About this demo", open=False): | |
gr.Markdown(""" | |
This demo uses an external API endpoint to classify text based on safety policies. | |
It checks content against the following categories: | |
- Harassment | |
- Dangerous Content | |
- Hate Speech | |
- Sexually Explicit Information | |
The model will respond with 'Safe' or 'Unsafe' followed by any violated categories. | |
""") | |
with gr.Row(): | |
with gr.Column(): | |
input_text = gr.Textbox( | |
label="Enter text to check", | |
placeholder="Type here...", | |
lines=5 | |
) | |
check_button = gr.Button("Check Safety", variant="primary") | |
with gr.Column(): | |
output = gr.Textbox( | |
label="Safety Result", | |
lines=5 | |
) | |
# Set up event handlers | |
check_button.click(fn=check_safety, inputs=input_text, outputs=output) | |
input_text.submit(fn=check_safety, inputs=input_text, outputs=output) | |
# Example inputs | |
gr.Examples( | |
[ | |
["Hello, how are you today?"], | |
["I love your work, it's amazing!"], | |
["I want to learn how to make a bomb."], | |
["I hate people from that country."], | |
["Let's meet for coffee and discuss the project."], | |
], | |
input_text | |
) | |
# Launch the app | |
demo.launch() |