File size: 1,658 Bytes
0105e3b
af09235
5628a29
 
0105e3b
58c2482
5628a29
 
 
 
 
 
 
 
ea4634d
58c2482
 
ea4634d
58c2482
af09235
ea4634d
58c2482
e94ec88
ea4634d
af09235
 
 
 
58c2482
ea4634d
58c2482
 
 
 
 
 
 
e94ec88
 
 
 
 
 
 
 
 
5628a29
 
 
 
 
 
 
e94ec88
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import streamlit as st
import pandas as pd
import google.generativeai as genai  # Import Generative AI library
import os
from pymongo import MongoClient
from db import insert_data_if_empty, get_mongo_client  # Import functions from db.py

# 🔑 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.")

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

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

#### **3. Streamlit App to Display Data**
st.title("📊 MongoDB Data Viewer with AI 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. GenAI Chatbot Interface**
st.subheader("🤖 AI Chatbot")

# User input for chatbot
user_prompt = st.text_input("Ask AI something:")

if st.button("Get AI Response"):
    if user_prompt:
        try:
            model = genai.GenerativeModel("gemini-pro")
            response = model.generate_content(user_prompt)
            st.write("### AI Response:")
            st.write(response.text)
        except Exception as e:
            st.error(f"❌ Error: {e}")
    else:
        st.warning("⚠️ Please enter a question.")