Ashar086's picture
Update app.py
3515090 verified
# app.py
import streamlit as st
import pandas as pd
from llama_index import GPTVectorStoreIndex, Document
from sklearn.metrics import accuracy_score, precision_score, recall_score
import json
import autogen
from pathlib import Path
from modules.data_ingestion import DataIngestionModule
from modules.prompt_engineering import PromptEngineeringModule
from modules.evaluation import EvaluationModule
class LlamaDeveloperAid:
def __init__(self):
st.set_page_config(page_title="Llama Developer Aid", layout="wide")
self.data_module = DataIngestionModule()
self.prompt_module = PromptEngineeringModule()
self.eval_module = EvaluationModule()
def main(self):
st.title("Llama Developer Aid")
# Sidebar for navigation
page = st.sidebar.selectbox(
"Select Module",
["Data Ingestion", "Prompt Engineering", "Evaluation"]
)
if page == "Data Ingestion":
self.render_data_ingestion()
elif page == "Prompt Engineering":
self.render_prompt_engineering()
else:
self.render_evaluation()
def render_data_ingestion(self):
st.header("Data Ingestion Module")
# File upload
uploaded_file = st.file_uploader("Upload your dataset", type=["csv", "xlsx", "json"])
if uploaded_file:
df = self.data_module.load_data(uploaded_file)
st.dataframe(df)
if st.button("Process and Index Data"):
with st.spinner("Processing..."):
indexed_data = self.data_module.index_data(df)
st.success("Data processed and indexed successfully!")
st.session_state['indexed_data'] = indexed_data
def render_prompt_engineering(self):
st.header("Prompt Engineering Module")
# Load templates
templates = self.prompt_module.load_templates()
selected_template = st.selectbox("Select Prompt Template", list(templates.keys()))
# Display template details
if selected_template:
template = templates[selected_template]
prompt_text = st.text_area("Customize Prompt", template['prompt'])
if st.button("Generate Response"):
with st.spinner("Generating..."):
response = self.prompt_module.generate_response(prompt_text)
st.write("Generated Response:", response)
def render_evaluation(self):
st.header("Evaluation Module")
if 'indexed_data' not in st.session_state:
st.warning("Please process data in the Data Ingestion module first")
return
# Evaluation metrics
metrics = st.multiselect(
"Select Evaluation Metrics",
["Accuracy", "Precision", "Recall"]
)
if st.button("Run Evaluation"):
with st.spinner("Evaluating..."):
results = self.eval_module.evaluate_model(
st.session_state['indexed_data'],
metrics
)
st.write("Evaluation Results:", results)
if __name__ == "__main__":
app = LlamaDeveloperAid()
app.main()