diff --git a/README.md b/README.md index 899bca1..0e41de0 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,7 @@ For a detailed, hands-on introduction to the project, please see our quickstart | **Snowflake Horizon Catalog [ FMCG ]** | [`quickstart_fmcg_snowflake.ipynb`](notebooks/quickstart_fmcg_snowflake.ipynb) | Snowflake Notebook Only | | **Native Snowflake with Cortex Analyst [ Tech Manufacturing ]** | [`quickstart_native_snowflake.ipynb`](notebooks/quickstart_native_snowflake.ipynb) | [![Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Intugle/data-tools/blob/main/notebooks/quickstart_native_snowflake.ipynb) | | **Native Databricks with AI/BI Genie [ Tech Manufacturing ]** | [`quickstart_native_databricks.ipynb`](notebooks/quickstart_native_databricks.ipynb) | [![Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Intugle/data-tools/blob/main/notebooks/quickstart_native_databricks.ipynb) | +| **Streamlit App** | [`quickstart_streamlit.ipynb`](notebooks/quickstart_streamlit.ipynb) | [![Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Intugle/data-tools/blob/main/notebooks/quickstart_streamlit.ipynb) | These datasets will take you through the following steps: @@ -290,11 +291,13 @@ You can launch the Streamlit application using the `intugle-mcp` command or `uvx ```bash intugle-streamlit # Or using uvx -uvx --from intugle intugle-streamlit +uvx --from intugle[streamlit] intugle-streamlit ``` Open the URL provided in your terminal (usually `http://localhost:8501`) to access the application. For more details, refer to the [Streamlit App documentation](https://intugle.github.io/data-tools/docs/streamlit-app). +To run the app in a cloud environment like Google Colab, please refer to our [Streamlit quickstart notebook](notebooks/quickstart_streamlit.ipynb). + ## Community Join our community to ask questions, share your projects, and connect with other users. diff --git a/docsite/docs/examples.md b/docsite/docs/examples.md index 80ac6b7..af1daf9 100644 --- a/docsite/docs/examples.md +++ b/docsite/docs/examples.md @@ -17,6 +17,7 @@ For a detailed, hands-on introduction to the project, please see our quickstart | **Snowflake Horizon Catalog [ FMCG ]** | [`quickstart_fmcg_snowflake.ipynb`](https://github.com/Intugle/data-tools/blob/main/notebooks/quickstart_fmcg_snowflake.ipynb) | Snowflake Notebook Only | | **Native Snowflake with Cortex Analyst [ Tech Manufacturing ]** | [`quickstart_native_snowflake.ipynb`](https://github.com/Intugle/data-tools/blob/main/notebooks/quickstart_native_snowflake.ipynb) | [![Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Intugle/data-tools/blob/main/notebooks/quickstart_native_snowflake.ipynb) | | **Native Databricks with AI/BI Genie [ Tech Manufacturing ]** | [`quickstart_native_databricks.ipynb`](https://github.com/Intugle/data-tools/blob/main/notebooks/quickstart_native_databricks.ipynb) | [![Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Intugle/data-tools/blob/main/notebooks/quickstart_native_databricks.ipynb) | +| **Streamlit App** | [`quickstart_streamlit.ipynb`](https://github.com/Intugle/data-tools/blob/main/notebooks/quickstart_streamlit.ipynb) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Intugle/data-tools/blob/main/notebooks/quickstart_streamlit.ipynb) | These datasets will take you through the following steps: diff --git a/docsite/docs/streamlit-app.md b/docsite/docs/streamlit-app.md index baff345..c6a7892 100644 --- a/docsite/docs/streamlit-app.md +++ b/docsite/docs/streamlit-app.md @@ -49,7 +49,7 @@ You can launch the Streamlit application using the `intugle-streamlit` command o ```bash intugle-streamlit # Or using uvx -uvx --from intugle intugle-streamlit +uvx --from intugle[streamlit] intugle-streamlit ``` Open the URL provided in your terminal (usually `http://localhost:8501`) to access the application. @@ -64,3 +64,9 @@ The application guides you through a simple, multi-step process, which is tracke 4. **Build Semantic Model**: After preparing your data, click **"Create Semantic Model"**. You will be prompted to provide a "domain" (e.g., *Healthcare*, *Manufacturing*) to give the LLM context. The app will then profile the data and generate a business glossary for each table. 5. **Predict Links**: Once profiling is complete, click **"Run Link Prediction"** to discover the relationships between your datasets. 6. **Explore & Download**: View the results as an interactive graph or a detailed table. You can download the underlying YAML configuration files from the sidebar at any time. + +## Running on Google Colab + +To run the Streamlit app in a cloud environment like Google Colab, which requires exposing the server via a public URL, please refer to our quickstart notebook: + +- [**Streamlit Quickstart Notebook**](https://github.com/Intugle/data-tools/blob/main/notebooks/quickstart_streamlit.ipynb) diff --git a/notebooks/quickstart_streamlit.ipynb b/notebooks/quickstart_streamlit.ipynb new file mode 100644 index 0000000..72ff18d --- /dev/null +++ b/notebooks/quickstart_streamlit.ipynb @@ -0,0 +1,126 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "5a6f5a26", + "metadata": {}, + "source": [ + "# Running the Intugle Streamlit App on Google Colab\n", + "\n", + "This notebook guides you through the process of running the Intugle semantic model builder, which is a Streamlit application, directly within a Google Colab environment.\n", + "\n", + "Since Colab provides a containerized environment, we cannot directly access the web server started by Streamlit. To solve this, we will use `ngrok`, a tool that creates a secure public URL (a \"tunnel\") to the Streamlit application running inside our Colab instance.\n", + "\n", + "**Steps:**\n", + "\n", + "1. **Install** the required Python packages.\n", + "2. **Configure and run `ngrok`** to expose the Streamlit app.\n", + "3. **Shut down** the tunnel when you are finished." + ] + }, + { + "cell_type": "markdown", + "id": "c20194c1", + "metadata": {}, + "source": [ + "## 1. Install Dependencies\n", + "\n", + "First, we need to install the `intugle` library. We use the `[streamlit]` extra, which ensures that Streamlit and all other necessary dependencies for the web app are installed at the same time." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b26de4ff", + "metadata": {}, + "outputs": [], + "source": [ + "!pip install intugle[streamlit]" + ] + }, + { + "cell_type": "markdown", + "id": "df8720f3", + "metadata": {}, + "source": [ + "## 2. Configure and Run the Streamlit App\n", + "\n", + "Next, we will start the Intugle Streamlit app and expose it to the web using `ngrok`.\n", + "\n", + "**Important:** You need a free `ngrok` authentication token for this step.\n", + "\n", + "1. Go to the [ngrok Dashboard](https://dashboard.ngrok.com/get-started/your-authtoken) and sign up for a free account.\n", + "2. Copy your authentication token.\n", + "3. Paste the token into the `PYNGROK_TOKEN` variable in the code block below, replacing ``.\n", + "\n", + "The script will then:\n", + "1. Set your `ngrok` auth token.\n", + "2. Start the Intugle Streamlit server in the background on its default port (`8501`).\n", + "3. Create a secure public URL that tunnels traffic to the Streamlit server.\n", + "\n", + "Once you run the cell, click the public URL that is printed to access the application in your browser.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4564ff48", + "metadata": {}, + "outputs": [], + "source": [ + "from pyngrok import ngrok\n", + "\n", + "# TODO: Replace with your actual ngrok authentication token.\n", + "# You can get a free token from https://dashboard.ngrok.com/get-started/your-authtoken\n", + "PYNGROK_TOKEN = \"\"\n", + "\n", + "# Set authentication token\n", + "ngrok.set_auth_token(PYNGROK_TOKEN)\n", + "\n", + "# Start the Intugle Streamlit server in the background on port 8501\n", + "# The `nohup` command ensures it keeps running, and `&` runs it as a background process.\n", + "!nohup intugle-streamlit &\n", + "\n", + "# Start an ngrok tunnel to expose the Streamlit server\n", + "# This connects to the default Streamlit port (8501)\n", + "ngrok_tunnel = ngrok.connect(addr='8501', proto='http', bind_tls=True)\n", + "\n", + "# Print the public URL to access the app\n", + "print(' * Tunnel URL:', ngrok_tunnel.public_url)" + ] + }, + { + "cell_type": "markdown", + "id": "808123d4", + "metadata": {}, + "source": [ + "## 3. Shut Down the Tunnel\n", + "\n", + "When you are finished using the application, it is good practice to close the `ngrok` tunnel to release the resources. The following script will find all active tunnels and disconnect them.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4fb8abf7", + "metadata": {}, + "outputs": [], + "source": [ + "# Close all active tunnels\n", + "from pyngrok import ngrok\n", + "\n", + "active_tunnels = ngrok.get_tunnels()\n", + "for tunnel in active_tunnels:\n", + " ngrok.disconnect(tunnel.public_url)\n", + " print(f\"Closed tunnel: {tunnel.public_url}\")\n" + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/src/intugle/streamlit_app/.streamlit/config.toml b/src/intugle/streamlit_app/.streamlit/config.toml index fe6f645..ae8a42d 100644 --- a/src/intugle/streamlit_app/.streamlit/config.toml +++ b/src/intugle/streamlit_app/.streamlit/config.toml @@ -5,12 +5,4 @@ primaryColor = "#8B5CF6" backgroundColor = "#ffffff" secondaryBackgroundColor = "#F7F5FF" textColor = "#111827" -font = "sans serif" - -[smtp] -host = "smtp.gmail.com" -port = 465 -username = "hello@intugle.ai" -password = "1234" -from_email = "hello@intugle.ai" -from_name = "Intugle Bot" +font = "sans serif" \ No newline at end of file