PRSHNTKUMR commited on
Commit
2786a5d
Β·
verified Β·
1 Parent(s): d341ea7

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +17 -17
src/streamlit_app.py CHANGED
@@ -43,7 +43,7 @@ embeddings_model = OpenAIEmbeddings(openai_api_key=API_KEY)
43
 
44
  # --- Streamlit Page Setup ---
45
  st.set_page_config(page_title="RAG File Chat", layout="centered")
46
- st.title("\ud83e\udee0 Chat with Your Uploaded File")
47
 
48
  # --- Session State ---
49
  if "uploaded_file" not in st.session_state:
@@ -72,50 +72,50 @@ def create_agent_and_index(file_content, file_type):
72
  df = pd.read_csv(io.StringIO(file_content.decode("utf-8")))
73
  llm = OpenAI(openai_api_key=API_KEY)
74
  st.session_state.agent = create_pandas_dataframe_agent(llm, df, verbose=False)
75
- st.success("\ud83e\udd16 Agent created for CSV.")
76
  elif file_type == "xlsx":
77
  df = pd.read_excel(file_content)
78
  llm = OpenAI(openai_api_key=API_KEY)
79
  st.session_state.agent = create_pandas_dataframe_agent(llm, df, verbose=False)
80
- st.success("\ud83e\udd16 Agent created for Excel.")
81
  elif file_type == "json":
82
  df = pd.DataFrame(json.loads(file_content.decode("utf-8")))
83
  llm = OpenAI(openai_api_key=API_KEY)
84
  st.session_state.agent = create_pandas_dataframe_agent(llm, df, verbose=False)
85
- st.success("\ud83e\udd16 Agent created for JSON.")
86
  elif file_type in ["pdf", "docx"]:
87
  text = extract_text_from_file(file_content, file_type)
88
  chunks = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0).split_text(text)
89
  st.session_state.vectorstore = FAISS.from_texts(chunks, embeddings_model)
90
- st.success("\ud83d\udcca Text embedded into FAISS vectorstore.")
91
  else:
92
- st.error("\u274c Unsupported file type.")
93
  return
94
  st.session_state.file_uploaded = True
95
  st.session_state.file_type = file_type
96
 
97
  # --- File Upload UI ---
98
- uploaded = st.file_uploader("\ud83d\udcc1 Browse and select a file", type=["csv", "xlsx", "json", "pdf", "docx"])
99
  if uploaded:
100
  st.session_state.uploaded_file = uploaded
101
- st.info(f"\u2705 File selected: `{uploaded.name}` ({uploaded.size / 1024:.1f} KB)")
102
 
103
- if st.session_state.uploaded_file and st.button("\ud83d\udce4 Upload File"):
104
  content = st.session_state.uploaded_file.read()
105
  ftype = st.session_state.uploaded_file.name.split(".")[-1].lower()
106
- with st.spinner("\ud83d\udd04 Processing file..."):
107
  create_agent_and_index(content, ftype)
108
 
109
  # --- Query UI ---
110
  if st.session_state.file_uploaded:
111
- output_format = st.selectbox("\ud83d\udcca Select Output Format", ["Plain Text", "Markdown", "Tabular View"])
112
- query = st.text_area("\ud83d\udd0d Ask a question about your uploaded file")
113
 
114
  if st.button("Submit Query"):
115
  if not query.strip():
116
- st.warning("\u26a0\ufe0f Please enter a valid question.")
117
  else:
118
- with st.spinner("\ud83d\udca1 Thinking..."):
119
  if st.session_state.file_type in ["pdf", "docx"]:
