shahabkahn's picture
Update main.py
89b8097 verified
raw
history blame contribute delete
No virus
1.65 kB
from fastapi import FastAPI, HTTPException
from transformers import pipeline
from pydantic import BaseModel
import nest_asyncio
#from pyngrok import ngrok
from fastapi.responses import RedirectResponse
app = FastAPI()
# Load the model
text_classifier = pipeline("text-classification", model="mrm8488/distilroberta-finetuned-financial-news-sentiment-analysis")
# Input data model
class TextInput(BaseModel):
text: str
@app.post('/analyze')
async def Predict_Sentiment(text_input: TextInput):
text = text_input.text
# Validate input text
if not text.strip(): # Check if text is empty or contains only whitespace
raise HTTPException(status_code=400, detail="Input text is empty or contains only whitespace.")
elif text.strip() == "--": # Check if text is "--"
raise HTTPException(status_code=400, detail="Invalid input text.")
elif text.isdigit(): # Check if text contains only digits
raise HTTPException(status_code=400, detail="Input text contains only digits.")
elif not any(c.isalpha() for c in text): # Check if text contains any alphabetic characters
raise HTTPException(status_code=400, detail="Input text contains no alphabetic characters.")
# Perform sentiment analysis
try:
return text_classifier(text)
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@app.get('/')
async def home():
#return "Welcome to Financial Sentiment Analysis API"
return RedirectResponse(url="/docs")
#ngrok_tunnel = ngrok.connect(8000)
#print('Public URL:', ngrok_tunnel.public_url)
nest_asyncio.apply()
#uvicorn.run(app, port=8000)