I am trying to integrate the AutoGen Agents chatbot using the approach described in this article: Creating a Streamlit User Interface for AutoGen Agents | by Dr. Ernesto Lee | Medium.
the autogent userproxy code is look like this
class TrackableUserProxyAgent(UserProxyAgent):
def get_human_input(self, message):
# Your custom function to handle human input
print("Human input required:", message)
user_query=""
# Initialize the modal
#modal = Modal(key="Provide input", title=message["content"], padding=20, max_width=744)
# Define the content of the modal
st.session_state['modal_open'] = True
while st.session_state['modal_open']:
st.stop()
# Additional content outside the modal
user_query = st.session_state['dialog_input']
print("User input:", user_query)
st.write("This is the main app content.")
# Return the human input (for example, from a user interface or other source)
return user_query
def _process_received_message(self, message, sender, silent):
#display_debug_messages(sender.name, message)
return super()._process_received_message(message, sender, silent)
# Initialize session state if needed
if 'dialog_input' not in st.session_state:
st.session_state['dialog_input'] = ""
if 'modal_open' not in st.session_state:
st.session_state['modal_open'] = False
# Show modal until input is received
#if st.session_state['modal_open']:
self.show_dialog_popup(message)
# Process input after modal is closed
user_query = st.session_state['dialog_input']
print("Received input:", user_query)
return user_query
I have successfully implemented the interaction using the function def get_human_input(self, message):
. However, whenever new answer is entered by user, the entire app refreshes, making it impossible to pass the input to the calling agents. I would appreciate any guidance on how to return the reply to the agents without refreshing the app