Spaces:
Configuration error
Configuration error
| import streamlit as st | |
| import pandas as pd | |
| from langchain.agents import create_csv_agent | |
| from langchain.llms import OpenAI | |
| import time | |
| # Set Streamlit page configuration | |
| st.set_page_config(page_title='CSV Processing', | |
| page_icon=":memo:", | |
| layout='wide', | |
| initial_sidebar_state='collapsed') | |
| # Set CSS properties for HTML components | |
| st.markdown(""" | |
| <style> | |
| body { | |
| color: #fff; | |
| background-color: #4f8bf9; | |
| } | |
| h1, h2 { | |
| color: #ffdd00; | |
| } | |
| </style> | |
| """, unsafe_allow_html=True) | |
| hide_style=''' | |
| <style> | |
| #MainMenu {visibility:hidden;} | |
| footer {visibility:hidden;} | |
| .css-hi6a2p {padding-top: 0rem;} | |
| head {visibility:hidden;} | |
| </style> | |
| ''' | |
| st.markdown(""" | |
| <h1 style='text-align: center; color: #ffdd00;'>XLS Office Documents Analysis with ChatGPT4 NLP Model</h1> | |
| """, unsafe_allow_html=True) | |
| #st.title('XLS Office Documents Analysis with ChatGPT4 NLP Model') | |
| def load_data(file): | |
| df = pd.read_excel(file, engine='openpyxl') | |
| df.to_csv('data.csv', index=False) # Convert XLS to CSV | |
| return 'data.csv' | |
| def initialize_agent(file, openai_api_key): | |
| agent = create_csv_agent(OpenAI(temperature=0, openai_api_key=openai_api_key), file, verbose=True) | |
| return agent | |
| uploaded_file = st.file_uploader("Upload XLS", type=['xlsx']) | |
| st.markdown(hide_style, unsafe_allow_html=True) | |
| openai_api_key = st.sidebar.text_input('OpenAI API Key', type="password") | |
| # Pre-defined question examples | |
| question_examples = [ | |
| "how many rows are there?", | |
| "how many people are female?", | |
| "how many people have stayed more than 3 years in the city?", | |
| "how many people have stayed more than 3 years in the city and are female?", | |
| "Are there more males or females?", | |
| "What are the column names?", | |
| "What is the average age?", | |
| "Which country appears the most and how many times does it appear?", | |
| "What is the ratio of males to females?" | |
| # Add more examples as needed | |
| ] | |
| # Dropdown select box for question examples | |
| selected_example = st.selectbox('Choose a question example:', question_examples) | |
| # Pre-populate the question field with the selected example | |
| question = st.text_input('Enter your question:', value=selected_example) | |
| if not openai_api_key or not openai_api_key.startswith('sk-'): | |
| st.warning('Please enter your OpenAI API key!', icon='⚠️') | |
| else: | |
| if uploaded_file is not None: | |
| # Create a progress bar | |
| #progress_bar = st.progress(0) | |
| #progress_bar.progress(25) # Start the progress at 25% | |
| csv_file = load_data(uploaded_file) # Now the uploaded file is an XLS file | |
| #progress_bar.progress(50) # Update the progress to 50% | |
| agent = initialize_agent(csv_file, openai_api_key) | |
| #progress_bar.progress(100) # Complete the progress bar | |
| if question: | |
| response = agent.run(question) | |
| with st.spinner('Wait for it...'): | |
| time.sleep(5) | |
| st.success('Done!') | |
| #st.markdown(f'**Response:** {response}') | |
| st.markdown(f'<div style="color: red; font-size: 24px; text-align: center;">The Answer is:{response}</div>',unsafe_allow_html=True) | |