Hasitha16 commited on
Commit
bb192ef
Β·
verified Β·
1 Parent(s): 022e485

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +15 -9
main.py CHANGED
@@ -5,6 +5,9 @@ from fastapi.middleware.cors import CORSMiddleware
5
  from pydantic import BaseModel
6
  from datetime import datetime
7
  import uuid
 
 
 
8
  from transformers import pipeline
9
  import logging, traceback
10
  from typing import Optional, List, Union
@@ -16,7 +19,7 @@ from model import (
16
  )
17
 
18
  app = FastAPI(
19
- title="🧠 NeuroPulse AI",
20
  description="Multilingual GenAI for smarter feedback β€” summarization, sentiment, emotion, aspects, Q&A and tags.",
21
  version="2025.1.0",
22
  openapi_url="/openapi.json",
@@ -38,13 +41,13 @@ log_store = [] # βœ… Shared in-memory churn log
38
 
39
  @app.get("/", response_class=HTMLResponse)
40
  def root():
41
- return "<h1>NeuroPulse AI Backend is Running</h1>"
42
 
43
  @app.get("/docs", include_in_schema=False)
44
  def custom_swagger_ui():
45
  return get_swagger_ui_html(
46
  openapi_url=app.openapi_url,
47
- title="🧠 Swagger UI - NeuroPulse AI",
48
  swagger_favicon_url="https://cdn-icons-png.flaticon.com/512/3794/3794616.png",
49
  swagger_js_url="https://cdn.jsdelivr.net/npm/[email protected]/swagger-ui-bundle.js",
50
  swagger_css_url="https://cdn.jsdelivr.net/npm/[email protected]/swagger-ui.css",
@@ -188,6 +191,9 @@ async def bulk_analyze(data: BulkReviewInput, token: str = Query(None)):
188
  sentiment_pipeline = pipeline("sentiment-analysis", model=data.model)
189
 
190
  for i, review_text in enumerate(data.reviews):
 
 
 
191
  if len(review_text.split()) < 20:
192
  results.append({
193
  "review": review_text,
@@ -195,6 +201,7 @@ async def bulk_analyze(data: BulkReviewInput, token: str = Query(None)):
195
  })
196
  continue
197
 
 
198
  summary = smart_summarize(review_text, n_clusters=2 if data.intelligence else 1)
199
  sentiment = sentiment_pipeline(review_text)[0]
200
 
@@ -246,8 +253,7 @@ async def bulk_analyze(data: BulkReviewInput, token: str = Query(None)):
246
  logging.error(f"πŸ”₯ Bulk processing failed: {traceback.format_exc()}")
247
  raise HTTPException(status_code=500, detail="Failed to analyze bulk reviews")
248
 
249
- from openai import OpenAI
250
- openai_client = OpenAI()
251
 
252
  @app.post("/rootcause/")
253
  async def root_cause_analysis(payload: dict, x_api_key: str = Header(None)):
@@ -272,7 +278,7 @@ async def root_cause_analysis(payload: dict, x_api_key: str = Header(None)):
272
  Suggestion: ...
273
  """
274
 
275
- response = openai_client.chat.completions.create(
276
  model="gpt-4",
277
  messages=[{"role": "user", "content": prompt}]
278
  )
@@ -292,6 +298,6 @@ async def root_cause_analysis(payload: dict, x_api_key: str = Header(None)):
292
  "suggestion": extract_line("Suggestion")
293
  }
294
 
295
- except Exception as e:
296
- logging.error(f"Root cause analysis failed: {traceback.format_exc()}")
297
- raise HTTPException(status_code=500, detail="Root cause generation failed.")
 
5
  from pydantic import BaseModel
6
  from datetime import datetime
7
  import uuid
8
+ import os
9
+ import openai
10
+ openai.api_key = os.environ.get("OPENAI_API_KEY")
11
  from transformers import pipeline
12
  import logging, traceback
13
  from typing import Optional, List, Union
 
19
  )
20
 
21
  app = FastAPI(
22
+ title="🧠 ChurnSight AI",
23
  description="Multilingual GenAI for smarter feedback β€” summarization, sentiment, emotion, aspects, Q&A and tags.",
24
  version="2025.1.0",
25
  openapi_url="/openapi.json",
 
41
 
42
  @app.get("/", response_class=HTMLResponse)
43
  def root():
44
+ return "<h1>ChurnSight AI Backend is Running</h1>"
45
 
46
  @app.get("/docs", include_in_schema=False)
47
  def custom_swagger_ui():
48
  return get_swagger_ui_html(
49
  openapi_url=app.openapi_url,
50
+ title="🧠 Swagger UI - ChurnSight AI",
51
  swagger_favicon_url="https://cdn-icons-png.flaticon.com/512/3794/3794616.png",
52
  swagger_js_url="https://cdn.jsdelivr.net/npm/[email protected]/swagger-ui-bundle.js",
53
  swagger_css_url="https://cdn.jsdelivr.net/npm/[email protected]/swagger-ui.css",
 
191
  sentiment_pipeline = pipeline("sentiment-analysis", model=data.model)
192
 
193
  for i, review_text in enumerate(data.reviews):
194
+ if not review_text.strip():
195
+ continue # Skip empty reviews
196
+
197
  if len(review_text.split()) < 20:
198
  results.append({
199
  "review": review_text,
 
201
  })
202
  continue
203
 
204
+
205
  summary = smart_summarize(review_text, n_clusters=2 if data.intelligence else 1)
206
  sentiment = sentiment_pipeline(review_text)[0]
207
 
 
253
  logging.error(f"πŸ”₯ Bulk processing failed: {traceback.format_exc()}")
254
  raise HTTPException(status_code=500, detail="Failed to analyze bulk reviews")
255
 
256
+ # Already set with os.environ β€” nothing else needed
 
257
 
258
  @app.post("/rootcause/")
259
  async def root_cause_analysis(payload: dict, x_api_key: str = Header(None)):
 
278
  Suggestion: ...
279
  """
280
 
281
+ response = openai.ChatCompletion.create(
282
  model="gpt-4",
283
  messages=[{"role": "user", "content": prompt}]
284
  )
 
298
  "suggestion": extract_line("Suggestion")
299
  }
300
 
301
+ except Exception as e:
302
+ logging.error(f"Root cause analysis failed: {traceback.format_exc()}")
303
+ return JSONResponse(status_code=500, content={"detail": f"Root cause generation failed: {str(e)}"})