File size: 2,713 Bytes
7bf1eec
a199ef4
c93a752
 
a199ef4
 
c93a752
7bf1eec
a199ef4
 
 
c93a752
 
 
 
 
 
 
7bf1eec
c93a752
 
 
 
 
 
 
7bf1eec
 
c93a752
 
 
 
 
 
 
7bf1eec
c93a752
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7bf1eec
c93a752
 
 
 
 
 
 
 
 
7bf1eec
c93a752
 
7bf1eec
c93a752
 
 
 
 
 
7bf1eec
c93a752
 
 
 
 
7bf1eec
c93a752
 
 
 
 
 
 
 
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import os
import pandas as pd
import numpy as np
import streamlit as st
from groq import Groq

GROQ_API_KEY = "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"

# Initialize Groq API client
client = Groq(api_key=GROQ_API_KEY)

# Function to analyze energy usage
def analyze_energy_usage(data, household_id=None):
    if household_id:
        # Filter data for a specific household
        household_data = data[data["Household ID"] == household_id]
    else:
        household_data = data

    # Aggregate data
    total_usage = household_data["Energy Usage (kWh)"].sum()
    avg_cost = household_data["Cost"].mean()
    peak_time_period = (
        household_data.groupby("Time Period")["Energy Usage (kWh)"]
        .sum()
        .idxmax()
    )

    # Generate a summary report
    report_summary = f"""
    Total Energy Usage: {total_usage} kWh
    Average Cost: ${avg_cost:.2f}
    Peak Usage Time Period: {peak_time_period}
    """
    return report_summary, household_data

# Function to generate recommendations using Groq's API
def generate_recommendations(context):
    try:
        response = client.chat.completions.create(
            messages=[
                {
                    "role": "user",
                    "content": f"Based on the following data:\n{context}\nProvide energy-saving recommendations and insights."
                }
            ],
            model="llama3-8b-8192",
            stream=False,
        )
        return response.choices[0].message.content
    except Exception as e:
        return f"An error occurred: {e}"

# Streamlit App
st.title("Energy Usage Analysis Report Generator")

# Upload Dataset
uploaded_file = st.file_uploader("Upload your energy usage dataset (CSV)", type="csv")
if uploaded_file:
    # Load dataset
    data = pd.read_csv(uploaded_file)
    st.write("Dataset Preview:", data.head())

    # User Input
    household_id = st.text_input("Enter Household ID for specific analysis (optional)")

    # Analyze Data
    if st.button("Analyze Energy Usage"):
        with st.spinner("Analyzing..."):
            report_summary, filtered_data = analyze_energy_usage(data, household_id)
            st.subheader("Energy Usage Summary")
            st.text(report_summary)

            # Generate recommendations
            st.subheader("Recommendations")
            context = filtered_data.to_string(index=False)
            recommendations = generate_recommendations(context)
            st.text(recommendations)

# Footer
st.sidebar.title("About")
st.sidebar.info(
    """
    This app generates energy usage reports and recommendations based on uploaded data.
    Built with Streamlit and powered by Groq's language model.
    """
)