{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "5DKDTnMGHTGn" }, "source": [ "# If you are using Colab for free, we highly recommend you activate the T4 GPU\n", "# hardware accelerator. Our models are designed to run with at least 16GB\n", "# of RAM, activating T4 will grant the notebook 16GB of GDDR6 RAM as opposed\n", "# to the ~13GB Colab gives automatically.\n", "# To activate T4:\n", "# 1. click on the \"Runtime\" tab\n", "# 2. click on \"Change runtime type\"\n", "# 3. select T4 GPU under Hardware Accelerator\n", "# NOTE: there is a weekly usage limit on using T4 for free" ] }, { "cell_type": "markdown", "metadata": { "id": "iZ0qxGqFFHrz" }, "source": [ "\n", "\"\"\" This example illustrates a more complex recipe to generate a structured financial research dictionary with\n", " 30 keys and values produced, using a combination of models and web services:\n", "\n", " Models\n", " 1. slim-extract-tool\n", " 2. slim-summary-tool\n", " 3. bling-stablelm-3b-tool\n", "\n", " Web Services\n", " 1. Yfinance - stock ticker\n", " 2. Wikipedia - company background information\n", "\n", " The example shows how to extract keys from one source that can then be used as a lookup in a web service to\n", " supplement the original source materials, and provide a secondary source, which can then also be prompted and\n", " used to extract, analyze and summarize key information.\n", "\n", " \"\"\"" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "cq_s3hGOR4lh", "outputId": "2d7cb90c-3cc7-4984-c58c-b1810421ec79" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: YFinance in /usr/local/lib/python3.10/dist-packages (0.2.40)\n", "Requirement already satisfied: pandas>=1.3.0 in /usr/local/lib/python3.10/dist-packages (from YFinance) (2.0.3)\n", "Requirement already satisfied: numpy>=1.16.5 in /usr/local/lib/python3.10/dist-packages (from YFinance) (1.25.2)\n", "Requirement already satisfied: requests>=2.31 in /usr/local/lib/python3.10/dist-packages (from YFinance) (2.31.0)\n", "Requirement already satisfied: multitasking>=0.0.7 in /usr/local/lib/python3.10/dist-packages (from YFinance) (0.0.11)\n", "Requirement already satisfied: lxml>=4.9.1 in /usr/local/lib/python3.10/dist-packages (from YFinance) (4.9.4)\n", "Requirement already satisfied: platformdirs>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from YFinance) (4.2.2)\n", "Requirement already satisfied: pytz>=2022.5 in /usr/local/lib/python3.10/dist-packages (from YFinance) (2023.4)\n", "Requirement already satisfied: frozendict>=2.3.4 in /usr/local/lib/python3.10/dist-packages (from YFinance) (2.4.4)\n", "Requirement already satisfied: peewee>=3.16.2 in /usr/local/lib/python3.10/dist-packages (from YFinance) (3.17.5)\n", "Requirement already satisfied: beautifulsoup4>=4.11.1 in /usr/local/lib/python3.10/dist-packages (from YFinance) (4.12.3)\n", "Requirement already satisfied: html5lib>=1.1 in /usr/local/lib/python3.10/dist-packages (from YFinance) (1.1)\n", "Requirement already satisfied: soupsieve>1.2 in /usr/local/lib/python3.10/dist-packages (from beautifulsoup4>=4.11.1->YFinance) (2.5)\n", "Requirement already satisfied: six>=1.9 in /usr/local/lib/python3.10/dist-packages (from html5lib>=1.1->YFinance) (1.16.0)\n", "Requirement already satisfied: webencodings in /usr/local/lib/python3.10/dist-packages (from html5lib>=1.1->YFinance) (0.5.1)\n", "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.10/dist-packages (from pandas>=1.3.0->YFinance) (2.8.2)\n", "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas>=1.3.0->YFinance) (2024.1)\n", "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests>=2.31->YFinance) (3.3.2)\n", "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests>=2.31->YFinance) (3.7)\n", "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests>=2.31->YFinance) (2.0.7)\n", "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests>=2.31->YFinance) (2024.6.2)\n", "Collecting wikipedia-api\n", " Downloading Wikipedia_API-0.6.0-py3-none-any.whl (14 kB)\n", "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from wikipedia-api) (2.31.0)\n", "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->wikipedia-api) (3.3.2)\n", "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->wikipedia-api) (3.7)\n", "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->wikipedia-api) (2.0.7)\n", "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->wikipedia-api) (2024.6.2)\n", "Installing collected packages: wikipedia-api\n", "Successfully installed wikipedia-api-0.6.0\n", "Collecting llmware\n", " Downloading llmware-0.3.2-py3-none-any.whl (56.0 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.0/56.0 MB\u001b[0m \u001b[31m12.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hCollecting boto3>=1.24.53 (from llmware)\n", " Downloading boto3-1.34.138-py3-none-any.whl (139 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m139.2/139.2 kB\u001b[0m \u001b[31m8.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hRequirement already satisfied: huggingface-hub>=0.19.4 in /usr/local/lib/python3.10/dist-packages (from llmware) (0.23.4)\n", "Requirement already satisfied: numpy>=1.23.2 in /usr/local/lib/python3.10/dist-packages (from llmware) (1.25.2)\n", "Collecting pymongo>=4.7.0 (from llmware)\n", " Downloading pymongo-4.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.2/1.2 MB\u001b[0m \u001b[31m32.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hRequirement already satisfied: tokenizers>=0.15.0 in /usr/local/lib/python3.10/dist-packages (from llmware) (0.19.1)\n", "Collecting psycopg-binary==3.1.17 (from llmware)\n", " Downloading psycopg_binary-3.1.17-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.3/3.3 MB\u001b[0m \u001b[31m46.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hCollecting psycopg==3.1.17 (from llmware)\n", " Downloading psycopg-3.1.17-py3-none-any.whl (178 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m178.0/178.0 kB\u001b[0m \u001b[31m20.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hCollecting pgvector==0.2.4 (from llmware)\n", " Downloading pgvector-0.2.4-py2.py3-none-any.whl (9.6 kB)\n", "Collecting colorama==0.4.6 (from llmware)\n", " Downloading colorama-0.4.6-py2.py3-none-any.whl (25 kB)\n", "Requirement already satisfied: librosa>=0.10.0 in /usr/local/lib/python3.10/dist-packages (from llmware) (0.10.2.post1)\n", "Requirement already satisfied: typing-extensions>=4.1 in /usr/local/lib/python3.10/dist-packages (from psycopg==3.1.17->llmware) (4.12.2)\n", "Collecting botocore<1.35.0,>=1.34.138 (from boto3>=1.24.53->llmware)\n", " Downloading botocore-1.34.138-py3-none-any.whl (12.4 MB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m12.4/12.4 MB\u001b[0m \u001b[31m94.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hCollecting jmespath<2.0.0,>=0.7.1 (from boto3>=1.24.53->llmware)\n", " Downloading jmespath-1.0.1-py3-none-any.whl (20 kB)\n", "Collecting s3transfer<0.11.0,>=0.10.0 (from boto3>=1.24.53->llmware)\n", " Downloading s3transfer-0.10.2-py3-none-any.whl (82 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m82.7/82.7 kB\u001b[0m \u001b[31m11.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hRequirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.19.4->llmware) (3.15.4)\n", "Requirement already satisfied: fsspec>=2023.5.0 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.19.4->llmware) (2023.6.0)\n", "Requirement already satisfied: packaging>=20.9 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.19.4->llmware) (24.1)\n", "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.19.4->llmware) (6.0.1)\n", "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.19.4->llmware) (2.31.0)\n", "Requirement already satisfied: tqdm>=4.42.1 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.19.4->llmware) (4.66.4)\n", "Requirement already satisfied: audioread>=2.1.9 in /usr/local/lib/python3.10/dist-packages (from librosa>=0.10.0->llmware) (3.0.1)\n", "Requirement already satisfied: scipy>=1.2.0 in /usr/local/lib/python3.10/dist-packages (from librosa>=0.10.0->llmware) (1.11.4)\n", "Requirement already satisfied: scikit-learn>=0.20.0 in /usr/local/lib/python3.10/dist-packages (from librosa>=0.10.0->llmware) (1.2.2)\n", "Requirement already satisfied: joblib>=0.14 in /usr/local/lib/python3.10/dist-packages (from librosa>=0.10.0->llmware) (1.4.2)\n", "Requirement already satisfied: decorator>=4.3.0 in /usr/local/lib/python3.10/dist-packages (from librosa>=0.10.0->llmware) (4.4.2)\n", "Requirement already satisfied: numba>=0.51.0 in /usr/local/lib/python3.10/dist-packages (from librosa>=0.10.0->llmware) (0.58.1)\n", "Requirement already satisfied: soundfile>=0.12.1 in /usr/local/lib/python3.10/dist-packages (from librosa>=0.10.0->llmware) (0.12.1)\n", "Requirement already satisfied: pooch>=1.1 in /usr/local/lib/python3.10/dist-packages (from librosa>=0.10.0->llmware) (1.8.2)\n", "Requirement already satisfied: soxr>=0.3.2 in /usr/local/lib/python3.10/dist-packages (from librosa>=0.10.0->llmware) (0.3.7)\n", "Requirement already satisfied: lazy-loader>=0.1 in /usr/local/lib/python3.10/dist-packages (from librosa>=0.10.0->llmware) (0.4)\n", "Requirement already satisfied: msgpack>=1.0 in /usr/local/lib/python3.10/dist-packages (from librosa>=0.10.0->llmware) (1.0.8)\n", "Collecting dnspython<3.0.0,>=1.16.0 (from pymongo>=4.7.0->llmware)\n", " Downloading dnspython-2.6.1-py3-none-any.whl (307 kB)\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m307.7/307.7 kB\u001b[0m \u001b[31m39.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25hRequirement already satisfied: python-dateutil<3.0.0,>=2.1 in /usr/local/lib/python3.10/dist-packages (from botocore<1.35.0,>=1.34.138->boto3>=1.24.53->llmware) (2.8.2)\n", "Requirement already satisfied: urllib3!=2.2.0,<3,>=1.25.4 in /usr/local/lib/python3.10/dist-packages (from botocore<1.35.0,>=1.34.138->boto3>=1.24.53->llmware) (2.0.7)\n", "Requirement already satisfied: llvmlite<0.42,>=0.41.0dev0 in /usr/local/lib/python3.10/dist-packages (from numba>=0.51.0->librosa>=0.10.0->llmware) (0.41.1)\n", "Requirement already satisfied: platformdirs>=2.5.0 in /usr/local/lib/python3.10/dist-packages (from pooch>=1.1->librosa>=0.10.0->llmware) (4.2.2)\n", "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->huggingface-hub>=0.19.4->llmware) (3.3.2)\n", "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->huggingface-hub>=0.19.4->llmware) (3.7)\n", "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->huggingface-hub>=0.19.4->llmware) (2024.6.2)\n", "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=0.20.0->librosa>=0.10.0->llmware) (3.5.0)\n", "Requirement already satisfied: cffi>=1.0 in /usr/local/lib/python3.10/dist-packages (from soundfile>=0.12.1->librosa>=0.10.0->llmware) (1.16.0)\n", "Requirement already satisfied: pycparser in /usr/local/lib/python3.10/dist-packages (from cffi>=1.0->soundfile>=0.12.1->librosa>=0.10.0->llmware) (2.22)\n", "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil<3.0.0,>=2.1->botocore<1.35.0,>=1.34.138->boto3>=1.24.53->llmware) (1.16.0)\n", "Installing collected packages: psycopg-binary, psycopg, pgvector, jmespath, dnspython, colorama, pymongo, botocore, s3transfer, boto3, llmware\n", "Successfully installed boto3-1.34.138 botocore-1.34.138 colorama-0.4.6 dnspython-2.6.1 jmespath-1.0.1 llmware-0.3.2 pgvector-0.2.4 psycopg-3.1.17 psycopg-binary-3.1.17 pymongo-4.8.0 s3transfer-0.10.2\n" ] } ], "source": [ "!pip install YFinance\n", "!pip install wikipedia-api\n", "!pip install llmware" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000, "referenced_widgets": [ "2a5570ef8bbd4d9cbc965e1a1872daa0", "02d42d1c0d104a849c09c14a14ddd774", "42fb8aaca8114edaba0853c28741e199", "332c64b2fead4a2c8d8f65690d74a22e", "a750d844c86148bfb5b39c34b26b42a3", "6262dbdd76f5406d977c035a9747f6f8", "cd294ad0b5c14af59be1106700179200", "02ff0f346ade4f7190d158598916bdf1", "e3533899a9d34bed9669d72c74f28933", "bac1b3f941c84acba980a62395981e00", "e413397fb74942158c9fe27b3a2dc3cc", "fc5c544522b4494b8526088d092fdf31", "d6a1ad8c1eb44f9a9e95c90f67bc8137", "d72368cf2dfe4b67bb73f238507d05c6", "b878681634cb4505b33a5dc139abb06d", "0a2d8a7481604e5ea53b3353ed96a8b4", "19afff5f83c04aea95de1828c2c50690", "14fd6f274e3d4c609c46de517184c0d1", "72a003a867dd44e2aad1521b8bf20da3", "c90fb61f65954b209fcd8d6043031311", "dbe6788d396a42228aa2699dced0e481", "a50bfb38fbf64413a7a0125a3d157dd8", "403a012747b44a6fbb5b570bf98d5a71", "425e9c03414d4d62864dbe20af462e89", "227a70e7abdf4a34b796e110848b089e", "e189c705be104b6e8f480d62ab16fde0", "0c975ae83ad94f259b5b9e0b76fbb2a9", "9d06a33c549a4199b4af3f1f48ff5fd1", "8004072db97e460f83503c899fac9a01", "713b2d8c0681493c95196f4d56851ef7", "02b9d8c1cd154c828d7307b4b056b703", "ee34da33d0ae412f812f132358ab22f1", "97d5361038274f15aaec50e9736f96ef", "92b2eb8c11a548b7b4d0e09f8a6e6802", "2b134ea124b64b838f7ba7b9f461a26b", "1f2909f9240345ed9ed892f24c57a42f", "bb6b60b1ac6841708c0bd7497dbd2976", "b8d4e49b68dd48a49072794539d822fc", "0e518c2dfd6247c0b4db11b93404630b", "0ddc467890d74624a5c6c731121dc52c", "57778bdaee4b47038ed72c41968e25e9", "4517b4a70120428c934dd9f1647a107d", "8410ee6ef7c34ef7a8d2c94c78d8f95a", "f4a0f46c7fb344c881b470fb96150d12", "ec7d3edf94a744518d4a71df9ec7f5a3", "853f66999986457cb1d52d8622f02cb8", "4e0a1748248843d8978f6e224a09894f", "7f41c49ce2ff417e8db0e178ae70e457", "bd79a5726d544a06aa891f08d12de28b", "ee4554c9acf749e2b6ccb81685277cac", "89a269f8b10e4db6a7d22cfb59797b53", "0d155d9516104c72bb8047e53aa3ae2f", "ef74d1ac40d44268b6930a456e1a1fc4", "21e242b1386147e8a2f7b78113e5bd5b", "80c197dbbc114735b9d62f0236d534da" ] }, "id": "ZxHLecaSSrYl", "outputId": "9ee291df-a17b-4121-878b-4a9a62b7e1a3" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:llmware.models:ModelCatalog - load_model - fetching model - bling-stablelm-3b-tool - from remote repository using pull_snapshot_from_hf - this may take a couple of minutes the first time.\n", "/usr/local/lib/python3.10/dist-packages/huggingface_hub/file_download.py:1194: UserWarning: `local_dir_use_symlinks` parameter is deprecated and will be ignored. The process to download files to a local folder has been updated and do not rely on symlinks anymore. You only need to pass a destination folder as`local_dir`.\n", "For more details, check out https://huggingface.co/docs/huggingface_hub/main/en/guides/download#download-files-to-local-folder.\n", " warnings.warn(\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "2a5570ef8bbd4d9cbc965e1a1872daa0", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Fetching 4 files: 0%| | 0/4 [00:00