Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -1180,116 +1180,115 @@ def main():
|
|
| 1180 |
create_file(filename, user_prompt, response, should_save)
|
| 1181 |
|
| 1182 |
|
| 1183 |
-
|
| 1184 |
-
|
| 1185 |
-
|
| 1186 |
-
|
| 1187 |
-
|
| 1188 |
-
|
| 1189 |
-
|
| 1190 |
-
|
| 1191 |
-
|
| 1192 |
-
|
| 1193 |
-
|
| 1194 |
-
|
| 1195 |
-
|
| 1196 |
-
|
| 1197 |
-
|
| 1198 |
-
|
| 1199 |
-
|
| 1200 |
-
for file in all_files:
|
| 1201 |
-
os.remove(file)
|
| 1202 |
-
st.experimental_rerun()
|
| 1203 |
-
|
| 1204 |
for file in all_files:
|
| 1205 |
-
|
| 1206 |
-
|
| 1207 |
-
|
| 1208 |
-
|
| 1209 |
-
|
| 1210 |
-
|
| 1211 |
-
|
| 1212 |
-
|
| 1213 |
-
|
| 1214 |
-
|
| 1215 |
-
|
| 1216 |
-
|
| 1217 |
-
|
| 1218 |
-
|
|
|
|
|
|
|
|
|
|
| 1219 |
|
| 1220 |
|
| 1221 |
-
GiveFeedback=False
|
| 1222 |
-
if GiveFeedback:
|
| 1223 |
-
with st.expander("Give your feedback π", expanded=False):
|
| 1224 |
-
feedback = st.radio("Step 8: Give your feedback", ("π Upvote", "π Downvote"))
|
| 1225 |
-
if feedback == "π Upvote":
|
| 1226 |
-
st.write("You upvoted π. Thank you for your feedback!")
|
| 1227 |
-
else:
|
| 1228 |
-
st.write("You downvoted π. Thank you for your feedback!")
|
| 1229 |
-
load_dotenv()
|
| 1230 |
-
st.write(css, unsafe_allow_html=True)
|
| 1231 |
-
st.header("Chat with documents :books:")
|
| 1232 |
-
user_question = st.text_input("Ask a question about your documents:")
|
| 1233 |
-
if user_question:
|
| 1234 |
-
process_user_input(user_question)
|
| 1235 |
-
with st.sidebar:
|
| 1236 |
-
st.subheader("Your documents")
|
| 1237 |
-
docs = st.file_uploader("import documents", accept_multiple_files=True)
|
| 1238 |
-
with st.spinner("Processing"):
|
| 1239 |
-
raw = pdf2txt(docs)
|
| 1240 |
-
if len(raw) > 0:
|
| 1241 |
-
length = str(len(raw))
|
| 1242 |
-
text_chunks = txt2chunks(raw)
|
| 1243 |
-
vectorstore = vector_store(text_chunks)
|
| 1244 |
-
st.session_state.conversation = get_chain(vectorstore)
|
| 1245 |
-
st.markdown('# AI Search Index of Length:' + length + ' Created.') # add timing
|
| 1246 |
-
filename = generate_filename(raw, 'txt')
|
| 1247 |
-
create_file(filename, raw, '', should_save)
|
| 1248 |
-
|
| 1249 |
|
| 1250 |
-
|
| 1251 |
-
|
| 1252 |
-
|
| 1253 |
-
|
| 1254 |
-
|
| 1255 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1256 |
|
| 1257 |
-
|
| 1258 |
-
|
|
|
|
|
|
|
| 1259 |
|
| 1260 |
-
|
| 1261 |
-
|
| 1262 |
|
| 1263 |
-
|
| 1264 |
-
|
|
|
|
|
|
|
| 1265 |
|
| 1266 |
-
|
| 1267 |
-
|
| 1268 |
-
|
| 1269 |
-
|
| 1270 |
-
|
| 1271 |
-
elif action == 'clear':
|
| 1272 |
-
clear_query_params()
|
| 1273 |
-
st.experimental_rerun()
|
| 1274 |
-
|
| 1275 |
-
# Handling repeated keys
|
| 1276 |
-
if 'multi' in st.query_params:
|
| 1277 |
-
multi_values = get_all_query_params('multi')
|
| 1278 |
-
st.write("Values for 'multi':", multi_values)
|
| 1279 |
-
|
| 1280 |
-
# Manual entry for demonstration
|
| 1281 |
-
st.write("Enter query parameters in the URL like this: ?action=show_message&multi=1&multi=2")
|
| 1282 |
-
|
| 1283 |
-
if 'query' in st.query_params:
|
| 1284 |
-
query = st.query_params['query'][0] # Get the query parameter
|
| 1285 |
-
# Display content or image based on the query
|
| 1286 |
-
display_content_or_image(query)
|
| 1287 |
-
|
| 1288 |
-
# Add a clear query parameters button for convenience
|
| 1289 |
-
if st.button("Clear Query Parameters", key='ClearQueryParams'):
|
| 1290 |
-
# This will clear the browser URL's query parameters
|
| 1291 |
-
st.experimental_set_query_params
|
| 1292 |
-
st.experimental_rerun()
|
| 1293 |
|
| 1294 |
# 18. Run AI Pipeline
|
| 1295 |
if __name__ == "__main__":
|
|
|
|
| 1180 |
create_file(filename, user_prompt, response, should_save)
|
| 1181 |
|
| 1182 |
|
| 1183 |
+
# Function to encode file to base64
|
| 1184 |
+
def get_base64_encoded_file(file_path):
|
| 1185 |
+
with open(file_path, "rb") as file:
|
| 1186 |
+
return base64.b64encode(file.read()).decode()
|
| 1187 |
+
|
| 1188 |
+
# Function to create a download link
|
| 1189 |
+
def get_audio_download_link(file_path):
|
| 1190 |
+
base64_file = get_base64_encoded_file(file_path)
|
| 1191 |
+
return f'<a href="data:file/wav;base64,{base64_file}" download="{os.path.basename(file_path)}">β¬οΈ Download Audio</a>'
|
| 1192 |
+
|
| 1193 |
+
# Compose a file sidebar of past encounters
|
| 1194 |
+
all_files = glob.glob("*.wav")
|
| 1195 |
+
all_files = [file for file in all_files if len(os.path.splitext(file)[0]) >= 10] # exclude files with short names
|
| 1196 |
+
all_files.sort(key=lambda x: (os.path.splitext(x)[1], x), reverse=True) # sort by file type and file name in descending order
|
| 1197 |
+
|
| 1198 |
+
filekey = 'delall'
|
| 1199 |
+
if st.sidebar.button("π Delete All Audio", key=filekey):
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1200 |
for file in all_files:
|
| 1201 |
+
os.remove(file)
|
| 1202 |
+
st.experimental_rerun()
|
| 1203 |
+
|
| 1204 |
+
for file in all_files:
|
| 1205 |
+
col1, col2 = st.sidebar.columns([6, 1]) # adjust the ratio as needed
|
| 1206 |
+
with col1:
|
| 1207 |
+
st.markdown(file)
|
| 1208 |
+
if st.button("π΅", key="play_" + file): # play emoji button
|
| 1209 |
+
audio_file = open(file, 'rb')
|
| 1210 |
+
audio_bytes = audio_file.read()
|
| 1211 |
+
st.audio(audio_bytes, format='audio/wav')
|
| 1212 |
+
#st.markdown(get_audio_download_link(file), unsafe_allow_html=True)
|
| 1213 |
+
#st.text_input(label="", value=file)
|
| 1214 |
+
with col2:
|
| 1215 |
+
if st.button("π", key="delete_" + file):
|
| 1216 |
+
os.remove(file)
|
| 1217 |
+
st.experimental_rerun()
|
| 1218 |
|
| 1219 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1220 |
|
| 1221 |
+
GiveFeedback=False
|
| 1222 |
+
if GiveFeedback:
|
| 1223 |
+
with st.expander("Give your feedback π", expanded=False):
|
| 1224 |
+
feedback = st.radio("Step 8: Give your feedback", ("π Upvote", "π Downvote"))
|
| 1225 |
+
if feedback == "π Upvote":
|
| 1226 |
+
st.write("You upvoted π. Thank you for your feedback!")
|
| 1227 |
+
else:
|
| 1228 |
+
st.write("You downvoted π. Thank you for your feedback!")
|
| 1229 |
+
load_dotenv()
|
| 1230 |
+
st.write(css, unsafe_allow_html=True)
|
| 1231 |
+
st.header("Chat with documents :books:")
|
| 1232 |
+
user_question = st.text_input("Ask a question about your documents:")
|
| 1233 |
+
if user_question:
|
| 1234 |
+
process_user_input(user_question)
|
| 1235 |
+
with st.sidebar:
|
| 1236 |
+
st.subheader("Your documents")
|
| 1237 |
+
docs = st.file_uploader("import documents", accept_multiple_files=True)
|
| 1238 |
+
with st.spinner("Processing"):
|
| 1239 |
+
raw = pdf2txt(docs)
|
| 1240 |
+
if len(raw) > 0:
|
| 1241 |
+
length = str(len(raw))
|
| 1242 |
+
text_chunks = txt2chunks(raw)
|
| 1243 |
+
vectorstore = vector_store(text_chunks)
|
| 1244 |
+
st.session_state.conversation = get_chain(vectorstore)
|
| 1245 |
+
st.markdown('# AI Search Index of Length:' + length + ' Created.') # add timing
|
| 1246 |
+
filename = generate_filename(raw, 'txt')
|
| 1247 |
+
create_file(filename, raw, '', should_save)
|
| 1248 |
+
|
| 1249 |
+
|
| 1250 |
+
try:
|
| 1251 |
+
query_params = st.query_params
|
| 1252 |
+
query = (query_params.get('q') or query_params.get('query') or [''])
|
| 1253 |
+
if query: search_glossary(query)
|
| 1254 |
+
except:
|
| 1255 |
+
st.markdown(' ')
|
| 1256 |
+
|
| 1257 |
+
# Display the glossary grid
|
| 1258 |
+
st.markdown("### π²πΊοΈ Word Game Gallery")
|
| 1259 |
+
|
| 1260 |
+
display_glossary_grid(roleplaying_glossary) # Word Glossary Jump Grid
|
| 1261 |
+
display_buttons_with_scores() # Feedback Jump Grid
|
| 1262 |
+
display_videos_and_links() # Video Jump Grid
|
| 1263 |
+
display_images_and_wikipedia_summaries() # Image Jump Grid
|
| 1264 |
+
|
| 1265 |
+
|
| 1266 |
+
if 'action' in st.query_params:
|
| 1267 |
+
action = st.query_params()['action'][0] # Get the first (or only) 'action' parameter
|
| 1268 |
+
if action == 'show_message':
|
| 1269 |
+
st.success("Showing a message because 'action=show_message' was found in the URL.")
|
| 1270 |
+
elif action == 'clear':
|
| 1271 |
+
clear_query_params()
|
| 1272 |
+
st.experimental_rerun()
|
| 1273 |
|
| 1274 |
+
# Handling repeated keys
|
| 1275 |
+
if 'multi' in st.query_params:
|
| 1276 |
+
multi_values = get_all_query_params('multi')
|
| 1277 |
+
st.write("Values for 'multi':", multi_values)
|
| 1278 |
|
| 1279 |
+
# Manual entry for demonstration
|
| 1280 |
+
st.write("Enter query parameters in the URL like this: ?action=show_message&multi=1&multi=2")
|
| 1281 |
|
| 1282 |
+
if 'query' in st.query_params:
|
| 1283 |
+
query = st.query_params['query'][0] # Get the query parameter
|
| 1284 |
+
# Display content or image based on the query
|
| 1285 |
+
display_content_or_image(query)
|
| 1286 |
|
| 1287 |
+
# Add a clear query parameters button for convenience
|
| 1288 |
+
if st.button("Clear Query Parameters", key='ClearQueryParams'):
|
| 1289 |
+
# This will clear the browser URL's query parameters
|
| 1290 |
+
st.experimental_set_query_params
|
| 1291 |
+
st.experimental_rerun()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1292 |
|
| 1293 |
# 18. Run AI Pipeline
|
| 1294 |
if __name__ == "__main__":
|