Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| # Import your agent and streaming function. | |
| # For example, if your agent code is in agent_app.py: | |
| from app import agent # your CodeAgent instance | |
| from Gradio_UI import ( | |
| stream_to_gradio, | |
| ) # re-use the generator that yields gr.ChatMessage | |
| # (Optionally, if you want to avoid Gradio-specific types you can write your own streaming generator.) | |
| st.set_page_config(page_title="CodeAgent Chat", layout="wide") | |
| st.title("CodeAgent Chat (Streamlit)") | |
| # Initialize session state for chat history. | |
| if "chat_history" not in st.session_state: | |
| st.session_state.chat_history = [] | |
| def display_chat(): | |
| """Display the chat history in the app.""" | |
| for message in st.session_state.chat_history: | |
| role = message.get("role", "assistant") | |
| content = message.get("content", "") | |
| if role == "user": | |
| st.markdown(f"**User:** {content}") | |
| else: | |
| st.markdown(f"**Assistant:** {content}") | |
| # Main chat container. | |
| chat_container = st.container() | |
| with chat_container: | |
| display_chat() | |
| # TODO: use `st.chat_input` | |
| # User input. | |
| user_input = st.text_input("Enter your message:", key="input_text") | |
| if st.button("Send") and user_input: | |
| # Append the user message to the history. | |
| st.session_state.chat_history.append({"role": "user", "content": user_input}) | |
| with chat_container: | |
| display_chat() | |
| # Stream the agent responses. | |
| # (Here we are reusing your existing streaming generator. | |
| # Note that gr.ChatMessage objects have attributes "role" and "content".) | |
| placeholder = st.empty() # if you want to update a placeholder | |
| for msg in stream_to_gradio(agent, user_input, reset_agent_memory=False): | |
| # Extract role and content. | |
| role = msg.role | |
| # For content that is not a plain string (e.g. images or audio), you might need to | |
| # add extra handling. Here we simply convert it to a string. | |
| content = msg.content if isinstance(msg.content, str) else str(msg.content) | |
| st.session_state.chat_history.append({"role": role, "content": content}) | |
| with chat_container: | |
| display_chat() | |