File size: 1,738 Bytes
5ee2b3a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
import pandas as pd
from pandasai import SmartDataframe
from langchain_groq import ChatGroq

llm = ChatGroq(
    model="llama3-70b-8192",
    temperature=0.1,
    max_retries=2,
)

# Initialize session state for URL and DataFrame
if 'pre_url' not in st.session_state:
    st.session_state['pre_url'] = ''
if 'df' not in st.session_state:
    st.session_state['df'] = None

# Streamlit app
st.title("Conversation Analysis")

# Step 1: Choose conversation
opendata_options = [
    '15-per-hour-seattle', 'american-assembly.bowling-green', 'brexit-consensus',
    'canadian-electoral-reform', 'football-concussions', 'march-on.operation-marchin-orders',
    'scoop-hivemind.affordable-housing', 'scoop-hivemind.biodiversity',
    'scoop-hivemind.freshwater', 'scoop-hivemind.taxes', 'scoop-hivemind.ubi',
    'ssis.land-bank-farmland.2rumnecbeh.2021-08-01', 'vtaiwan.uberx'
]
selected_option = st.selectbox("Choose conversation", opendata_options)

url =  (
    f"https://raw.githubusercontent.com/compdemocracy/openData/master/{selected_option}/comments.csv"
)

# Load data only if URL changes
if st.session_state['pre_url'] != url:
    df = SmartDataframe(pd.read_csv(url, index_col=0), config={"llm": llm})
    st.session_state['df'] = df
    st.session_state['pre_url'] = url

# Step 2: Request for analysis or chart
request = st.text_input(
    "Enter your analysis request:",
    "Plot a histogram about the distribution of agree, disagree and neutral comments against the topic")

# Execute chat and display results
if st.button("Analyze"):
    if st.session_state['df'] is not None:
        st.session_state['df'].chat(request)
    else:
        st.warning("Please select a conversation and load data first.")