Now we’re ready to run the Streamlit web application for our question answering bot.
SageMaker Studio provides a convenient platform to host the Streamlit web application. The following steps describes how to run the Streamlit app on SageMaker Studio. Alternatively, you could also follow the same procedure to run the app on Amazon EC2 instance or Cloud9 in your AWS Account.
- Open Studio and then open a new System terminal.
- Run the following commands on the terminal to clone the code repository for this post and install the Python packages needed by the application:
git clone https://github.com/ksmin23/rag-with-haystack-and-amazon-opensearch.git cd rag-with-opensearch/app python -m venv .env source .env/bin/activate pip install -r requirements.txt
- In the shell, set the following environment variables with the values that are available from the CloudFormation stack output.
export AWS_REGION="your-aws-account-region" export OPENSEARCH_SECRET="your-opensearch-secret" export OPENSEARCH_DOMAIN_ENDPOINT="your-opensearch-url" export TEXT2TEXT_ENDPOINT_NAME="your-sagemaner-endpoint-for-text-generation-model"
- When the application runs successfully, you’ll see an output similar to the following (the IP addresses you will see will be different from the ones shown in this example). Note the port number (typically
8501
) from the output to use as part of the URL for app in the next step.sagemaker-user@studio$ streamlit run app.py Collecting usage statistics. To deactivate, set browser.gatherUsageStats to False. You can now view your Streamlit app in your browser. Network URL: http://169.255.255.2:8501 External URL: http://52.4.240.77:8501
- You can access the app in a new browser tab using a URL that is similar to your Studio domain URL. For example, if your Studio URL is
https://d-randomidentifier.studio.us-east-1.sagemaker.aws/jupyter/default/lab?
then the URL for your Streamlit app will behttps://d-randomidentifier.studio.us-east-1.sagemaker.aws/jupyter/default/proxy/8501/app
(notice thatlab
is replaced withproxy/8501/app
). If the port number noted in the previous step is different from 8501 then use that instead of 8501 in the URL for the Streamlit app.
The following screenshot shows the app with a couple of user questions.
- Build production-ready generative AI applications for enterprise search using Haystack pipelines and Amazon SageMaker JumpStart with LLMs 2023-0-14)
- Build Streamlit apps in Amazon SageMaker Studio (2023-04-11)
- Use proprietary foundation models from Amazon SageMaker JumpStart in Amazon SageMaker Studio (2023-06-27)
- Haystack - The open source Python framework by deepset for building custom apps with large language models (LLMs).
- Streamlit - A faster way to build and share data apps