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() | |