120
  qa_chain = RetrievalQA.from_chain_type(
121
  llm=OpenAI(openai_api_key=API_KEY),
@@ -127,7 +127,7 @@ if st.session_state.file_uploaded:
127
  else:
128
  response = st.session_state.agent.run(query)
129
 
130
- st.subheader("\ud83d\udccc Answer")
131
  if output_format == "Plain Text":
132
  st.text(response)
133
  elif output_format == "Markdown":
@@ -140,5 +140,5 @@ if st.session_state.file_uploaded:
140
  df = pd.DataFrame(rows[1:], columns=rows[0])
141
  st.dataframe(df)
142
  except Exception:
143
- st.warning("\u26a0\ufe0f Could not render table. Showing raw text.")
144
- st.text(response)
 
43
 
44
  # --- Streamlit Page Setup ---
45
  st.set_page_config(page_title="RAG File Chat", layout="centered")
46
+ st.title("🧠 Chat with Your Uploaded File")
47
 
48
  # --- Session State ---
49
  if "uploaded_file" not in st.session_state:
 
72
  df = pd.read_csv(io.StringIO(file_content.decode("utf-8")))
73
  llm = OpenAI(openai_api_key=API_KEY)
74
  st.session_state.agent = create_pandas_dataframe_agent(llm, df, verbose=False)
75
+ st.success("πŸ€– Agent created for CSV.")
76
  elif file_type == "xlsx":
77
  df = pd.read_excel(file_content)
78
  llm = OpenAI(openai_api_key=API_KEY)
79
  st.session_state.agent = create_pandas_dataframe_agent(llm, df, verbose=False)
80
+ st.success("πŸ€– Agent created for Excel.")
81
  elif file_type == "json":
82
  df = pd.DataFrame(json.loads(file_content.decode("utf-8")))
83
  llm = OpenAI(openai_api_key=API_KEY)
84
  st.session_state.agent = create_pandas_dataframe_agent(llm, df, verbose=False)
85
+ st.success("πŸ€– Agent created for JSON.")
86
  elif file_type in ["pdf", "docx"]:
87
  text = extract_text_from_file(file_content, file_type)
88
  chunks = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0).split_text(text)
89
  st.session_state.vectorstore = FAISS.from_texts(chunks, embeddings_model)
90
+ st.success("πŸ“Š Text embedded into FAISS vectorstore.")
91
  else:
92
+ st.error("❌ Unsupported file type.")
93
  return
94
  st.session_state.file_uploaded = True
95
  st.session_state.file_type = file_type
96
 
97
  # --- File Upload UI ---
98
+ uploaded = st.file_uploader("πŸ“ Browse and select a file", type=["csv", "xlsx", "json", "pdf", "docx"])
99
  if uploaded:
100
  st.session_state.uploaded_file = uploaded
101
+ st.info(f"βœ… File selected: `{uploaded.name}` ({uploaded.size / 1024:.1f} KB)")
102
 
103
+ if st.session_state.uploaded_file and st.button("πŸ“€ Upload File"):
104
  content = st.session_state.uploaded_file.read()
105
  ftype = st.session_state.uploaded_file.name.split(".")[-1].lower()
106
+ with st.spinner("πŸ”„ Processing file..."):
107
  create_agent_and_index(content, ftype)
108
 
109
  # --- Query UI ---
110
  if st.session_state.file_uploaded:
111
+ output_format = st.selectbox("πŸ“‹ Select Output Format", ["Plain Text", "Markdown", "Tabular View"])
112
+ query = st.text_area("πŸ” Ask a question about your uploaded file")
113
 
114
  if st.button("Submit Query"):
115
  if not query.strip():
116
+ st.warning("⚠️ Please enter a valid question.")
117
  else:
118
+ with st.spinner("πŸ’‘ Thinking..."):
119
  if st.session_state.file_type in ["pdf", "docx"]:
120
  qa_chain = RetrievalQA.from_chain_type(
121
  llm=OpenAI(openai_api_key=API_KEY),
 
127
  else:
128
  response = st.session_state.agent.run(query)
129
 
130
+ st.subheader("πŸ“Œ Answer")
131
  if output_format == "Plain Text":
132
  st.text(response)
133
  elif output_format == "Markdown":
 
140
  df = pd.DataFrame(rows[1:], columns=rows[0])
141
  st.dataframe(df)
142
  except Exception:
143
+ st.warning("⚠️ Could not render table. Showing raw text.")
144
+ st.text(response))