Spaces:
Runtime error
Runtime error
| import os | |
| import pandas as pd | |
| import requests | |
| from plotnine import aes, geom_point, ggplot, labs, theme_light | |
| from shiny import module, reactive, render, ui | |
| def query_output_ui(): | |
| out = ui.row( | |
| {"style": "border: 1px solid gray; border-radius: 5px; margin:10px"}, | |
| ui.column( | |
| 4, | |
| ui.input_text("prompt", "Prompt", placeholder="Enter query"), | |
| ), | |
| ui.column(4, ui.output_table("score_table")), | |
| ui.column(4, ui.output_plot("score_plot")), | |
| ) | |
| return out | |
| def query_output_server(input, output, session): | |
| def response_table(): | |
| # This is included to both show the expected API response, and populate | |
| # the downstream item with zeros before a prompt is entered. | |
| if input.prompt() == "": | |
| resp = [ | |
| [ | |
| {"label": "neutral", "score": 0}, | |
| {"label": "surprise", "score": 0}, | |
| {"label": "fear", "score": 0}, | |
| {"label": "anger", "score": 0}, | |
| {"label": "disgust", "score": 0}, | |
| {"label": "sadness", "score": 0}, | |
| {"label": "joy", "score": 0}, | |
| ] | |
| ] | |
| else: | |
| resp = query(input.prompt()) | |
| df = pd.DataFrame( | |
| { | |
| "sentiment": [x["label"] for x in resp[0]], | |
| "score": [x["score"] for x in resp[0]], | |
| } | |
| ) | |
| return df | |
| def score_plot(): | |
| return plot_response(response_table(), input.prompt()) | |
| def score_table(): | |
| return response_table() | |
| def plot_response(df, plot_title): | |
| out = ( | |
| ggplot(df, aes(y="reorder(sentiment, score)", x="score")) | |
| + geom_point() | |
| + theme_light() | |
| + labs(title=f'Prompt: "{plot_title}"', y="Sentiment", x="Score") | |
| ) | |
| return out | |
| def query(text): | |
| API_URL = "https://api-inference.huggingface.co/models/j-hartmann/emotion-english-distilroberta-base" | |
| headers = {"Authorization": "Bearer " + os.environ["HF_API_KEY"]} | |
| payload = {"inputs": text} | |
| response = requests.post(API_URL, headers=headers, json=payload) | |
| return response.json() | |