test / app.py
fedjumpergaming's picture
Update app.py
46b12e5 verified
Raw
History Blame Contribute Delete
2.33 kB
import gradio as gr
import requests
import os
# ---------- CONFIG ----------
# We'll use the free Inference API – no local model downloads.
# Get your token from https://huggingface.co/settings/tokens
# Add it as a Space secret named "HF_TOKEN"
HF_TOKEN = os.getenv("HF_TOKEN")
API_URL = "https://api-inference.huggingface.co/models/distilbert-base-uncased-finetuned-sst-2-english"
headers = {"Authorization": f"Bearer {HF_TOKEN}"} if HF_TOKEN else {}
# ---------- FUNCTION ----------
def analyze_sentiment(text):
"""Send text to the model and return the sentiment label + score."""
if not text.strip():
return "⚠️ Please enter some text."
# If no token is set, show a friendly error.
if not HF_TOKEN:
return "🔑 Please set your HF_TOKEN as a Space secret."
payload = {"inputs": text}
try:
response = requests.post(API_URL, headers=headers, json=payload)
response.raise_for_status() # raise if HTTP error
# The API returns a list of predictions: [{'label': 'POSITIVE', 'score': 0.99}, ...]
result = response.json()
# The first element is the list of predictions for the first input.
# For this model, it returns a list of two dicts: one for NEGATIVE, one for POSITIVE.
# We'll pick the one with highest score.
predictions = result[0] # list of dicts
best = max(predictions, key=lambda x: x['score'])
label = best['label']
score = best['score']
return f"**{label}** (confidence: {score:.2%})"
except requests.exceptions.RequestException as e:
return f"❌ API error: {str(e)}"
# ---------- GRADIO INTERFACE ----------
demo = gr.Interface(
fn=analyze_sentiment,
inputs=gr.Textbox(
label="Enter your text",
placeholder="I love Hugging Face Spaces!",
lines=3
),
outputs=gr.Markdown(label="Sentiment result"),
title="😊 Sentiment Analyzer",
description="Enter any text and get a sentiment prediction (positive/negative). Powered by DistilBERT.",
examples=[
["This product is amazing!"],
["I'm really disappointed with the service."],
["The movie was okay, nothing special."],
],
theme="huggingface",
)
# ---------- RUN ----------
if __name__ == "__main__":
demo.launch()