A couple of years ago I used Streamlit as an interface for an LLM chatbot. However it seems there is a better alternative which is to use Gradio. Lets have a look at the similarities and differences of Gradio vs Streamlit.
Streamlit
Streamlit is very useful for rapidly prototyping interactive web interfaces. It interfaces well with python dataframes via st.dataframe and can be used for charting and interactive dashboards using its wide array of widgets. You can also Dockerise Streamlit apps if you like for consistent deployment. Streamlit currently works with Python up to version 3.14

However Streamlit is perhaps less well aligned with creating an LLM chatbot interface than Gradio for a couple of reasons. Firstly it reloads data upon interaction which means that you need to feed system state back in as it refreshes. This can be awkward to handle if using streaming LLM data or asynchronous functions to handle processes like speech to text. You can work round this to some extent with st.cache_data but objects need to be pickleable and problems can arise. Secondly it lacks some of the features and integrations Gradio has which makes it a strong chatbot interface.
In summary Streamlit is more optimised for interactive data exploration than Gradio. However if you don’t like it there are alternatives you could consider.
Gradio
Gradio also produces interactive web apps. It has features which make it well adapted to handle chatbot interfaces. While its dashboarding elements are not as comprehensive as Streamlit, it is very good at handling text, image, audio and video. These are the sorts of formats you want to handle well in an AI chatbot. Like Streamlit you can also Dockerise a Gradio app. Gradio also has built in stream handling abilities for both input and output which are useful for handling spoken input and intermediate generated outputs. Unlike Streamlit, Gradio does not need to reload the app upon change which simplifies chat app logic.

Additionally Gradio has some great features you might want for an AI chatbot. It has HuggingFace integrations and can be deployed on HuggingFace spaces. It also supports MCP, You can easily build an MCP client in Gradio and can even be used to create an MCP server.
One important thing to note is that there was a considerable change in architecture between Gradio 5 and Gradio 6. This means that you need to be mindful of which version you choose and to be aware of the differences when creating your code. This is especially the case if using LLMs to assist in development since otherwise you will get a lot of deprecation warnings if you try to run Gradio 5 code on Gradio 6. If you are starting from scratch you likely want to use Gradio 6. Be aware that at the time of writing Gradio only supports Python 3.13 not python 3.14.
Other Considerations
So which framework wins the Gradio vs Streamlit battle. As usual its complicated, but for me Streamlit currently wins for dashboards and Gradio currently wins for chatbots.
Not a coder? You could consider something like Bubble, Retool or Appsmith.
Its also worth noting that some people feel that scaling Gradio can be difficult and that if you are developing a product rather than a pet project, the time may come where you have to consider migration. Alternatively you could consider scaling your Gradio app using Rayserve or FastAPI and Gradio-Session.