This repository contains reference implementations of various LangChain agents as Streamlit apps including:
basic_streaming.py
: Simple streaming app withlangchain.chat_models.ChatOpenAI
(View the app)basic_memory.py
: Simple app usingStreamlitChatMessageHistory
for LLM conversation memory (View the app)mrkl_demo.py
: An agent that replicates the MRKL demo (View the app)minimal_agent.py
: A minimal agent with search (requires settingOPENAI_API_KEY
env to run)search_and_chat.py
: A search-enabled chatbot that remembers chat history (View the app)simple_feedback.py
: A chat app that allows the user to add feedback on responses using streamlit-feedback, and link to the traces in LangSmith (View the app)chat_with_documents.py
: Chatbot capable of answering queries by referring custom documents (View the app)chat_with_sql_db.py
: Chatbot which can communicate with your database (View the app)chat_pandas_df.py
: Chatbot to ask questions about a pandas DF (Note: usesPythonAstREPLTool
which is vulnerable to arbitrary code execution, see langchain #7700)
Apps feature LangChain 🤝 Streamlit integrations such as the Callback integration and StreamlitChatMessageHistory.
This project uses Poetry for dependency management.
# Create Python environment
$ poetry install
# Install git pre-commit hooks
$ poetry shell
$ pre-commit install
# Run mrkl_demo.py or another app the same way
$ streamlit run streamlit_agent/mrkl_demo.py
This project includes Dockerfile
to run the app in Docker container. In order to optimise the Docker Image is optimised for size and building time with cache techniques.
To generate Image with DOCKER_BUILDKIT
, follow below command
DOCKER_BUILDKIT=1 docker build --target=runtime . -t langchain-streamlit-agent:latest
- Run the docker container directly
docker run -d --name langchain-streamlit-agent -p 8051:8051 langchain-streamlit-agent:latest
- Run the docker container using docker-compose (Recommended)
Edit the Command in docker-compose
with target streamlit app
docker-compose up
We plan to add more agent and chain examples over time and improve the existing ones - PRs welcome! 🚀