Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import asyncio | |
| from autogen import AssistantAgent, UserProxyAgent | |
| st.write("""# AutoGen Chat Agents""") | |
| class TrackableAssistantAgent(AssistantAgent): | |
| def _process_received_message(self, message, sender, silent): | |
| with st.chat_message(sender.name): | |
| st.markdown(message) | |
| return super()._process_received_message(message, sender, silent) | |
| class TrackableUserProxyAgent(UserProxyAgent): | |
| def _process_received_message(self, message, sender, silent): | |
| with st.chat_message(sender.name): | |
| st.markdown(message) | |
| return super()._process_received_message(message, sender, silent) | |
| selected_model = None | |
| selected_key = None | |
| with st.sidebar: | |
| st.header("OpenAI Configuration") | |
| selected_model = st.selectbox("Model", ['gpt-3.5-turbo', 'gpt-4'], index=1) | |
| selected_key = st.text_input("API Key", type="password") | |
| with st.container(): | |
| # for message in st.session_state["messages"]: | |
| # st.markdown(message) | |
| user_input = st.chat_input("Type something...") | |
| if user_input: | |
| if not selected_key or not selected_model: | |
| st.warning( | |
| 'You must provide valid OpenAI API key and choose preferred model', icon="⚠️") | |
| st.stop() | |
| llm_config = { | |
| "request_timeout": 600, | |
| "config_list": [ | |
| { | |
| "model": selected_model, | |
| "api_key": selected_key | |
| } | |
| ] | |
| } | |
| # create an AssistantAgent instance named "assistant" | |
| assistant = TrackableAssistantAgent( | |
| name="assistant", llm_config=llm_config) | |
| # create a UserProxyAgent instance named "user" | |
| user_proxy = TrackableUserProxyAgent( | |
| name="user", human_input_mode="NEVER", llm_config=llm_config) | |
| # Create an event loop | |
| loop = asyncio.new_event_loop() | |
| asyncio.set_event_loop(loop) | |
| # Define an asynchronous function | |
| async def initiate_chat(): | |
| await user_proxy.a_initiate_chat( | |
| assistant, | |
| message=user_input, | |
| ) | |
| # Run the asynchronous function within the event loop | |
| loop.run_until_complete(initiate_chat()) | |