Skip to content

Instantly share code, notes, and snippets.

@owahltinez
Last active August 14, 2023 06:38
Show Gist options
  • Save owahltinez/22db2e289412c34226277d31c52e4e3d to your computer and use it in GitHub Desktop.
Save owahltinez/22db2e289412c34226277d31c52e4e3d to your computer and use it in GitHub Desktop.
producing-sentence-embeddings.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/owahltinez/22db2e289412c34226277d31c52e4e3d/producing-sentence-embeddings.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "code",
"source": [
"import pandas as pd\n",
"import requests\n",
"import yaml\n",
"\n",
"gist_id = '9a98d3874747c72a906c3c68b51f728c'\n",
"sentences_url = f'https://gist.githubusercontent.com/owahltinez/{gist_id}/raw/'\n",
"sentences = yaml.safe_load(requests.get(sentences_url).text)\n",
"\n",
"sentences_df = pd.DataFrame.from_dict(sentences).melt(var_name='label', value_name='text')\n",
"sentences_df.sample(5)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"id": "ULzcxxpocWwf",
"outputId": "c8209d75-621f-43c8-b95f-312e90c3959d"
},
"execution_count": 1,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" label text\n",
"8 chair Standing desks are a popular way to reduce the...\n",
"25 water The average person uses about 80 gallons of wa...\n",
"9 chair There are over 100 different types of chairs i...\n",
"46 camera The first digital camera cost over $100,000.\n",
"21 water Water covers 71% of the Earth's surface."
],
"text/html": [
"\n",
"\n",
" <div id=\"df-49de9e70-b316-453c-ad2a-425d4108475f\">\n",
" <div class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>label</th>\n",
" <th>text</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>chair</td>\n",
" <td>Standing desks are a popular way to reduce the...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>water</td>\n",
" <td>The average person uses about 80 gallons of wa...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>chair</td>\n",
" <td>There are over 100 different types of chairs i...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>camera</td>\n",
" <td>The first digital camera cost over $100,000.</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>water</td>\n",
" <td>Water covers 71% of the Earth's surface.</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-49de9e70-b316-453c-ad2a-425d4108475f')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M0 0h24v24H0V0z\" fill=\"none\"/>\n",
" <path d=\"M18.56 5.44l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94zm-11 1L8.5 8.5l.94-2.06 2.06-.94-2.06-.94L8.5 2.5l-.94 2.06-2.06.94zm10 10l.94 2.06.94-2.06 2.06-.94-2.06-.94-.94-2.06-.94 2.06-2.06.94z\"/><path d=\"M17.41 7.96l-1.37-1.37c-.4-.4-.92-.59-1.43-.59-.52 0-1.04.2-1.43.59L10.3 9.45l-7.72 7.72c-.78.78-.78 2.05 0 2.83L4 21.41c.39.39.9.59 1.41.59.51 0 1.02-.2 1.41-.59l7.78-7.78 2.81-2.81c.8-.78.8-2.07 0-2.86zM5.41 20L4 18.59l7.72-7.72 1.47 1.35L5.41 20z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
"\n",
"\n",
" <div id=\"df-1c735a83-ae25-4821-a53f-1020dcf6fea6\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-1c735a83-ae25-4821-a53f-1020dcf6fea6')\"\n",
" title=\"Suggest charts.\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
" </div>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const containerElement = document.querySelector('#' + key);\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" }\n",
" </script>\n",
"\n",
" <script>\n",
"\n",
"function displayQuickchartButton(domScope) {\n",
" let quickchartButtonEl =\n",
" domScope.querySelector('#df-1c735a83-ae25-4821-a53f-1020dcf6fea6 button.colab-df-quickchart');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"}\n",
"\n",
" displayQuickchartButton(document);\n",
" </script>\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" flex-wrap:wrap;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-49de9e70-b316-453c-ad2a-425d4108475f button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-49de9e70-b316-453c-ad2a-425d4108475f');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
" </div>\n"
]
},
"metadata": {},
"execution_count": 1
}
]
},
{
"cell_type": "code",
"source": [
"%pip install umap-learn --upgrade --user > /dev/null"
],
"metadata": {
"id": "6Xr8QsAkbHut"
},
"execution_count": 2,
"outputs": []
},
{
"cell_type": "code",
"source": [
"from matplotlib import colors as mcolors\n",
"from sklearn import decomposition\n",
"from sklearn import cluster\n",
"from sklearn import preprocessing\n",
"import umap\n",
"\n",
"import pandas as pd\n",
"import numpy as np\n",
"\n",
"def plot_embeddings(embeddings: np.ndarray, true_labels: list):\n",
" \"\"\"Performs dimensionality reduction and clustering, and plots embeddings.\n",
"\n",
" Dimensionality reduction is performed using UMAP, from the `umap-learn`\n",
" package. Clustering is performed using KMeans. Different colors are used to\n",
" indicate different clusters, and different markers are used to indicate\n",
" different labels from the ground truth.\n",
" \"\"\"\n",
"\n",
" # Normalize the embeddings.\n",
" embeddings = preprocessing.normalize(embeddings)\n",
"\n",
" # Map labels to integers using ordinal encoding.\n",
" label_map = {x: i for i, x in enumerate(sorted(set(true_labels)))}\n",
"\n",
" # Reduce the dimension of the embeddings to just two components.\n",
" xy = umap.UMAP(random_state=0, n_components=2).fit_transform(embeddings)\n",
" xy = pd.DataFrame(xy, columns=['x', 'y'])\n",
"\n",
" # Compute the clusters using KMeans.\n",
" n_clusters = len(label_map)\n",
" clusters = cluster.KMeans(n_clusters, n_init='auto').fit_predict(xy)\n",
"\n",
" # Map the same indices to the same clusters every time.\n",
" cluster_map = {x: i for i, x in enumerate(dict.fromkeys(clusters))}\n",
"\n",
" # Assign a marker to each true label.\n",
" marker_choices = ['*', '^', 'P', 's', 'p', 'X', 'D', 'H', 'v', 'o']\n",
" markers = [marker_choices[x] for x in label_map.values()]\n",
"\n",
" # Assign a color to each computed cluster.\n",
" palette = list(mcolors.TABLEAU_COLORS.values())\n",
" xy['c'] = [palette[cluster_map[x]] for x in clusters]\n",
"\n",
" # Add a column with the true label.\n",
" xy['label'] = [label_map[x] for x in true_labels]\n",
"\n",
" # Each marker needs to be plotted in a different step.\n",
" ax = None\n",
" plot_opts = dict(kind='scatter', x='x', y='y', s=20)\n",
" for label, idx in label_map.items():\n",
" marker = markers[idx]\n",
" df = pd.DataFrame(xy[xy['label'] == idx], columns=['x', 'y', 'c'])\n",
" ax = df.plot(ax=ax, c=df['c'], marker=marker, label=label, **plot_opts)\n",
" ax.legend(loc='center left', bbox_to_anchor=(1.0, 0.85))\n",
"\n",
" # Remove any cluster colors from the legend since they don't repressend\n",
" # a classification of the embedding.\n",
" legend = ax.get_legend()\n",
" for handle in ax.get_legend().legend_handles:\n",
" handle.set_color('black')"
],
"metadata": {
"id": "Vexa-AmhgVjd"
},
"execution_count": 3,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "W3Og7ha3gZDo"
},
"source": [
"## Option 1: Local Model"
]
},
{
"cell_type": "code",
"source": [
"%pip install tensorflow_text --upgrade --user > /dev/null"
],
"metadata": {
"id": "XeS5JXhzbT-m"
},
"execution_count": 4,
"outputs": []
},
{
"cell_type": "code",
"source": [
"#@title Using the Universal Sentence Encoder model\n",
"import tensorflow_hub as hub\n",
"\n",
"# Load the model from tensorflow hub.\n",
"model = hub.load(\"https://tfhub.dev/google/universal-sentence-encoder/4\")\n",
"\n",
"# Compute the embeddings for each sentence.\n",
"embeddings = model(sentences_df.text)\n",
"\n",
"# Plot the resulting embeddings.\n",
"plot_embeddings(embeddings.numpy(), sentences_df.label.tolist())"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 449
},
"id": "WmO97pRvcnYC",
"outputId": "be46d790-a897-454e-c9ed-a2562833af41"
},
"execution_count": 5,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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uj777DN9/vnn2rhxoyTp5MmTeuSRR7R27VolJSXJbrfr5ptvNvUv7tVlMzz5lmbVlJubq/DwcOXk5CgsLOyi9rV6fqbWzM+scFlwuL/GvnjlRe3fEx3amasGTevJ18/H7FJqTVFBsfan51S4LLRBoBo0refmigDA+1zo87ugoECZmZnleiVrwuFwqGPHjkpJSVH79u21devWc4ZV1qa8vDxFRkbq73//u+69995K158xY4bmzZuntWvXSirtkX355Zd14MABhYaGSpIGDx6slJQUZWRkOGtv3769xowZo6lTp2rp0qW64YYbdOjQoXLXPLVp00Z//vOfNX78eD311FN6/vnntXfvXkVGRp63niNHjigyMlKbN29W586dL+ZUXJTq/Pw95kK2uqZr/+aqH13xncTCGnnfzQuO7DmhTxLXquvVzS110w3/QF+17NywxtuXFDuUNGebug5oruhW4bVYGQCgNn322WdKSUmRJG3fvl2ff/65br31Vpcdb9u2bSosLNTAgQMrXP7RRx/p9ddfV0ZGhk6cOKHi4uJzAn9sbKwz8EpSVFSUfHx8yoX1qKgoHTp0SFLpPQ5OnDihhg3Lf66dOnWq3FCFli1bnhN409LS9OSTT2rVqlU6cuSIs4d3165dpobe6iD01lBgiJ/ie0WZXUadsWb+DknSliV71SOhpeqFu3bWDE+xfcV+pa05qOyD+Rr+WK9yF8QBAOoGh8OhadOmyW63y+FwyG63a9q0abrllltc1tsbFHT+DrIVK1Zo5MiRevrpp5WQkKDw8HDNmzdPf/vb38qt5+dXfrYom81WYVtZQD1x4oSaNGmi5OTkc44ZERHh/P969c79K+aQIUPUsmVLvfPOO2ratKkcDoc6d+7sURe6ecyYXtRdR/ac0I6NRyRJhmFo/fc7Ta6obigpdmjNgixJ0uFdedq19diFNwAAmKKsl7csHDocDmdvr6vEx8crKChISUlJ5yxbvny5WrZsqccff1y9evVSfHy8du68+M/WHj166MCBA/L19VWbNm3KPRo1anTe7Y4ePaqUlBQ98cQTGjhwoDp06KDjx49fdD3uRuj1EoWnirXiywyXzCyxZv4O2eylPZiGo7S3l9syl/bynswuPQ82u7Tq6x3yoiH0AOARzuzlPVNZb6+rLtQKDAzUlClT9Oc//1nvvfeeMjIytHLlSv37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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"#@title Using the Sentence T5 model\n",
"\n",
"# The package tensorflow_text is required by ST5.\n",
"import tensorflow_text\n",
"import tensorflow_hub as hub\n",
"\n",
"# Load the model from tensorflow hub.\n",
"model = hub.load('https://tfhub.dev/google/sentence-t5/st5-base/1')\n",
"\n",
"# Compute the embeddings for each sentence.\n",
"embeddings = model(sentences_df.text)[0]\n",
"\n",
"# Plot the resulting embeddings.\n",
"plot_embeddings(embeddings.numpy(), sentences_df.label.tolist())"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 501
},
"outputId": "a367a617-0826-4b6d-afac-881b2472ba42",
"id": "UcwbmiGZmkI9"
},
"execution_count": 6,
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"WARNING:absl:Importing a function (__inference_<lambda>_9720) with ops with unsaved custom gradients. Will likely fail if a gradient is requested.\n",
"WARNING:absl:Importing a function (__inference_<lambda>_3354) with ops with unsaved custom gradients. Will likely fail if a gradient is requested.\n",
"WARNING:absl:Importing a function (__inference_<lambda>_6722) with ops with unsaved custom gradients. Will likely fail if a gradient is requested.\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAr0AAAGwCAYAAACkUt2bAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABMvklEQVR4nO3deXhU5R328XuyL2RhTwKBEPYdQaFQFRA0IkXQapEqggvaFvsKiAJvBaS+iqituKLSCoh1wbVWEEQkyI6yCYiQhECQHSWZJISEZM77R8zIkISsMydn5vvpNVc56/xOTszcefKc57EZhmEIAAAA8GJ+ZhcAAAAAuBuhFwAAAF6P0AsAAACvR+gFAACA1yP0AgAAwOsRegEAAOD1CL0AAADwegFmF+BJDodDR48eVUREhGw2m9nlAACASjAMQ9nZ2YqLi5OfH+11qB6fCr1Hjx5VfHy82WUAAIBqOHz4sJo3b17u9qKiIp0/f96DFcFMgYGB8vf3r/T+PhV6IyIiJBX/RxMZGWlyNQAAoDLsdrvi4+Odn+MXMwxDx48fV2ZmpmcLg+mio6MVExNTqb/g+1ToLfmCREZGEnoBALCY8oJNSeBt0qSJwsLC6MLoAwzD0NmzZ3Xy5ElJUmxsbIXH+FToBQAA3qWoqMgZeBs2bGh2OfCg0NBQSdLJkyfVpEmTCrs60BscAABYVkkf3rCwMJMrgRlK7ntl+nITegEAgOXRpcE3VeW+E3oBAADg9Qi9AAAA8HqEXgAAANTYwoULFR0dfcl9HnvsMfXo0cO5PHbsWI0YMcKtdZUg9AIAAFhQZUJmXTN58mStWrXKlPcm9AIAAPxix44dZpfg1erVq2fa0HKEXgAAAElfffWVLrvsMn311Vceeb/ly5fryiuvVHR0tBo2bKjf/e53SktLkyQlJyfLZrO5zDK3Y8cO2Ww2HTx4UMnJybrrrruUlZUlm80mm82mxx57TJJ05swZ3Xnnnapfv77CwsI0ZMgQpaSkOM9T0kL82WefqX379goLC9Mtt9yis2fPatGiRUpISFD9+vX1f/7P/1FRUZHzuIrOW+KTTz5R27ZtFRISoqSkJB0+fNi57eLuDRdzOByaPXu2WrVqpdDQUHXv3l0ffPBBNb/Crgi9AADApx07dkz79u3TwoULJRWHwn379unYsWNufd/c3FxNmjRJ3377rVatWiU/Pz/ddNNNcjgcFR7br18/zZ07V5GRkTp27JiOHTumyZMnSyruJ/vtt9/q008/1caNG2UYhm644QaXsWzPnj2rF154Qe+++66WL1+u5ORk3XTTTVq2bJmWLVumxYsX67XXXnMJnJU97xNPPKE333xT69evV2Zmpm677bZKf01mz56tN998U6+++qr27NmjiRMn6o477tCaNWsqfY5yGT4kKyvLkGRkZWWZXQpQSuH5IuOzl3YYGXt/MrsUAKhTLvX5nZeXZ3z//fdGXl5etc5tt9sNPz8/Q1Kpl7+/v2G322tafqWdOnXKkGTs2rXLWL16tSHJOHPmjHP79u3bDUlGenq6YRiGsWDBAiMqKsrlHPv37zckGevXr3euO336tBEaGmosWbLEeZwkIzU11bnP/fffb4SFhRnZ2dnOdUlJScb9999f5fNu2rTJuc/evXsNScbmzZsNwzCMmTNnGt27d3duHzNmjDF8+HDDMAzj3LlzRlhYmLFhwwaXa7rnnnuMUaNGlfk1q8r9p6UXqCP2bjimg7t+0tfv7JfhMMwuBwB8QkREhBYuXKjQ0FDnRAc2m02hoaFasGCBIiIi3PbeKSkpGjVqlBITExUZGamEhARJUkZGRrXPuXfvXgUEBKhPnz7OdQ0bNlT79u21d+9e57qwsDC1bt3audy0aVMlJCSoXr16LutOnjxZpfMGBAToiiuucC536NBB0dHRLvuUJzU1VWfPntW1116revXqOV9vvvmms9tHTQTU+AxADZ06nK3oJmEKDL70nNnerKjQoW+WpkuSMk+cVdr2U2rTq4nJVQGAbxg9erQ2bdqkV155RX5+fnI4HLr77rs1evRot77vsGHD1LJlS82fP19xcXFyOBzq0qWLCgoKnOHTMH5tBKnMVLuVFRgY6LJss9nKXFeZrha1JScnR5K0dOlSNWvWzGVbcHBwjc9PSy9MZT+dp/dnf6Pk//xgdimm2rvhmM5mFUiSbDZp86cHaO0FAA/65JNPJEmDBg1yWXaXn376Sfv27dOjjz6qQYMGqWPHjjpz5oxze+PGjSXJpV/xxSNLBAUFuTxoJkkdO3ZUYWGhNm/eXOq9OnXqVO16K3vewsJCffvtt87lffv2KTMzUx07dqzwPTp16qTg4GBlZGSoTZs2Lq/4+Phq116C0AtTbV1+UIZD2v/NCWWeOGt2Oaa4sJVXkgzj19ZeAIBn3HbbbVq+fLm++OILLV++vEoPX1VH/fr11bBhQ73++utKTU3VV199pUmTJjm3lwS9xx57TCkpKVq6dKn+8Y9/uJwjISFBOTk5WrVqlU6fPq2zZ8+qbdu2Gj58uMaNG6d169Zp586duuOOO9SsWTMNHz682vVW9ryBgYH661//qs2bN2vr1q0aO3asfvOb36h3794VvkdERIQmT56siRMnatGiRUpLS9O2bdv04osvatGiRdWuvQShF6axn87T3vXFv8HabDaX4OdLLmzlLUFrLwB41j/+8Q8lJSVJkpKSkvTss8+69f38/Pz07rvvauvWrerSpYsmTpyoZ555xrk9MDBQ77zzjn744Qd169ZNc+bM0f/7f//P5Rz9+vXTn/70J40cOVKNGzfW008/LUlasGCBevXqpd/97nfq27evDMPQsmXLSnVfqKrKnDcsLExTpkzRH//4R/32t79VvXr19N5771X6PR5//HFNnz5ds2fPVseOHXX99ddr6dKlatWqVY1qlySbcWFnES9nt9sVFRWlrKwsRUZGml2Oz1v91l7t3XBMRkl3IZt0+2O/UXTTMFPr8iTDMLRw6vpSobfEkD91VWKPxh6uCgDqlkt9fp87d07p6elq1aqVQkJCTKoQZqnK/edBNpiipJX3wl+5Slp7r727s3mFmaBFxwbKycwvtd7mZ1NYVJAJFQEA4H0IvTDF1uUHdfGfGAyHof3fnNAVQ1v5TGuvzWbToLHVf7AAAABUDn16YYrUradUKvVKkiEd2Om+B7hOHrLr63f2yUFfWaftKzN0NOVMxTsCAGBhtPTCFCMfvaLcfqyNW7hnIHDDMLTmnf06edCumDZRandFjFvex0pOZWRrw4epimgQojse/438/Pk9GADgnSzzCffYY4/JZrO5vDp06GB2WaimyIahikmMKvPlH+Ceb8vDe3/WyYN2SdKWT9Np7ZW05X8HZLNJ2T+f0/4tJ5R/9rw+e3mnTv+YbXZpAADUKku19Hbu3FlffvmlczkgwFLlw0SGYWjzp+my+UmGQ8o6lafUrSd8urX3VEa2Du76qXjBJm35X7qyTp3VoV0/yVHo0I0PXmZugQAA1CJLpcaAgADFxPhuSEH1XdjKK6k45H2arja9msrPz2ZeYSba8r8DsvnZiscCNopbe7d/UTzf++G9Z3T8QJZiEqNMrhIAgNphme4NkpSSkqK4uDglJibq9ttvV0ZGxiX3z8/Pl91ud3nB91zYyvvryl9be31RSSvvxZNfFBUWL9v8bNryvwNmlAYAgFtYJvT26dNHCxcu1PLlyzVv3jylp6frqquuUnZ2+X0PZ8+eraioKOerNuZthvX8+MMZnTxo/3USjAts+TRdPjQ/i1NFgdZwGM7WXgAAvIFlQu+QIUN06623qlu3bkpKStKyZcuUmZmpJUuWlHvMtGnTlJWV5XwdPnzYgxWjzrBJUU1CFdkopNQrPDrY7OrMYbMppF6g8+UfWPpHAa29AABvYqk+vReKjo5Wu3btlJqaWu4+wcHBCg720VADp/gODXTH3/uaXUadMvQv3Zz/LjhXqIVT1qvoon1KWntPHrKrSUum7QYAX1RQUKCgIO+YHdQyLb0Xy8nJUVpammJjY80uBbA0m82m5h3qK7ZNVKlX8/b1FRjsb3aJAOAx+/fv99h7ORwOPf3002rTpo2Cg4PVokULPfHEE5KkKVOmqF27dgoLC1NiYqKmT5+u8+fPO4997LHH1KNHD73xxhtq0aKF6tWrp7/85S8qKirS008/rZiYGDVp0sR5vhKZmZm699571bhxY0VGRuqaa67Rzp07S533X//6l1q1aqWQkBBJ0vLly3XllVcqOjpaDRs21O9+9zulpaV54KtUeyzT0jt58mQNGzZMLVu21NGjRzVz5kz5+/tr1KhRZpcGWFpgsL9u+HO3incEAC/3wQcf6NZbb9X777+vW265xe3vN23aNM2fP1/PPfecrrzySh07dkw//PCDJCkiIkILFy5UXFycdu3apXHjxikiIkKPPPKI8/i0tDR9/vnnWr58udLS0nTLLbfowIEDateundasWaMNGzbo7rvv1uDBg9WnTx9J0q233qrQ0FB9/vnnioqK0muvvaZBgwZp//79atCggSQpNTVVH374oT766CP5+xc3fOTm5mrSpEnq1q2bcnJyNGPGDN10003asWOH/Pws0oZqWMTIkSON2NhYIygoyGjWrJkxcuRIIzU1tUrnyMrKMiQZWVlZbqoSAADUtkt9fufl5Rnff/+9kZeXV6P3KCoqMtq3b29IMjp06GAUFRXV6HwVsdvtRnBwsDF//vxK7f/MM88YvXr1ci7PnDnTCAsLM+x2u3NdUlKSkZCQ4FJ7+/btjdmzZxuGYRhr1641IiMjjXPnzrmcu3Xr1sZrr73mPG9gYKBx8uTJS9Zz6tQpQ5Kxa9euStXvLlW5/5Zp6X333XfNLgEAAHipDz/8UPv27ZMk/fDDD/roo4/c2tq7d+9e5efna9CgQWVuf++99/TCCy8oLS1NOTk5KiwsVGSk6/MVCQkJioiIcC43bdpU/v7+Li2vTZs21cmTJyVJO3fuVE5Ojho2bOhynry8PJeuCi1btlTjxo1d9klJSdGMGTO0efNmnT59Wg5H8ZBIGRkZ6tKlSzW+Ap5nmdALAADgDg6HQ9OnT5efn58cDof8/Pw0ffp03XzzzW77031oaGi52zZu3Kjbb79ds2bNUlJSkqKiovTuu+/qH//4h8t+gYGBLss2m63MdSUBNScnR7GxsUpOTi71ntHR0c5/h4eHl9pe0sV0/vz5iouLk8PhUJcuXVRQUFDRpdYZhF4AAODTLmzllYpDsLtbe9u2bavQ0FCtWrVK9957r8u2DRs2qGXLlvrb3/7mXHfo0KEav2fPnj11/PhxBQQEKCEhodLH/fTTT9q3b5/mz5+vq666SpK0bt26GtfjaYReWFrBuUIFhVjn2zg3K1+hEUE+O/UxANQ1F7fylnB3a29ISIimTJmiRx55REFBQfrtb3+rU6dOac+ePWrbtq0yMjL07rvv6oorrtDSpUv18ccf1/g9Bw8erL59+2rEiBF6+umn1a5dOx09elRLly7VTTfdpMsvv7zM4+rXr6+GDRvq9ddfV2xsrDIyMjR16tQa1+NpFnncDijt9I85emPyOqVuPWl2KZVy1l6gt6Zv1Lr3U8wuBQDwix07dmjfvn0ugVf6tbV3x44dbnvv6dOn66GHHtKMGTPUsWNHjRw5UidPntSNN96oiRMn6oEHHlCPHj20YcMGTZ8+vcbvZ7PZtGzZMl199dW666671K5dO9122206dOiQmjZtWu5xfn5+evfdd7V161Z16dJFEydO1DPPPFPjejzNZhi+Mwer3W5XVFSUsrKySnUGh/V8/up3OrDjtKIah+qPs35T51tPN3yYqu0rM+TnZ9PoJ/qqXv0Qs0sCAEu41Of3uXPnlJ6e7jKmbFU4HA4lJycrNze31Lbw8HANGDDAOkNy+aCq3H/r/F0YuMDpH3N0YMdpSVLWqTylbj2hdlfEmFxV+c7aC/Td6h8lSYYMbVt+SFePam9yVQAAPz8/XXPNNWaXAQ/gVxdY0jefHZCtpGXXJm35NF0OR939o8WOlRlyFBX/6cxwSHvWHlXOmXMmVwUAgO8g9MJySlp5jZKQa/za2lsXlbTyXtiRqKS1FwAAeAahF5bj0spbog639l7YyluC1l4AADyL0AtLOWsvcLby2mxyvkpae4/sO2N2iaV8v/6oynpc1OEwtH9L9Vqns38+p0O7f6phZQAA+A4eZIOlhIQH6Jo7O6ogr7DUNj9/m5om1L1ROX73QHdl/1RGi65Niu/YoFrn/HLB9zqWmqk/zvqNopuE1bBCAAC8H6EXluLn76eO/WLNLqNKYhKjFJMYVWvnO5pyRkdTMiVJW5cd1KCxnWrt3AAAeCu6NwAWs/nTdNl++S933+bjyjx51tyCAACwAEIvYCElrbxGyXNxNpu2LjtoZkkAAFgCoRewkAtbeSXJcBi09gKAlzl48KBsNluNp0AeMGCAJkyYUCs1eQP69AIWcWFf3gsZBn17AQClffTRRwoMDDS7jDqDll74jHM557V68V7lZuWbXUq1HEvLKnfb0dRMzxUCALCEBg0aKCIiotztBQUFHqzGfIRe+IxtXxzS9+uPWbYPbM+klho757dlvm6b0cfs8mAB9gK7svLL/+UJ8HUpKSnatm2bUlJSPPJ+DodDTz/9tNq0aaPg4GC1aNFCTzzxhHP7gQMHNHDgQIWFhal79+7auHGjc9tPP/2kUaNGqVmzZgoLC1PXrl31zjvvuJz/4u4NCQkJevzxx3XnnXcqMjJS9913n9uvsS4h9MIn5GUX6LuvfpRk3ZnQbDabwqOCy3wFBvmbXR4sYMrXU/TAqgfMLgOok1JSUtSuXTv16tVL7dq180jwnTZtmp566ilNnz5d33//vd5++201bdrUuf1vf/ubJk+erB07dqhdu3YaNWqUCguLx6k/d+6cevXqpaVLl2r37t267777NHr0aG3ZsuWS7/nss8+qe/fu2r59u6ZPn+7W66tr6NMLn7B9ZYYcjuIhDwwZ2rb8kK4e1d7kqgD3MwxDP537SWfPn9WGoxvkMBxKOZOi+iH11SCkgfxstH0AKSkppcJiyXLbtm3d8p7Z2dl6/vnn9dJLL2nMmDGSpNatW+vKK6/UwYMHJUmTJ0/W0KFDJUmzZs1S586dlZqaqg4dOqhZs2aaPHmy83x//etftWLFCi1ZskS9e/cu932vueYaPfTQQ265prqO0AuvV9LKWzLMl+Eobu3teX1L1asfYm5xgJu9uvNVvbLzFeeyTTbd/OnNkqQ7O92ph6942KzSgDqhpIX3YnfccYckaf/+/W4Jvnv37lV+fr4GDRpU7j7dunVz/js2tnhippMnT6pDhw4qKirSk08+qSVLlujIkSMqKChQfn6+wsIuPUvn5ZdfXjsXYEH8ig+vd2Erb4mS1l7A293c9mZ1b9zduWzIkCR1aNBBozqMMqssoM7Izs6u0fbqCg0NrXCfC0desNlskuT8PHvmmWf0/PPPa8qUKVq9erV27NihpKSkCh9OCw8Pr0HV1kbohVc7l3PepZW3RElrb84Za47kAFRW0/CmennQy7LJ5rL+pWteUvOI5iZVBdQdlxrdoDLbq6tt27YKDQ3VqlWrqnX8+vXrNXz4cN1xxx3q3r27EhMTtX///lqu0rsQeuHVCs87FB0TpshGIaVe0TFhKip0VHwSwOI2HN0gQ4aig6PVKLSRJGndkXUmVwXUDW3bttX+/fv11ltvuax/66233Na1QZJCQkI0ZcoUPfLII3rzzTeVlpamTZs26d///neljm/btq1WrlypDRs2aO/evbr//vt14sQJt9TqLejTC69Wr36wbnu0/A79gC9oEtZEw1sP18ReExXgF6C52+YqJjzG7LKAOqOsYNu7d2+3Bd4S06dPV0BAgGbMmKGjR48qNjZWf/rTnyp17KOPPqoDBw4oKSlJYWFhuu+++zRixAhlZTEsYXlshmEYZhfhKXa7XVFRUcrKylJkZKTZ5QAAgEq41Of3uXPnlJ6erlatWikkpGYPJ6ekpCg7O1sRERFuD7yoHVW5/7T0AgAAyH3Dk6FuoE8vAFRRQVGB3t//vgodhWaXgip6fOPjenPPm2aXAcAEhF4AqKLlB5fr7xv/zsNgFpOVn6UPUj7Qwj0L5UM9+wD8gu4NAFAJhmFo9eHVyj2fq/f3vS9Jenvv28ouyFZ0cLSuan6VyRWiPO/98J4+PfCpcgty5TAcOpV3SiM/G6kg/yDd1+0+Xd38arNLBOABhF7ADXKz8pX98znFtIoyuxTUkqz8LE1eM1nnHeed6zYe26iNxzYqNCBUa29bq2D/YBMrRHnCAsO0+/RuOS4YsHvvz3sVFhCm8EDfHagf8DV0bwDcYMXru/XJP7bprP3SM+PAOqJDorV4yGLFhsfK75cfnTbZlBCZoLdveJvAW4cNaz1M86+d77IuyC9IHw3/SL2a9jKpKgCeRugFatmRfWd0LC1LRYWGtn/BVMfepHOjzurcsLMcKm4xNGSoV9NealO/jcmVoSKn8067LBc4CpRTkGNSNQDMYNnQ+9RTT8lms2nChAlmlwK42PzpAdl++S9rV/KPtPZ6EcMwtPbIWtULrKdxXccpxD9Ea35cY3ZZqISM7Aw1Cm2kN5Le0JNXPqmwgDAdsvNLKeBLLNmn95tvvtFrr72mbt26mV0K4KKklbeEw1Hc2vvbWxj70RvYbDbN7DtTV8RcoZjwGN3U5ibt+XmP2WWhEsZ1HadxXcfJ389fknR9wvUK9A80uSoAnmS5lt6cnBzdfvvtmj9/vurXr292OYCLC1t5Jclw0NrrbYa1Huacwjc+Ml7XJ1xvckWoDH8/f2fglUTgBXyQ5ULv+PHjNXToUA0ePLjCffPz82W3211egLuUtPJe8IC4JNG3FwBQpgEDBtBN04MsFXrfffddbdu2TbNnz67U/rNnz1ZUVJTzFR8f7+YK4csyvv+p3G2Hdpe/DQCAshiGocJCZn6sLZbp03v48GE9+OCDWrlypUJCQip1zLRp0zRp0iTnst1uJ/jCbXrfmKj2v4ktc1tYZJCHqwEAVFZKSoqys7NLrY+IiFDbtu55JmPs2LFas2aN1qxZo+eff16StGDBAt11111atmyZHn30Ue3atUtffPGFrr76as2ZM0evv/66jh8/rnbt2mn69Om65ZZbnOfbvXu3Hn74Ya1du1bh4eG67rrr9Nxzz6lRo0Zuqd+KbIZF5mL85JNPdNNNN8nf/9c+WUVFRbLZbPLz81N+fr7LtrLY7XZFRUUpKytLkZGR7i4ZAADUgkt9fp87d07p6elq1apVpRvFLpSSkqJ27dqVu33//v1uCb5ZWVkaMmSIunTpor///e+SpD179mjw4MHq1q2bnn32WSUmJqp+/fqaN2+e3nrrLc2dO1dt27bV119/rT/96U9asWKF+vfvr8zMTLVr10733nuv7rzzTuXl5WnKlCkqLCzUV199Veu11yVVuf+WaekdNGiQdu3a5bLurrvuUocOHTRlypQKAy8AAFaRlZ+lv3z5F/39t39X6+jWZpfj1cpq4a3K9uqKiopSUFCQwsLCFBNT/HDsDz/8IEn6+9//rmuvvVZS8fNJTz75pL788kv17dtXkpSYmKh169bptddeU//+/fXSSy/psssu05NPPuk8/xtvvKH4+Hjt37//kqHel1gm9EZERKhLly4u68LDw9WwYcNS6wEAsLKvMr7Sd6e/03/T/qtJvSZVfAC8yuWXX+78d2pqqs6ePesMwSUKCgp02WWXSZJ27typ1atXq169eqXOlZaWRuj9hWVCLwAA3sxhODT166k6cfaEMrIzJElL9i3RzpM7FR4YrtlXzVZUcJTJVcITwsPDnf/OySmeOXDp0qVq1qyZy37BwcHOfYYNG6Y5c+aUOldsbNnPmvgiS4fe5ORks0sAANRhDsOhxd8v1og2IywRGM8WntW2k9ucy7nnc7Xt5Da1jW6rAD9Lf2SjDEFBQSoqKrrkPp06dVJwcLAyMjLUv3//Mvfp2bOnPvzwQyUkJCgggO+T8lhqyDIAAKpi24ltevbbZ/XB/g/MLqVCfjY/vXDNC7q13a0u6/vE9tG7v3tX4YHh5RwJq0pISNDmzZt18OBBnT59Wg6Ho9Q+ERERmjx5siZOnKhFixYpLS1N27Zt04svvqhFixZJKp7D4Oeff9aoUaP0zTffKC0tTStWrNBdd91VYaj2Jfw6AADwOqsyVulE7gmtPbJWkvRxyscKDQhVaECohiYOVZB/3RxG0M/mp9N5p13WHcs5Vmfr9QYRERE12l4TkydP1pgxY9SpUyfl5eVpwYIFZe73+OOPq3Hjxpo9e7YOHDig6Oho9ezZU//3//5fSVJcXJzWr1+vKVOm6LrrrlN+fr5atmyp66+/Xn5+tG+WsMyQZbWBIcsAwPsZhqGkD5N0LPeYc51NNhkyFGAL0P9u+p+aRzQ3scJLG/bxMDUJa6IZfWfo9e9e1/KDy7Vh1AYF+webXZpp3DlkmWTOOL2oHVW5/4ReAIDXOXX2lCavmezsH+tn81OT0CaaO3CuOjfqbHJ1l5ZflK8gvyDZbDbnsi8HXsn9oRfWVZX7T5s3AMCSluxboue2PlfmtsZhjdWtcTfnssNwqElYkzofeCUp2D/YGXhLlgHUHKEXAGA5hmFo/nfz9eb3byqnIKfMfdYdWacQ/xBN6DlBMWEx2nV6l3LP53q4UgB1BQ+yAQAsY9OxTXpzz5sqKCrQ8bPHJUn3r7xfkcGRGtJqiG5sfaNz32m9pymuXpyaRzTXH9r/QZuObVJoQKhZpQMwGaEXAGAZDodDm45t0nnHeee6705/J5tsuqbFNS779o7t7fx3RFCErm3pOqMVAN9C9wYAgGX0a9ZP7w97X4F+gS7rXx70cqnxbQHgQoReAIClGIbh0tIrFY9wAACXQugFAFjK/jP7FegXqEf7PKrnBz6viKAI7T+z3+yyLOOzA59pefpys8sAPI4+vQAASxnSaoiuan6VIoKKZ8paFbdKATY+zirDYTj09JanFeAXoKSEJJeh0QBvx08JAICl2Gw2Z+CVxIgMlbDj5A59eehL2QvsOpN/RpI0a+Ms1Qusp6SEJHVt3NXkCgH3I/QCAOq8n/J+UsPQhmaXYVnfnfpOi75fJEny+6Vn44cpH0qSmkU0I/R6gQEDBqhHjx6aO3eu2aXUWfTpBQDUaaszVmvwB4N1JOeI2aVY1p2d79RTVz0lSXL88j+bbPpH/39oVIdRJleHuqSgoMDsEtyG0AsAqJPOF51XXmGePjvwmQodhfo8/XPlFeap0FFodmmW1DKypcuyIaPUOl/ncDi0adMmORwOt7/XZ599pujoaBUVFUmSduzYIZvNpqlTpzr3uffee3XHHXfop59+0qhRo9SsWTOFhYWpa9eueuedd5z7jR07VmvWrNHzzz8vm80mm82mgwcPSpJ2796tIUOGqF69emratKlGjx6t06dPO48dMGCAHnjgAU2YMEGNGjVSUlKS26/dLIReAECdczj7sPq83Ue9/9NbXxz6QpL0/Lbn1fs/vXXtB9fKYbg/lHibb49/K5tsur/b/bq3672yyaZvT3xrdll1xtGjRzVo0CD17dtXgwcP1rFjx9z6fldddZWys7O1fft2SdKaNWvUqFEjJScnO/dZs2aNBgwYoHPnzqlXr15aunSpdu/erfvuu0+jR4/Wli1bJEnPP/+8+vbtq3HjxunYsWM6duyY4uPjlZmZqWuuuUaXXXaZvv32Wy1fvlwnTpzQH/7wB5daFi1apKCgIK1fv16vvvqqW6/bTPTpBQDUOc3qNdNtHW7T4u8Xu6wP9AvUAz0ekJ+NNpuq+n273+vq5lcrMTpRkjS01VDF1os1uaq6YenSpRo9erSys7MlSWvXrlXnzp21ePFiDR061C3vGRUVpR49eig5OVmXX365kpOTNXHiRM2aNUs5OTnKyspSamqq+vfvr2bNmmny5MnOY//6179qxYoVWrJkiXr37q2oqCgFBQUpLCxMMTExzv1eeuklXXbZZXryySed69544w3Fx8dr//79ateunSSpbdu2evrpp91ynXUJPzUAAHWOn81Pj1zxiK6JL55a2KbiobX+3P3P+n2735tZmmVFBEU4A68ktanfRuGB4SZWVDecPn1aw4YNU2ZmpgoLi7vOFBYWKjMzU8OGDXPpClDb+vfvr+TkZBmGobVr1+rmm29Wx44dtW7dOq1Zs0ZxcXFq27atioqK9Pjjj6tr165q0KCB6tWrpxUrVigjI+OS59+5c6dWr16tevXqOV8dOnSQJKWlpTn369Wrl9uusS6hpRcAUCedd5zX5uObJUktIlvokP2Q1h5Zq3HdxplcGbxJw4YN1axZM/34448u6w3DUPPmzdWwoftGDRkwYIDeeOMN7dy5U4GBgerQoYMGDBig5ORknTlzRv3795ckPfPMM3r++ec1d+5cde3aVeHh4ZowYUKFD53l5ORo2LBhmjNnTqltsbG/tvKHh/vGLz+EXgBAnWQYhno26anft/29BrYYqDf3vKmM7Eu3bAFVZbPZ9Ic//EEvvPCCs6VXkgICAjRy5Ei3TuBR0q/3ueeecwbcAQMG6KmnntKZM2f00EMPSZLWr1+v4cOH64477pBU/MDd/v371alTJ+e5goKCnA/FlejZs6c+/PBDJSQkKCCAyEf3BgBAnRTkH6RXBr+iQS0Hyc/mp7FdxmpG3xlmlwUvdMstt7gEXqm4i8Mtt9zi1vetX7++unXrpv/85z8aMGCAJOnqq6/Wtm3btH//fmcQbtu2rVauXKkNGzZo7969uv/++3XixAmXcyUkJGjz5s06ePCgTp8+LYfDofHjx+vnn3/WqFGj9M033ygtLU0rVqzQXXfdVSog+wJiPwAA8Gl9+vTRfffdp8OHDzvXxcfHq3fv3m5/7/79+2vHjh3O0NugQQN16tRJJ06cUPv27SVJjz76qA4cOKCkpCSFhYXpvvvu04gRI5SVleU8z+TJkzVmzBh16tRJeXl5Sk9PV0JCgtavX68pU6bouuuuU35+vlq2bKnrr79efn6+1+5pMwzDMLsIT7Hb7YqKilJWVpYiIyPNLgcAAFTCpT6/z507p/T0dLVq1UohISEmVQizVOX+09ILwEX66Vzl5hcqPDhArRr5xsMNAADvR+gF4JR+OlcDn012Lq+ePIDgCwDwCr7XoQNAmdJP52rn4UyXdTsPZyr9dK45BQFwKnIUqa73RjzvOK/Tee4b0xaoKUIvAGcL74T3drisn/DeDg18NpngC5jszuV36vltz5tdxiW9sesNDf9kuAqKLj12LGAWQi8A5eYX1mi7J6SfztXuI1kEcPicDHuGvjv1nT5O/VgOw2F2OaXkns+VvcCu/x34n+wFdiUfTpa9wK7zjvMeraOut4TDPapy3+nTC0DhwZf+UVDRdnejrzF80Zwtc/RRykcqNIp/6fz53M/6zdu/kb/NXzP6ztCQVkNMrlBa++Na/WXVX1zWPbSmeEKFy5tergXXL3B7DYGBgZKks2fPKjQ01O3vh7rl7Nmzkn79PrgUQi8AtWoUrtWTB2jn4UyXLg5zR/ZQ9/hoUwNmeX2NJRF84dWuanaVPk79WAWFv3YXyCvMU8vIlurSqIuJlf2qV9NeSkpI0oqDK1zW1w+urz93/7NHavD391d0dLROnjwpSQoLC3PrLGqoGwzD0NmzZ3Xy5ElFR0fL39+/wmMYpxeAU11rUb24nouZXR/gbjtP7dQdy+5wLocGhGrNyDUKDag7LZqGYWjox0N1OPuwbLLJkKHnBz6va1pcU2vvUdHnt2EYOn78uDIzM2vtPWEN0dHRiomJqdQvOrT0AnAqafGtK+P0WqGvMeBO3536TlJx2D1XeE55hXk6kHVAnRt2NrmyXx3JOaLD2Yflb/NXs3rNlJGdofVH1tdq6K2IzWZTbGysmjRpovPnPduXGOYJDAysVAtvCcuE3nnz5mnevHk6ePCgJKlz586aMWOGhgwxv08T4E3MDroXqut9jQFP6BvbV7P6zdLxs8f1xKYnlF+Yb3ZJLgL8AjSg+QD9ucef1Sa6jV7Z8Yrqh9Q3pRZ/f/8qhSD4Fst0b/jf//4nf39/tW3bVoZhaNGiRXrmmWe0fft2de5cud946d4AWE9Jn9661tcYgOfw+Y3aYJlmkmHDhrksP/HEE5o3b542bdpU6dALwHrKCrYEXgBAVVkm9F6oqKhI77//vnJzc9W3b99y98vPz1d+/q9/BrLb7Z4oD0Atq2t9jQEA1mOp0Ltr1y717dtX586dU7169fTxxx+rU6dO5e4/e/ZszZo1y4MVAnAXgi4AoCYs06dXkgoKCpSRkaGsrCx98MEH+te//qU1a9aUG3zLaumNj4+nTxAAABZCn17UBkuF3osNHjxYrVu31muvvVap/fmPBgAA6+HzG7XBz+wCasLhcLi05AIAAABlsUyf3mnTpmnIkCFq0aKFsrOz9fbbbys5OVkrVqyo+GAA8ID007k8bAcAdZRlQu/Jkyd155136tixY4qKilK3bt20YsUKXXvttWaXBgB1bgpnAIAry4Tef//732aXAABlKplA40I7D2fS6gsAdYhlQi8A1EUXt/CWuHAGOVp9AcB8ln6QDQDMlptfWCv7AADci9ALADUQHlzxH8wqsw8AwL34SQzABSMQVE3JFMk7D2e6dGmYO7KH2jSpx9cRAOoIQi8AJ0YgqJ6yvkbd46P52gFAHULoBSCp/BEIpLJDHVyVtPjSSg4AdROhF0CFIxDQ4ls5fI0AoO4i9AKocHQBq40+QL9kAMDFCL0AKhxdwEqjD9AvGQBQFut8kgFwm0uNQGClB7LolwwAKA+hF4Ak649AQL9kAMClEHoBOFl5BAJv65cMAKhdhF4ALqwUdC/kTf2SAQC1j08BAF7BW/olAwDcg9ALwGtYvV8yAMB9CL0AvIqV+yUDANyH0Av4MG+dxMGbrgUAUDsIvYCPYhIH9/PWXyoAwIoIvYCPungIL4b0ql38UgEAdQuhF/BB6adzlXoyx2Vd6skcWiRrQUnr7sVfX2aGAwBz2QzDMMwuwlPsdruioqKUlZWlyMhIs8sBTFHezGUlaJGsvoq+thJfX6A6+PxGbfAzuwAAnsXMZe5Tma8dX18AMAehF/AxzFzmPpX52vH1BQBz0L0B8EHpp3OZucxNLuzTy9cXqB18fqM20OQA+CBmLnOfkq/hxS26fH0BwFy09AI+jHFk3YuvL1A7+PxGbaClF/BhBDH34usLAHUHD7IBAADA6xF6AQAA4PUIvQAAAPB6hF4AAAB4PUIvAAAAvB6hFwAAAF7PMqF39uzZuuKKKxQREaEmTZpoxIgR2rdvn9llAQAAwAIsE3rXrFmj8ePHa9OmTVq5cqXOnz+v6667Trm5uWaXBgAAgDrOsjOynTp1Sk2aNNGaNWt09dVXl7lPfn6+8vPznct2u13x8fHM6AIAgIUwIxtqg2Vaei+WlZUlSWrQoEG5+8yePVtRUVHOV3x8vKfKAwAAQB1iyZZeh8OhG2+8UZmZmVq3bl25+9HSCwCA9dHSi9oQYHYB1TF+/Hjt3r37koFXkoKDgxUcHOyhqgAAAFBXWS70PvDAA/rss8/09ddfq3nz5maXAwAAAAuwTOg1DEN//etf9fHHHys5OVmtWrUyuyQAAABYhGVC7/jx4/X222/rv//9ryIiInT8+HFJUlRUlEJDQ02uDgAAAHWZZR5ks9lsZa5fsGCBxo4dW6lz0BEeAADr4fMbtcEyLb0WyeYAAACogyw7Ti8AAABQWYReAAAAeD1CLwAAALweoRcAAABej9ALAAAAr0foBQAAgNcj9AIAAMDrEXoBAADg9Qi9AAAA8HqEXgAAAHg9Qi8AAAC8HqEXAAAAXo/QCwAAAK9H6AUAAIDXI/QCAADA6wWYXQAAlCX9dK5y8wsVHhygVo3CzS4HAGBxVW7pHTNmjL7++mt31AIAkooD78Bnk/W7F9dp4LPJSj+da3ZJAACLq3LozcrK0uDBg9W2bVs9+eSTOnLkiDvqAuCj0k/naufhTJd1Ow9naveRLMIvAKDabIZhGFU96NSpU1q8eLEWLVqk77//XoMHD9Y999yj4cOHKzAw0B111gq73a6oqChlZWUpMjLS7HIAXKSkhfdSVk8eQHcHwMfw+Y3aUK0H2Ro3bqxJkyZp586d2rx5s9q0aaPRo0crLi5OEydOVEpKSm3XCcAH5OYX1so+AABcrEajNxw7dkwrV67UypUr5e/vrxtuuEG7du1Sp06d9Nxzz9VWjQB8RHhwxc/WVmYfAAAuVuXuDefPn9enn36qBQsW6IsvvlC3bt1077336o9//KPzTw4ff/yx7r77bp05c8YtRVcXfx4B6r6SPr0T3tvhXDd3ZA+1aVKPkRwAH8XnN2pDlZtMYmNj5XA4NGrUKG3ZskU9evQotc/AgQMVHR1dC+UB8DVlhdru8dGEXQBAjVS5pXfx4sW69dZbFRIS4q6a3IbfFAHrYJxeACX4/EZtqHJL7+jRo91RBwC4IOgCAGoT0xADAADA6xF6AQAA4PUY+wcAPOmnNCk/WwqOkBq2NrsaAPAZhF4A8JSf0qQXe/66/NdtBF8A8BC6NwCAJ/yUJh3Z6rruyNbi9QAAt6OlFwDc7eIW3hIfjSv+f1p8AcDtaOkFAHfLz67ZdgBAjRF6AcDdgiNqth0AUGOWCr1ff/21hg0bpri4ONlsNn3yySdmlwQAFWvYurgLw83zXdffPJ+uDQDgIZYKvbm5uerevbtefvlls0sBgKpp2Fpq1st1XbNeBF4A8BBLPcg2ZMgQDRkypNL75+fnKz8/37lst9vdURYAVE5Jiy/j9AKAx1mqpbeqZs+eraioKOcrPj7e7JIA+LqGraW4HgReAPAwrw6906ZNU1ZWlvN1+PBhs0sCgLrppzTp6A7GDQbgtSzVvaGqgoODFRwcbHYZAFC3MVMcAB/g1S29AIAKMFMcAB/h1S29AIBLYKY4AD7EUqE3JydHqampzuX09HTt2LFDDRo0UIsWLUysDAAsiJniAPgQS4Xeb7/9VgMHDnQuT5o0SZI0ZswYLVy40KSqAMCimCkOgA+xGYZhmF2Ep9jtdkVFRSkrK0uRkZFmlwMA5ivp01vSpUEqnimOiTNQh/D5jdpgqZZeAEAtKyvYEngBeCFCLwD4OmaKA+ADCL0AAIIuAK/HOL0AAADweoReAAAAeD1CLwAAALweoRcAAABej9ALAAAAr0foBQAAgNcj9AIAAMDrEXoBAADg9Qi9AAAA8HqEXgAAAHg9Qi8AAAC8HqEXAAAAXo/QCwAAAK9H6AUAAIDXI/QCAADA6xF6AQAA4PUIvQAAAPB6hF4AAAB4PUIvAAAAvB6hFwAAAF6P0AsAAACvR+gFALiXYUi7PpC++ZfkcJhdDQAfFWB2AQAAL3bOLn02Udr9QfHy959KN8+XIpqaWxcAn0NLLwDAPU7skeb1lfZ8/Ou6g+ukV/oU/z8AeBChFwDgHns+kbJ+lIyiX9cZRdK5LGn7f0wrC4BvIvQCANyjXVLZ6w2H1O46z9YCwOcRegEA5XM4pE3zpGUPF/fPrYq4nlK9JqXX+wdJba6tnfoAoJIIvQCAsmWfkN66SVo+tXjkhXn9pCNbK3+8n5/U+fel17cZLAXXq706AaASGL0BANzJ4ZA2vSLtfEe6frbU6mqzK6qcI9ukt27+tXXXcEj2o9K/rpV+90+p19jKnefqh6UmHYuPL9FmcK2XCwAVIfQCgLvknJQ+ul868JUkm7ToRunqyVL/qZJ/Hf/xe3SblHfGdZ1RJNn8pNQvKx96wxtKvcbUenkAUFWW697w8ssvKyEhQSEhIerTp4+2bNlidkkAUFrWj9LLfaT0Nb+sMIpfXz8rLRpmZmWV0/6GstcbDqmDBeoHgItYKvS+9957mjRpkmbOnKlt27ape/fuSkpK0smTJ80uDQBcFRVIeT+7DtclSTKkrMOmlFQlkXFS3GWSbK7r/fzLH5UBAOowS4Xef/7znxo3bpzuuusuderUSa+++qrCwsL0xhtvlLl/fn6+7Ha7ywsAPKJBotS4Q+n1fv5S55s8X091dL1VxS3UF0i8RgqNNqMaAKiROt6p7FcFBQXaunWrpk2b5lzn5+enwYMHa+PGjWUeM3v2bM2aNctTJQKAq843S2vmuLb2OoqkTsPNq6kqrhgnxXQtrrlETDfz6gGAGrBMS+/p06dVVFSkpk1d52tv2rSpjh8/XuYx06ZNU1ZWlvN1+LAF/qQIwHt0uVmlWkqjWhSPX2sFAUHFo020HvjrK7yh2VUBQLVYpqW3OoKDgxUcHGx2GQB8VaO20iMHpPN5v64LiS4evxYA4FGWCb2NGjWSv7+/Tpw44bL+xIkTiomJMakqAKhAaP3iFwDAVJZpbggKClKvXr20atUq5zqHw6FVq1apb9++JlYGAACAus4yLb2SNGnSJI0ZM0aXX365evfurblz5yo3N1d33XWX2aUBAACgDrNU6B05cqROnTqlGTNm6Pjx4+rRo4eWL19e6uE2AAAA4EI2wzCMinfzDna7XVFRUcrKylJkZKTZ5QCAZBjSrg+Kx+/tcrPZ1QB1Ep/fqA2WaukFAK+Slyn970Hp+0+Kl/d9Lg39hxTChzoA1DbLPMgGAF7l6A7plb7S3v/9um73B9K8ftLx3aaVBQDeitALAGbY9qaUfcx1tjbDIWX9KO34j3l1AYCXIvQCgBnaXqtSs7VJxevaXuvpagDA6xF6AcAMiQOlgNDS64MjpISrPF8PAHg5Qi8AmCEwROpwgySbZPMrfklSx2GSf6CppQGAN2L0BgAwy+BZUvPe+rWbg6049AIAah2hFwDMEh0v/eZPZldROce+k7a8Lv12gtSojdnVAECV0b0BAFA+w5A2vSrNHyhtf0t69bfS9v8UrwcACyH0AgDKVpgvvT1SWj5FchRKMqTCc9J//yJ9NE5yFFV4CgCoKwi9AICyncuSUlaUvW3Px8WhGAAsgtALAChbvSZSbHdJNtf1Nn8pcYAUFGZGVQBQLYReAED5Ot8s2S4KvUaR1GmEKeVUicMhnfyB/scAJBF6AQCX0unG4umRL2TzlzoMNaeeyso5Kb11s/RKH+n9u4q7agDwaQxZBgAoX4NE6e4VUu6pX9dFxklhDcyrqSKpX0of3iudsxcv7/1U+nGzdOsiKb63ubUBMA2hFwBwaS1+Y3YFlZf1o/TWLcVdMkpaqI0iKfuEtOAGaeohKSjc3BoBmILuDQAA71EvRgqOKN0lwyiSoppLgTx8B/gqQi8AwHv4BxT3Q/a76A+ZNn+pSxkP5QHwGYReAIB36Tj8l8k0LmAUSR1vNKceAHUCfXoB4GIOh7TlNcl+RBrwfxmP1moSB0gdhxX34y3RsPUvYw4D8FWEXgC4UPYJ6eP7pAPJks1P+mGZ9Ic3pZguZldWfSe+L76WJh3MrsQzAoKkkW+ZXQWAOobuDQBQ4setxeO6pq8tXjYc0pmD0usDpO+WmFlZ9Tgc0rq50qtXSq/2kza8VLwOAHwQoRcAShzeJOWdKe7/WcIoKn6lfGFeXdWRfUJaPEL6cmZx/Y4i6Yu/SW/9Xso5VeHhAOBtCL0AUKL9kLLXGw6p/Q2eraWm1syR0r8uvf7Aamnts56vBwBMRugFgBINEqUmHUuv9w+S2l7n+XpqIr6PJKOMDQazkgHwSYReALhQl1tKr2tzrRRcz/O11ET76yU//9LrrRjgAaAWMHoDAFyo73gp7jLXGb3ieppXT3WFREmJA6W0rySVTMhgSK0HFc9YBgA+htALABcKDJXaDDK7itrRf6oU3lgyfunmYLNJvceZWxMAmITQCwB1ScYmKSJWqt+y5ueKv6L4BQCgTy8A1Annz0nLHpHeSJJe+Y01xwUGgDqM0AsAZju1X3q9v/TN/OLl83nSR+Okj+6X8nPMra2mis5LW+YXzwoHACYi9AKA2T5/WDq9/4KH537pg/vdu9J2C0+n+/MB6V+DpGWTpdeuLg6/RlnDqAGA+xF6AcBsLfrq1xEWLt7Wx6Ol1Jo9H0vzfiud2FO87DhfHH7fGSXlZ5tbGwCfZJnQ+8QTT6hfv34KCwtTdHS02eUAQO3pNNx16uMSkXFSbA+Pl1MrvpwlnT8rOQpd1+//vOyZ4gDAzSwTegsKCnTrrbfqz3/+s9mlAEDtatxBqt9KsvkVTyjh51/87843Fw8zZkXtkiS/MgYI8guQEq70fD0AfJ5lhiybNWuWJGnhwoWVPiY/P1/5+fnOZbvdXttlAUDN2WzSkDnS9//9dZ2fv7XH1O14o7T5Vdd1Nv/iCTNCosypCYBPs0zorY7Zs2c7wzIA1Gntkopf3qLFb6TQBtK5zOJWa6m4q0PnEWZWBcCHeXXonTZtmiZNmuRcttvtio+PN7EiAPARfv7SHxZJP37z67qAEKnLLebVBMCnmRp6p06dqjlz5lxyn71796pDhw7VOn9wcLCCg4OrdSwAoIZaXV38AoA6wNTQ+9BDD2ns2LGX3CcxMdEzxQAAAMBrmRp6GzdurMaNG5tZAgAAAHyAZfr0ZmRk6Oeff1ZGRoaKioq0Y8cOSVKbNm1Ur149c4sDAABAnWaZ0DtjxgwtWrTIuXzZZZdJklavXq0BAwaYVBUAAACswGYYvjMRut1uV1RUlLKyshQZGWl2OXVWwcGDKsrNLXObf3i4ghISPFsQAMCn8fmN2mCZll54RsHBg0q7fsgl92m9/HOCLwAAsBTLTEMMzyivhbeq+wAAANQlhF4AAAB4PUIvAAAAvB6hFwAAAF6P0AsAAACvR+gFAACA1yP0woV/eHit7AMAAFCXME4vXAQlJKj18s+ZnAIAAHgVQq8PK2/mNf/wcIV27mxCRQAAAO5B6K2BS4XGut4aWtHMa1addc3K9wQAALgPobearB4aK5pVzYqzrln9ngAAAPfhQbZq8sbQaHXcEwAAUB5CLwAAALweoRcAAABej9ALAAAAr0fo9VEVTTDBBBQAAMCbMHpDNVk9NF5qEgqrDu9l9XsCAADcx2YYhmF2EZ5it9sVFRWlrKwsRUZG1vh8jAlb93BPAMD71PbnN3wTLb01QIiqe7gnAACgLPTpBQAAgNejpReVQrcBAABgZYReVIjpfQEAgNXRvQEVYnpfAABgdYReAAAAeD1CLwAAALwefXqBi/DQHgAA3ofQC1yAh/YAAPBOdG8ALsBDewAAeCdCLyrkHx5eo+0AAABmo3sDKhSUkKDWyz+nnysAALAsQi8qhWALAACsjO4NAAAA8HqWCL0HDx7UPffco1atWik0NFStW7fWzJkzVVBQYHZpbldw8KDy9uwp9So4eNDs0rwS/ZcBAPBOluje8MMPP8jhcOi1115TmzZttHv3bo0bN065ubl69tlnzS7PbRg+y/PovwwAgHeyROi9/vrrdf311zuXExMTtW/fPs2bN++SoTc/P1/5+fnOZbvd7tY6axvDZ5mDYAsAgPexRPeGsmRlZalBgwaX3Gf27NmKiopyvuLj4z1UHQAAAOoSS7T0Xiw1NVUvvvhihV0bpk2bpkmTJjmX7XY7wdcHMa0wAAAwNfROnTpVc+bMueQ+e/fuVYcOHZzLR44c0fXXX69bb71V48aNu+SxwcHBCg4OrpVaYU30iwYAAJLJofehhx7S2LFjL7lPYmKi899Hjx7VwIED1a9fP73++uturs63eUvrKP2iAQCAZHLobdy4sRo3blypfY8cOaKBAweqV69eWrBggfz8LNsdudLMGj6L1lEAAOBtLNGn98iRIxowYIBatmypZ599VqdOnXJui4mJMbEy9zJr+CxaRwEAgLexROhduXKlUlNTlZqaqubNm7tsMwzDpKo8gxZVAACAmrNEH4GxY8fKMIwyXwAAAEBFLBF6gepiWmEAACBZpHsDUF1MKwwAACRCL3wAwRYAANC9AaXQJQAAAHgbWnpRCl0CAACAtyH0okwEWwAA4E0IvbAMb5kaGQAAeB6hF5bA1MgAAKAmeJANlsDUyAAAoCYIvQAAAPB6hF4AAAB4PUIvAAAAvB6hFwAAAF6P0AtLYJY4AABQEwxZBktgljgAAFAThF5YBsEWAABUF90bAAAA4PUIvQAAAPB6hF4AAAB4PUIvAAAAvB6hFwAAAF6P0AsAAACvR+gFAACA1yP0AgAAwOsRegEAAOD1CL0AAADwej41DbFhGJIku91uciUAAKCySj63Sz7HgerwqdCbnZ0tSYqPjze5EgAAUFXZ2dmKiooyuwxYlM3woV+bHA6Hjh49qoiICNlsNrPLuSS73a74+HgdPnxYkZGRZpfjcVw/1++r1+/L1y5x/Vx/2ddvGIays7MVFxcnPz96ZqJ6fKql18/PT82bNze7jCqJjIz0yR98Jbh+rt9Xr9+Xr13i+rn+0tdPCy9qil+XAAAA4PUIvQAAAPB6hN46Kjg4WDNnzlRwcLDZpZiC6+f6ffX6ffnaJa6f6/ft64d7+dSDbAAAAPBNtPQCAADA6xF6AQAA4PUIvQAAAPB6hF4AAAB4PUKvCRISEmSz2Uq9xo8fX+4x77//vjp06KCQkBB17dpVy5Yt82DFtauq179w4cJS+4aEhHi46tpTVFSk6dOnq1WrVgoNDVXr1q31+OOPVzinfHJysnr27Kng4GC1adNGCxcu9EzBtaw615+cnFzm98zx48c9WHntyM7O1oQJE9SyZUuFhoaqX79++uabby55jLfce6nq12/le//1119r2LBhiouLk81m0yeffOKy3TAMzZgxQ7GxsQoNDdXgwYOVkpJS4XlffvllJSQkKCQkRH369NGWLVvcdAU1447rf+yxx0p9L3To0MGNVwFvQug1wTfffKNjx445XytXrpQk3XrrrWXuv2HDBo0aNUr33HOPtm/frhEjRmjEiBHavXu3J8uuNVW9fql4dp4Ljzl06JCnyq11c+bM0bx58/TSSy9p7969mjNnjp5++mm9+OKL5R6Tnp6uoUOHauDAgdqxY4cmTJige++9VytWrPBg5bWjOtdfYt++fS7fB02aNPFAxbXr3nvv1cqVK7V48WLt2rVL1113nQYPHqwjR46Uub833Xup6tdfwor3Pjc3V927d9fLL79c5vann35aL7zwgl599VVt3rxZ4eHhSkpK0rlz58o953vvvadJkyZp5syZ2rZtm7p3766kpCSdPHnSXZdRbe64fknq3Lmzy/fCunXr3FE+vJEB0z344ING69atDYfDUeb2P/zhD8bQoUNd1vXp08e4//77PVGe21V0/QsWLDCioqI8W5QbDR061Lj77rtd1t18883G7bffXu4xjzzyiNG5c2eXdSNHjjSSkpLcUqM7Vef6V69ebUgyzpw54+bq3Ovs2bOGv7+/8dlnn7ms79mzp/G3v/2tzGO86d5X5/q95d5LMj7++GPnssPhMGJiYoxnnnnGuS4zM9MIDg423nnnnXLP07t3b2P8+PHO5aKiIiMuLs6YPXu2W+quLbV1/TNnzjS6d+/uxkrhzWjpNVlBQYHeeust3X333bLZbGXus3HjRg0ePNhlXVJSkjZu3OiJEt2qMtcvSTk5OWrZsqXi4+M1fPhw7dmzx4NV1q5+/fpp1apV2r9/vyRp586dWrdunYYMGVLuMd70PVCd6y/Ro0cPxcbG6tprr9X69evdXWqtKywsVFFRUanuOaGhoeW2VnnTva/O9Zew+r2/WHp6uo4fP+5yb6OiotSnT59y721BQYG2bt3qcoyfn58GDx5sue+H6lx/iZSUFMXFxSkxMVG33367MjIy3F0uvASh12SffPKJMjMzNXbs2HL3OX78uJo2beqyrmnTppbo01aRylx/+/bt9cYbb+i///2v3nrrLTkcDvXr108//vij5wqtRVOnTtVtt92mDh06KDAwUJdddpkmTJig22+/vdxjyvsesNvtysvLc3fJtao61x8bG6tX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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"source": [
"## Option 2: PaLM API"
],
"metadata": {
"id": "fwA6C5a0dYeA"
}
},
{
"cell_type": "code",
"source": [
"%pip install -U google-generativeai --upgrade --user > /dev/null"
],
"metadata": {
"id": "HZ5-VVFDcN50"
},
"execution_count": 7,
"outputs": []
},
{
"cell_type": "code",
"source": [
"import getpass\n",
"palm_api_key = getpass.getpass('Enter API key: ')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "q4FXM9oDI6Ej",
"outputId": "40da461e-b720-439e-c6b9-cda95387b4ed"
},
"execution_count": 8,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Enter API key: ··········\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"#@title Perform a POST request to the API directly\n",
"import requests\n",
"\n",
"# Use the gecko embedding model.\n",
"model = 'models/embedding-gecko-001'\n",
"\n",
"# Define the HTTP endpoint URL using our API key.\n",
"palm_api_root = 'https://generativelanguage.googleapis.com/v1beta2'\n",
"palm_api_url = f'{palm_api_root}/{model}:embedText?key={palm_api_key}'\n",
"\n",
"# Compute the embeddings for each sentence.\n",
"map_func = lambda x: requests.post(palm_api_url, json={'text': x}).json()\n",
"embeddings = [map_func(x)['embedding']['value'] for x in sentences_df.text]\n",
"\n",
"# Plot the resulting embeddings.\n",
"plot_embeddings(np.array(embeddings), sentences_df.label.tolist())"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 449
},
"id": "CFKoU0Md8Gzc",
"outputId": "c8044b11-334c-4b45-ae55-0136d19f6616"
},
"execution_count": 9,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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l0bQBQAA8GDFxcVGl9BgCLoAAMBj2Ww2ffPNN7LZbA1+r88++0yNGjVSaWmpJCkpKUkWi0XPPvus45zHHntMDz74oE6dOqXRo0erZcuWCgoKUrdu3fThhx86znv44Ye1fv16zZkzRxaLRRaLRYcOHZIkff/99xo2bJhCQkLUvHlzjRkzRllZWY7XxsfH6ze/+Y3GjRunpk2basiQIQ3+3o1C0AUAAB7p6NGjGjRokPr166fBgwcrMzOzQe934403Ki8vT99++60kaf369WratKkSExMd56xfv17x8fEqLCxU7969tWLFCn3//fd6/PHHNWbMGG3dulWSNGfOHPXr10+//OUvlZmZqczMTEVHRys7O1s333yzevXqpe3bt2vVqlU6fvy47r333gq1LFy4UH5+ftq0aZPeeeedBn3fRvIxugAAAABnW7FihcaMGaO8vDxJ0ldffaUuXbpo0aJFuv322xvknlarVT179lRiYqL69OmjxMREjR8/XtOnT1d+fr5ycnKUkpKiAQMGqGXLlpo4caLjtb/97W+1evVq/fvf/1bfvn1ltVrl5+enoKAgRUZGOs5766231KtXL82YMcPR9t577yk6OloHDhxQ+/btJUlxcXGaNWtWg7xPV0KPLgAA8ChZWVlKSEhQdna2SkpKJEklJSXKzs5WQkJChV/z17cBAwYoMTFRdrtdX331lUaOHKlOnTpp48aNWr9+vaKiohQXF6fS0lK99NJL6tatm5o0aaKQkBCtXr1a6enpl7z+rl279OWXXyokJMSxdezYUZKUmprqOK93794N9h5dCT26AADAo4SHh6tly5b68ccfK7Tb7XZdddVVCg8Pb7B7x8fH67333tOuXbvk6+urjh07Kj4+XomJiTpz5owGDBggSXrttdc0Z84czZ49W926dVNwcLDGjRt32QfH8vPzlZCQoFdffbXSsRYtWjj+HBwcXL9vzEXRowsAADyKxWLRvffeKx+fiv19Pj4+uu+++2SxWBrs3uXjdN944w1HqC0PuomJiYqPj5ckbdq0ScOHD9eDDz6oHj16qE2bNjpw4ECFa/n5+TkebCt39dVXa8+ePYqJiVG7du0qbJ4Sbi9E0AUAAB7nnnvucQxbKFdSUqJ77rmnQe/buHFjde/eXf/85z8dofamm27Szp07deDAAUf4jYuL05o1a7R582bt3btX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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"#@title Use the `google-generativeai` pip package\n",
"import google.generativeai as palm\n",
"\n",
"# Use the gecko embedding model.\n",
"model = 'models/embedding-gecko-001'\n",
"\n",
"# Configure the library using our API key.\n",
"palm.configure(api_key=palm_api_key)\n",
"\n",
"# Compute the embeddings for each sentence.\n",
"map_func = lambda x: palm.generate_embeddings(model, x)['embedding']\n",
"embeddings = np.array([map_func(x) for x in sentences_df.text])\n",
"\n",
"# Plot the resulting embeddings.\n",
"plot_embeddings(embeddings, sentences_df.label.tolist())"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 449
},
"id": "6HS5t-shfPcQ",
"outputId": "5bdf8b5f-8bd9-42ab-dc2b-6eddb18986be"
},
"execution_count": 10,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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jBljdBlujaALAADgxUpKSowuocEQdAEAgNey2+365ptvZLfbG/xeS5cuVePGjVVaWipJSklJkcVi0XPPPec85/HHH9dDDz2kEydOaOTIkWrVqpWCg4PVvXt3ffTRR87zHnnkEa1du1YzZ86UxWKRxWLRgQMHJEnff/+9hg4dqtDQULVo0UKjRo1STk6O87UJCQn6zW9+ozFjxqhZs2YaMmRIg793oxB0AQCAVzp8+LAGDRqkfv36afDgwcrOzm7Q+91www3Kz8/Xt99+K0lau3atmjVrpuTkZOc5a9euVUJCgoqKinTVVVdp2bJl+v777/XEE09o1KhR2rx5syRp5syZ6tevn375y18qOztb2dnZiomJUW5urm666Sb17t1bW7du1YoVK3T06FHdd999FWqZN2+eAgICtGHDBr377rsN+r6N5Gd0AQAAAK62bNkyjRo1Svn5+ZKkr776Sl27dtX8+fN1++23N8g9rVarevXqpeTkZPXp00fJyckaO3aspk6dqoKCAtlsNqWlpWnAgAFq1aqVxo8f73ztb3/7W61cuVL//ve/1bdvX1mtVgUEBCg4OFhRUVHO895++2317t1b06ZNc7a9//77iomJ0b59+9ShQwdJUnx8vKZPn94g79Od0KMLAAC8Sk5OjhITE5Wbm6tz585Jks6dO6fc3FwlJiZW+DV/fRswYICSk5PlcDj01Vdf6e6771bnzp21fv16rV27VtHR0YqPj1dpaalefvllde/eXU2bNlVoaKhWrlypzMzMi15/x44d+vLLLxUaGurcOnXqJElKT093nnfVVVc12Ht0J/ToAgAArxIREaFWrVrpxx9/rNDucDh0xRVXKCIiosHunZCQoPfff187duyQv7+/OnXqpISEBCUnJ+vUqVMaMGCAJOn111/XzJkzNWPGDHXv3l0hISEaM2bMJR8cKygoUGJiol577bVKx1q2bOn875CQkPp9Y26KHl0AAOBVLBaL7rvvPvn5Vezv8/Pz0/333y+LxdJg9y4fp/vmm286Q2150E1OTlZCQoIkacOGDRo2bJgeeugh9ezZU23bttW+ffsqXCsgIMD5YFu5K6+8Urt27VJsbKzat29fYfOWcHs+gi4AAPA69957r3PYQrlz587p3nvvbdD7NmnSRD169NA///lPZ6i98cYbtX37du3bt88ZfuPj47Vq1Spt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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"source": [
"## Option 3: Vertex AI API"
],
"metadata": {
"id": "rwkdvAh6djB4"
}
},
{
"cell_type": "code",
"source": [
"%pip install google-cloud-aiplatform shapely==1.8.5 --upgrade --user > /dev/null"
],
"metadata": {
"id": "n9HCH-ttbPOa"
},
"execution_count": 11,
"outputs": []
},
{
"cell_type": "code",
"source": [
"import getpass\n",
"project_id = getpass.getpass('Project ID: ')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "-nNk0mA8JBNs",
"outputId": "6d5c372a-cf1f-4435-df4d-410c01a9cc48"
},
"execution_count": 12,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Project ID: ··········\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"#@title Perform a POST request to the API directly\n",
"import requests\n",
"from google.colab import auth\n",
"from oauth2client import client\n",
"\n",
"# Authenticate Colab instance and get Google Cloud credentials.\n",
"auth.authenticate_user()\n",
"creds = client.GoogleCredentials.get_application_default()\n",
"\n",
"# Build the API endpoint URL incrementally.\n",
"model = 'models/textembedding-gecko'\n",
"vertexai_root = 'https://us-central1-aiplatform.googleapis.com/v1'\n",
"vertexai_project_url = f'{vertexai_root}/projects/{project_id}'\n",
"vertexai_loc_url = f'{vertexai_project_url}/locations/us-central1'\n",
"vertexai_model_url = f'{vertexai_loc_url}/publishers/google/{model}:predict'\n",
"\n",
"def map_func(text: str):\n",
" access_token = creds.get_access_token().access_token\n",
" payload = {'instances': [{'content': text}]}\n",
" headers = {'Authorization': f'Bearer {access_token}'}\n",
" res = requests.post(vertexai_model_url, json=payload, headers=headers)\n",
" return res.json()['predictions'][0]['embeddings']['values']\n",
"\n",
"embeddings = np.array([map_func(x) for x in sentences_df.text])\n",
"\n",
"plot_embeddings(embeddings, sentences_df.label.tolist())"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 449
},
"id": "rdKNdOX8XLla",
"outputId": "51f675dc-9723-4dc1-ba2c-f24c77b224ef"
},
"execution_count": 13,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"#@title Use the `google-cloud-aiplatform` pip package\n",
"\n",
"import vertexai\n",
"from vertexai.language_models import TextEmbeddingModel\n",
"\n",
"vertexai.init(project=project_id)\n",
"model = TextEmbeddingModel.from_pretrained('textembedding-gecko@001')\n",
"\n",
"map_func = lambda x: model.get_embeddings([x])[0].values\n",
"embeddings = np.array([map_func(x) for x in sentences_df.text])\n",
"\n",
"plot_embeddings(embeddings, sentences_df.label.tolist())"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 449
},
"id": "kq9Y1KTVDs4Z",
"outputId": "f3089b7b-9bdc-479d-8d38-23cfa3dd9024"
},
"execution_count": 14,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAroAAAGwCAYAAABGjsbiAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABLi0lEQVR4nO3deXwU9f3H8ffmPkgChBASDEmAcCtnpRwKCIhUEawiUkHEqm1FLVgUtKIoAgWtitWiogKCihQVUQR+gIByyGkQ5EgIwURAECQXkGt3fn+k2RLDkZBjZiev5+OxD5hjZz7ZQPa9n3znOw7DMAwBAAAANuNldgEAAABAVSDoAgAAwJYIugAAALAlgi4AAABsiaALAAAAWyLoAgAAwJYIugAAALAlH7MLqGoul0tHjhxRSEiIHA6H2eUAAIAyMAxD2dnZio6OlpcXfTlcHtsH3SNHjigmJsbsMgAAwGVIT0/XFVdcccHtTqdTBQUF1VgRzObn51fmDz+2D7ohISGSiv6jhIaGmlwNAAAoi6ysLMXExLjfx3/NMAz99NNPysjIqN7CYDovLy/Fx8fLz8/vkvvaPugWD1cIDQ0l6AIA4GEuNOywOOTWr19fQUFBDE+sIYqHpB49elSNGjW65Pfd9kEXAADYi9PpdIfc8PBws8tBNYuIiNCRI0dUWFgoX1/fi+7L6G4AAOBRisfkBgUFmVwJzFA8ZMHpdF5yX4IuAADwSAxXqJnK830n6AIAAMCWCLoAAACwJYIuAAAALsucOXNUu3bti+4zceJEtWvXzr189913a9CgQVVaVzGCLgAAgIcoS7C0mrFjx2r16tWmnJugCwAAarTExESzS7C1WrVqmTYNHEEXAADUWF9++aXat2+vL7/8slrOt3z5cnXv3l21a9dWeHi4brrpJqWkpEiS1q5dK4fDUeJub4mJiXI4HDp06JDWrl2rkSNHKjMzUw6HQw6HQxMnTpQknTp1SnfddZfq1KmjoKAg9e/fX8nJye7jFHeCP//8czVv3lxBQUG67bbbdObMGc2dO1dxcXGqU6eOHn744RLTdl3quMUWL16shIQEBQQEqF+/fkpPT3dv+/XQhV9zuVyaOnWq4uPjFRgYqLZt22rRokWX+QqXRNAFAAA1ztGjR7V//37NmTNHUlEQ3L9/v44ePVql5z19+rQeeeQRbdu2TatXr5aXl5duueUWuVyuSz63a9euevnllxUaGqqjR4/q6NGjGjt2rKSica/btm3TkiVLtGnTJhmGod/97nfuOYcl6cyZM3rllVe0YMECLV++XGvXrtUtt9yiL774Ql988YXmzZunN954o0TILOtxJ0+erHfffVcbNmxQRkaG7rjjjjK/JlOnTtW7776r119/Xd9//73GjBmjYcOGad26dWU+xoVwZzTgMqSeOK3TeYUK9vdRfL1gs8sBAJRDdna2rrjiihLhct68eZo3b568vb116tQphYSEVMm5b7311hLL77zzjiIiIrRnz55LPtfPz09hYWFyOBxq0KCBe31ycrKWLFmiDRs2qGvXrpKk9957TzExMVq8eLEGDx4sqehGGzNnzlSTJk0kSbfddpvmzZunY8eOqVatWmrVqpV69eqlNWvWaMiQIeU67quvvqrOnTtLkubOnauWLVtqy5Ytuvrqqy/6NeXl5WnKlClatWqVunTpIklq3Lix1q9frzfeeEM9evS45OtyMXR0gXJKPXFavV5Yq5v+tV69Xlir1BOnzS4JAFAOISEhmjNnjgIDA903H3A4HAoMDNTs2bOrLORKRaF06NChaty4sUJDQxUXFydJSktLu+xj7t27Vz4+Pu6gKUnh4eFq3ry59u7d614XFBTkDrmSFBkZqbi4ONWqVavEuuPHj5fruD4+PvrNb37jXm7RooVq165dYp8LOXDggM6cOaO+ffuqVq1a7se7777rHtJREXR0gXJIPXFaO9MzSqwrXqazCwCeY/jw4frmm2/073//W15eXnK5XLrnnns0fPjwKj3vgAEDFBsbq1mzZik6Oloul0tt2rRRfn6+O3AahuHe/9whAhXl6+tbYtnhcJx3XVmGUVSWnJwcSdLSpUvVsGHDEtv8/f0rfHw6ukAZFXdyR3+YWGL96A8T6ewCgAdavHixJKl3794llqvKyZMntX//fj355JPq3bu3WrZsqVOnTrm3R0RESFKJccK/nhHCz8+vxMViktSyZUsVFhZq8+bNpc7VqlWry663rMctLCzUtm3b3Mv79+9XRkaGWrZseclztGrVSv7+/kpLS1PTpk1LPGJiYi679mJ0dIEyOp1XWKHtAABrueOOO3T99derX79+WrFihVauXFml56tTp47Cw8P15ptvKioqSmlpaRo/frx7e3G4mzhxoiZPnqykpCT9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\n"
},
"metadata": {}
}
]
}
],
"metadata": {
"colab": {
"provenance": [],
"include_colab_link": true
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
},
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment