File size: 6,247 Bytes
72b06f2 32a4065 05578d3 32a4065 2c1d1c1 aff2aa4 7821eb2 2c1d1c1 ee7cbe0 32a4065 72b06f2 2ab1dbf 2c1d1c1 72b06f2 3896508 72b06f2 3896508 72b06f2 a601250 72b06f2 8c78cb6 72b06f2 8f82925 1292ade 2fae0bb a601250 9d4e149 72b06f2 c9ed3c5 3896508 72b06f2 b7d0dc8 72b06f2 b7d0dc8 2fae0bb b7d0dc8 72b06f2 b7d0dc8 72b06f2 b7d0dc8 2fae0bb b7d0dc8 72b06f2 c9ed3c5 72b06f2 2fae0bb 72b06f2 2fae0bb 72b06f2 2fae0bb 72b06f2 2fae0bb 72b06f2 2fae0bb 72b06f2 2fae0bb 72b06f2 2fae0bb 72b06f2 2fae0bb 72b06f2 2fae0bb 72b06f2 2fae0bb 72b06f2 2fae0bb 72b06f2 a601250 72b06f2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
import streamlit as st
from controller import handle_submission, handle_submission_chat
# For Altair charts
import altair as alt
from PIL import Image
from pydub import AudioSegment
import IPython
import soundfile as sf
from app_agent_config import AgentConfig
from tool_loader import ToolLoader
import re,sys,unicodedata
import pandas as pd # If you're working with DataFrames
import matplotlib.figure # If you're using matplotlib figures
import numpy as np
# For Bokeh charts
from bokeh.models import Plot
# For Plotly charts
import plotly.express as px
# For Pydeck charts
import pydeck as pdk
# Call app_agent_config to set the global variables
def app_chat(agent_config):
# Chat code (user input, agent responses, etc.)
if "messages" not in st.session_state:
st.session_state.messages = []
st.markdown("Hello there! How can I assist you today?")
for message in st.session_state.messages:
with st.chat_message(message["role"]):
st.markdown(message["content"])
#with st.chat_message("assistant"):
# st.markdown("Hello there! How can I assist you today?")
if user_message := st.chat_input("Enter message"):
st.chat_message("user").markdown(user_message)
st.session_state.messages.append({"role": "user", "content": user_message, "avatar": "π€"})
selected_tools = [agent_config.tool_loader.tools[idx] for idx, checkbox in enumerate(agent_config.tool_checkboxes) if checkbox]
# Handle submission with the selected inference URL
#app_agent_config()
response = ""
chat_respone = ""
with st.spinner('Please stand by ...'):
response = handle_submission(user_message, selected_tools, agent_config.url_endpoint, agent_config.document, agent_config.image, agent_config.context)
with st.chat_message("assistant"):
if response is None:
chat_respone = handle_submission_chat(user_message, response)
st.write(chat_respone)
# st.warning("The agent's response is None. Please try again. Generate an image of a flying uncormn.")
elif isinstance(response, Image.Image):
agent_config.image = response
chat_respone = handle_submission_chat(user_message, "No context . Created an image.")
st.write(chat_respone)
st.image(response)
elif isinstance(response, AudioSegment):
agent_config.audio = response
chat_respone = handle_submission_chat(user_message, "Agent Tool created audio file.")
st.write(chat_respone)
st.audio(response)
elif isinstance(response, int):
chat_respone = handle_submission_chat(user_message, response)
st.write(chat_respone)
st.markdown(response)
elif isinstance(response, str):
if "emojified_text" in response:
chat_respone = handle_submission_chat(user_message, "Agent Tool created the text with emojies.")
st.write(chat_respone)
st.markdown(f"{response['emojified_text']}")
else:
chat_respone = handle_submission_chat(user_message, response)
st.write(chat_respone)
st.markdown(response)
elif isinstance(response, list):
chat_respone = handle_submission_chat(user_message, "Agent Tool produced a list")
for item in response:
st.markdown(item) # Assuming the list contains strings
elif isinstance(response, pd.DataFrame):
chat_respone = handle_submission_chat(user_message, "Agent Tool produced a pd.DataFrame")
st.dataframe(response)
elif isinstance(response, pd.Series):
chat_respone = handle_submission_chat(user_message, "Agent Tool produced a pd.Series")
st.table(response.iloc[0:10])
elif isinstance(response, dict):
chat_respone = handle_submission_chat(user_message, "Agent Tool produced a dict")
st.json(response)
elif isinstance(response, st.graphics_altair.AltairChart):
chat_respone = handle_submission_chat(user_message, "Agent Tool produced a st.graphics_altair.AltairChart")
st.altair_chart(response)
elif isinstance(response, st.graphics_bokeh.BokehChart):
chat_respone = handle_submission_chat(user_message, "Agent Tool produced a st.graphics_bokeh.BokehChart")
st.bokeh_chart(response)
elif isinstance(response, st.graphics_graphviz.GraphvizChart):
chat_respone = handle_submission_chat(user_message, "Agent Tool produced a st.graphics_graphviz.GraphvizChart")
st.graphviz_chart(response)
elif isinstance(response, st.graphics_plotly.PlotlyChart):
chat_respone = handle_submission_chat(user_message, "Agent Tool produced a st.graphics_plotly.PlotlyChart")
st.plotly_chart(response)
elif isinstance(response, st.graphics_pydeck.PydeckChart):
chat_respone = handle_submission_chat(user_message, "Agent Tool produced a st.graphics_pydeck.PydeckChart")
st.pydeck_chart(response)
elif isinstance(response, matplotlib.figure.Figure):
chat_respone = handle_submission_chat(user_message, "Agent Tool produced a matplotlib.figure.Figure")
st.pyplot(response)
elif isinstance(response, streamlit.graphics_vega_lite.VegaLiteChart):
chat_respone = handle_submission_chat(user_message, "Agent Tool produced a VegaLiteChart")
st.vega_lite_chart(response)
else:
st.warning("Unrecognized response type. Please try again. e.g. Generate an image of a flying horse.")
st.session_state.messages.append({"role": "assistant", "content": chat_respone, "avatar": "π¦"})
st.session_state.messages.append({"role": "assistant", "content": response, "avatar": "π€"})
|