Spaces:
Sleeping
Sleeping
Update streamlit_app.py
Browse files- streamlit_app.py +10 -12
streamlit_app.py
CHANGED
|
@@ -46,29 +46,27 @@ if prompt := st.chat_input("Your Question"):
|
|
| 46 |
# Gradio's history is [(user, bot), (user, bot), ...]
|
| 47 |
# Streamlit's session state is a list of dicts [{"role": "user", "content": "..."}]
|
| 48 |
# We need to convert Streamlit's history format to Gradio's format for your respond function
|
| 49 |
-
gradio_chat_history = []
|
| 50 |
-
# Start from the second message if the first was from the system/initial state
|
| 51 |
-
# Or just iterate through pairs, skipping the latest user prompt for history pass
|
| 52 |
-
# The respond function expects history *before* the current turn
|
| 53 |
history_for_respond = []
|
| 54 |
# Iterate through messages, excluding the very last user prompt which is the current input
|
| 55 |
for i in range(len(st.session_state.messages) - 1):
|
| 56 |
if st.session_state.messages[i]["role"] == "user" and st.session_state.messages[i+1]["role"] == "assistant":
|
| 57 |
history_for_respond.append((st.session_state.messages[i]["content"], st.session_state.messages[i+1]["content"]))
|
| 58 |
-
# Handle cases where the last turn was user, but no assistant response yet (e.g., previous session)
|
| 59 |
-
elif st.session_state.messages[i]["role"] == "user" and (i+1 == len(st.session_state.messages) or st.session_state.messages[i+1]["role"] == "user"):
|
| 60 |
-
# If the last message was user and there's no following assistant message,
|
| 61 |
-
# this user message is part of the current turn's input, not history.
|
| 62 |
-
# This part of the loop structure might need adjustment based on how history is built
|
| 63 |
-
pass # Skip the current user prompt
|
| 64 |
-
|
| 65 |
|
| 66 |
# Call your respond function
|
| 67 |
with st.spinner("Thinking..."):
|
| 68 |
# Your respond function returns ("", updated_chat_history)
|
| 69 |
# We only need the updated chat history part
|
| 70 |
# We also need to pass the current user prompt as the first argument
|
| 71 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
|
| 73 |
# The respond function modifies and returns the history in Gradio format.
|
| 74 |
# The last entry in updated_gradio_history should be the current turn's (user_prompt, bot_response).
|
|
|
|
| 46 |
# Gradio's history is [(user, bot), (user, bot), ...]
|
| 47 |
# Streamlit's session state is a list of dicts [{"role": "user", "content": "..."}]
|
| 48 |
# We need to convert Streamlit's history format to Gradio's format for your respond function
|
|
|
|
|
|
|
|
|
|
|
|
|
| 49 |
history_for_respond = []
|
| 50 |
# Iterate through messages, excluding the very last user prompt which is the current input
|
| 51 |
for i in range(len(st.session_state.messages) - 1):
|
| 52 |
if st.session_state.messages[i]["role"] == "user" and st.session_state.messages[i+1]["role"] == "assistant":
|
| 53 |
history_for_respond.append((st.session_state.messages[i]["content"], st.session_state.messages[i+1]["content"]))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 54 |
|
| 55 |
# Call your respond function
|
| 56 |
with st.spinner("Thinking..."):
|
| 57 |
# Your respond function returns ("", updated_chat_history)
|
| 58 |
# We only need the updated chat history part
|
| 59 |
# We also need to pass the current user prompt as the first argument
|
| 60 |
+
# Ensure we are unpacking the result correctly into two variables
|
| 61 |
+
response_tuple = respond(prompt, history_for_respond)
|
| 62 |
+
# Check if the returned value is a tuple with at least two elements
|
| 63 |
+
if isinstance(response_tuple, tuple) and len(response_tuple) >= 2:
|
| 64 |
+
_, updated_gradio_history = response_tuple
|
| 65 |
+
else:
|
| 66 |
+
# Handle the case where the function did not return the expected tuple
|
| 67 |
+
print(f"Warning: respond function returned unexpected value: {response_tuple}")
|
| 68 |
+
updated_gradio_history = history_for_respond + [(prompt, "Sorry, I couldn't get a valid response.")]
|
| 69 |
+
|
| 70 |
|
| 71 |
# The respond function modifies and returns the history in Gradio format.
|
| 72 |
# The last entry in updated_gradio_history should be the current turn's (user_prompt, bot_response).
|