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