Spaces:
Sleeping
Sleeping
Commit
·
11f97a3
1
Parent(s):
1d9658a
Add chat_input version Streamlit
Browse files- Gradio_UI.py +2 -2
- README.md +4 -1
- streamlit_app_chat.py +36 -0
Gradio_UI.py
CHANGED
@@ -239,7 +239,7 @@ class GradioUI:
|
|
239 |
if not os.path.exists(file_upload_folder):
|
240 |
os.mkdir(file_upload_folder)
|
241 |
|
242 |
-
def interact_with_agent(self, prompt, messages):
|
243 |
import gradio as gr
|
244 |
|
245 |
messages.append(gr.ChatMessage(role="user", content=prompt))
|
@@ -301,7 +301,7 @@ class GradioUI:
|
|
301 |
f"File uploaded: {file_path}", visible=True
|
302 |
), file_uploads_log + [file_path]
|
303 |
|
304 |
-
def log_user_message(self, text_input, file_uploads_log):
|
305 |
return (
|
306 |
text_input
|
307 |
+ (
|
|
|
239 |
if not os.path.exists(file_upload_folder):
|
240 |
os.mkdir(file_upload_folder)
|
241 |
|
242 |
+
def interact_with_agent(self, prompt: str, messages: list):
|
243 |
import gradio as gr
|
244 |
|
245 |
messages.append(gr.ChatMessage(role="user", content=prompt))
|
|
|
301 |
f"File uploaded: {file_path}", visible=True
|
302 |
), file_uploads_log + [file_path]
|
303 |
|
304 |
+
def log_user_message(self, text_input: str, file_uploads_log):
|
305 |
return (
|
306 |
text_input
|
307 |
+ (
|
README.md
CHANGED
@@ -22,10 +22,13 @@ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-
|
|
22 |
- [First Agent Template - a Hugging Face Space by daviddwlee84](https://huggingface.co/spaces/daviddwlee84/First_Agent)
|
23 |
|
24 |
```bash
|
|
|
25 |
# Gradio (TODO: somehow buggy)
|
26 |
python app.py
|
27 |
-
# Streamlit (TODO:
|
28 |
streamlit run streamlit_app.py
|
|
|
|
|
29 |
# Chainlit (TODO: move the ReAct process from agent message to "step")
|
30 |
chainlit run chainlit_app.py
|
31 |
```
|
|
|
22 |
- [First Agent Template - a Hugging Face Space by daviddwlee84](https://huggingface.co/spaces/daviddwlee84/First_Agent)
|
23 |
|
24 |
```bash
|
25 |
+
# https://www.gradio.app/guides/quickstart#building-your-first-demo
|
26 |
# Gradio (TODO: somehow buggy)
|
27 |
python app.py
|
28 |
+
# Streamlit (TODO: able to clear message history)
|
29 |
streamlit run streamlit_app.py
|
30 |
+
# Streamlit chat_input (TODO: move ReAct process to `st.expander`)
|
31 |
+
streamlit run streamlit_app_chat.py
|
32 |
# Chainlit (TODO: move the ReAct process from agent message to "step")
|
33 |
chainlit run chainlit_app.py
|
34 |
```
|
streamlit_app_chat.py
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
|
3 |
+
from app import agent # your CodeAgent instance
|
4 |
+
from Gradio_UI import stream_to_gradio # generator yielding gr.ChatMessage objects
|
5 |
+
|
6 |
+
st.set_page_config(page_title="CodeAgent Chat", layout="wide")
|
7 |
+
st.title("CodeAgent Chat (Streamlit)")
|
8 |
+
|
9 |
+
# Initialize session state for chat history.
|
10 |
+
if "chat_history" not in st.session_state:
|
11 |
+
st.session_state.chat_history = []
|
12 |
+
|
13 |
+
# Reset Chat button.
|
14 |
+
if st.button("Reset Chat"):
|
15 |
+
st.session_state.chat_history = []
|
16 |
+
st.rerun() # Rerun the script to update the UI immediately.
|
17 |
+
|
18 |
+
# Display chat history using Streamlit's chat message container.
|
19 |
+
for chat in st.session_state.chat_history:
|
20 |
+
st.chat_message(chat["role"]).write(chat["content"])
|
21 |
+
|
22 |
+
# Use st.chat_input for user message entry.
|
23 |
+
user_input = st.chat_input("Type your message here")
|
24 |
+
if user_input:
|
25 |
+
# Append and display the user's message.
|
26 |
+
st.session_state.chat_history.append({"role": "user", "content": user_input})
|
27 |
+
st.chat_message("user").write(user_input)
|
28 |
+
|
29 |
+
# Stream the agent responses.
|
30 |
+
# The generator yields gr.ChatMessage objects that have 'role' and 'content' attributes.
|
31 |
+
for msg in stream_to_gradio(agent, user_input, reset_agent_memory=False):
|
32 |
+
role = msg.role
|
33 |
+
# Convert non-string content to a string as needed.
|
34 |
+
content = msg.content if isinstance(msg.content, str) else str(msg.content)
|
35 |
+
st.session_state.chat_history.append({"role": role, "content": content})
|
36 |
+
st.chat_message(role).write(content)
|