import streamlit as st
import pandas as pd
from db import insert_data_if_empty, get_mongo_client
from chatbot import chatbot_response  # Import chatbot functionality

#### **1. Ensure Data is Inserted Before Display**
insert_data_if_empty()

#### **2. MongoDB Connection**
collection = get_mongo_client()

#### **3. Streamlit App UI**
st.title("📊 AI Sentiment Analysis Chatbot")

# Show first 5 rows from MongoDB
#st.subheader("First 5 Rows from Database")
#data = list(collection.find({}, {"_id": 0}).limit(5))

#if data:
#    st.write(pd.DataFrame(data))
#else:
#    st.warning("⚠️ No data found. Try refreshing the app.")

# Button to show full MongoDB data
#if st.button("Show Complete Data"):
#    all_data = list(collection.find({}, {"_id": 0}))
#    st.write(pd.DataFrame(all_data))

#### **4. AI Chatbot with Sentiment Analysis**
st.subheader("🤖 AI Chatbot with Sentiment Analysis")

# User input for chatbot
user_prompt = st.text_area("Ask AI something or paste text for sentiment analysis:")

if st.button("Analyze Sentiment & Get AI Response"):
    ai_response, sentiment_label, confidence = chatbot_response(user_prompt)

    if ai_response:
        st.write("### AI Response:")
        st.write(ai_response)

        st.write("### Sentiment Analysis:")
        st.write(f"**Sentiment:** {sentiment_label} ({confidence:.2f} confidence)")
    else:
        st.warning("⚠️ Please enter a question or text for sentiment analysis.")

#chatbot.py
import os
import streamlit as st
import google.generativeai as genai
from transformers import pipeline, AutoModelForSequenceClassification, AutoTokenizer

# 🔑 Fetch API key from Hugging Face Secrets
GEMINI_API_KEY = os.getenv("gemini_api")

if GEMINI_API_KEY:
    genai.configure(api_key=GEMINI_API_KEY)
else:
    st.error("⚠️ Google API key is missing! Set it in Hugging Face Secrets.")

# Correct Model Path
MODEL_NAME = "cardiffnlp/twitter-roberta-base-sentiment"

# Load Sentiment Analysis Model (Ensure the correct model is used)
try:
    tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
    sentiment_pipeline = pipeline("sentiment-analysis", model=MODEL_NAME, tokenizer=tokenizer)
except Exception as e:
    st.error(f"❌ Error loading sentiment model: {e}")

# Function to analyze sentiment
def analyze_sentiment(text):
    try:
        sentiment_result = sentiment_pipeline(text)[0]
        label = sentiment_result['label']  # Extract sentiment label (POSITIVE, NEGATIVE, NEUTRAL)
        score = sentiment_result['score']  # Extract confidence score

        # Convert labels to readable format
        sentiment_mapping = {
            "LABEL_0": "Negative",
            "LABEL_1": "Neutral",
            "LABEL_2": "Positive"
        }
        return sentiment_mapping.get(label, "Unknown"), score
    except Exception as e:
        return f"Error analyzing sentiment: {e}", None

# Function to generate AI response & analyze sentiment
def chatbot_response(user_prompt):
    if not user_prompt:
        return None, None, None

    try:
        # AI Response from Gemini
        model = genai.GenerativeModel("gemini-1.5-pro")
        ai_response = model.generate_content(user_prompt)

        # Sentiment Analysis
        sentiment_label, confidence = analyze_sentiment(user_prompt)

        return ai_response.text, sentiment_label, confidence
    except Exception as e:
        return f"❌ Error: {e}", None, None