King-Afridi's picture
Update app.py
80ef783 verified
import streamlit as st
import numpy as np
import torch
import matplotlib.pyplot as plt
import pandas as pd
from groq import Groq
import os
# Load Groq API Key
import os
# Set the environment variable directly in Colab (for this session)
client = Groq(api_key=os.getenv("groq_api_key"))
# Streamlit title
st.title('Smart Energy Load Forecasting')
# File uploader for dataset
uploaded_file = st.file_uploader("Upload a dataset (CSV file)", type=["csv"])
if uploaded_file is not None:
# Read the uploaded CSV file into a Pandas DataFrame
df = pd.read_csv(uploaded_file)
# Show basic information about the dataset
st.write("Dataset Preview:")
st.write(df.head())
# Optionally, display the column names to allow the user to select the relevant columns
st.write("Columns in the dataset:")
st.write(df.columns)
# Allow user to select the column for energy load (assuming the column is named 'energy_load')
energy_column = st.selectbox("Select the energy load column", df.columns)
# Display basic statistics of the energy load column
st.write(f"Statistics for {energy_column}:")
st.write(df[energy_column].describe())
# Optionally, display a line chart of the energy load data
st.write(f"Energy load over time (first 50 records):")
st.line_chart(df[energy_column].head(50))
# Input for energy prediction
user_input = st.number_input('Enter number of hours for prediction:', min_value=1, max_value=24, value=10)
# GAN Model Setup (Simplified)
class Generator(torch.nn.Module):
def __init__(self, input_dim, output_dim):
super(Generator, self).__init__()
self.fc = torch.nn.Linear(input_dim, output_dim)
def forward(self, z):
return torch.tanh(self.fc(z))
# Initialize model
input_dim = 100
output_dim = user_input
generator = Generator(input_dim, output_dim)
# Generate predictions
z = torch.randn(1, input_dim) # Noise vector
generated_data = generator(z).detach().numpy()
# Display predicted energy load
st.write("Predicted Energy Load (kW) for next {} hours:".format(user_input))
st.line_chart(generated_data[0])
# Use Groq API to interact with model (example call)
chat_completion = client.chat.completions.create(
messages=[{
"role": "user",
"content": f"Predict energy load for the next {user_input} hours."
}],
model="llama3-8b-8192",
)
st.write(chat_completion.choices[0].message.content)