Inspiration
I'm an all-around data professional who loves using Streamlit, but gets a bit bogged down. Oftentimes people ask for small tweaks to graphs and they lose track of graphs that were made previously. This AI assistant takes away the tedious work by leveraging Snowflake Arctic to make small tweaks for you.
What it does
It is a component you can install into your streamlit dashboard. In chat mode, you can ask the assistant a question, and the assistant will use a selection of tools (Plotly, SQL) to answer your question! If the agent creates a new graph, there is a button to submit a PR to integrate that code into your repo.
In search mode, you can input a query and relevant graphs will appear.
There is also the ability to actually talk with your data, using a speech-to-text component. (Text-to-speech to have it talk back is coming next).
How we built it
I used a multi-agent approach, creating 3 different LLM agents tailored to specific tasks. All LLMs call the Snowflake Arctic model through the Replicate API.
The tools the agent has access to are SQL, Existing Graphs (saved in the repo by trusted team members), New Graphs (written by the LLM), show schema, and show tables.
Challenges we ran into
Creating the frontend proved challenging, and creating the component because there were several options to explore for how to do this.
Accomplishments that we're proud of
I think the UI looks pretty nice for someone who doesn't have that much frontend experience.
What we learned
I was able to learn how the ReACT prompting technique works in my first end-to-end implementation of it. I also created a streamlit component for the first time and learned how that process works!
What's next for Streamlit AI Assist
Text-to-speech and dashboard descriptions to make dashboards more accessible for visually impaired users. Integration with more data warehouses and graphing libraries (right now, it's tested with plotly and Snowflake). Increased efficiency is also in the works!
Log in or sign up for Devpost to join the conversation.