Zoro-147 commited on
Commit
85b90a3
·
verified ·
1 Parent(s): f3ef652

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +42 -24
app.py CHANGED
@@ -1,37 +1,55 @@
1
  import json
2
- import gradio as gr
3
  from textblob import TextBlob
 
 
4
 
5
- def sentiment_analysis(text: str) -> str:
6
- """
7
- Analyze the sentiment of the given text.
8
-
9
- Args:
10
- text (str): The text to analyze
11
 
12
- Returns:
13
- str: A JSON string containing polarity, subjectivity, and assessment
14
- """
15
  blob = TextBlob(text)
16
  sentiment = blob.sentiment
17
-
18
- result = {
19
- "polarity": round(sentiment.polarity, 2), # -1 (negative) to 1 (positive)
20
- "subjectivity": round(sentiment.subjectivity, 2), # 0 (objective) to 1 (subjective)
21
- "assessment": "positive" if sentiment.polarity > 0 else "negative" if sentiment.polarity < 0 else "neutral"
 
22
  }
23
 
24
- return json.dumps(result)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
 
26
- # Create the Gradio interface
27
  demo = gr.Interface(
28
- fn=sentiment_analysis,
29
- inputs=gr.Textbox(placeholder="Enter text to analyze..."),
30
- outputs=gr.Textbox(), # Changed from gr.JSON() to gr.Textbox()
31
- title="Text Sentiment Analysis",
32
- description="Analyze the sentiment of text using TextBlob"
33
  )
34
 
35
- # Launch the interface and MCP server
36
  if __name__ == "__main__":
37
- demo.launch(mcp_server=True)
 
1
  import json
 
2
  from textblob import TextBlob
3
+ from fastapi import FastAPI, HTTPException
4
+ import uvicorn
5
 
6
+ app = FastAPI()
 
 
 
 
 
7
 
8
+ def analyze_sentiment(text: str) -> dict:
9
+ """Core sentiment analysis logic"""
 
10
  blob = TextBlob(text)
11
  sentiment = blob.sentiment
12
+ return {
13
+ "polarity": round(sentiment.polarity, 2),
14
+ "subjectivity": round(sentiment.subjectivity, 2),
15
+ "assessment": "positive" if sentiment.polarity > 0
16
+ else "negative" if sentiment.polarity < 0
17
+ else "neutral"
18
  }
19
 
20
+ @app.post("/mcp/sentiment")
21
+ async def handle_mcp_request(data: dict):
22
+ """
23
+ MCP-compatible endpoint
24
+ Expected input: {"parameters": {"text": "your text here"}}
25
+ """
26
+ try:
27
+ text = data.get("parameters", {}).get("text", "")
28
+ if not text:
29
+ raise HTTPException(status_code=400, detail="Missing 'text' parameter")
30
+
31
+ result = analyze_sentiment(text)
32
+ return {
33
+ "jsonrpc": "2.0",
34
+ "result": result,
35
+ "id": "sentiment-response"
36
+ }
37
+ except Exception as e:
38
+ raise HTTPException(status_code=500, detail=str(e))
39
+
40
+ from fastapi.staticfiles import StaticFiles
41
+ import gradio as gr
42
+
43
+ # Mount Gradio interface at /ui
44
+ app.mount("/ui", gr.routes.App.create_app(demo))
45
 
46
+ # Create Gradio interface (same as original)
47
  demo = gr.Interface(
48
+ fn=lambda text: analyze_sentiment(text),
49
+ inputs=gr.Textbox(),
50
+ outputs=gr.JSON(),
51
+ title="Sentiment Analysis UI"
 
52
  )
53
 
 
54
  if __name__ == "__main__":
55
+ uvicorn.run(app, host="0.0.0.0", port=8000)