From 665d2f02aec2f7c887a38ef5e2d034c648876205 Mon Sep 17 00:00:00 2001 From: hugoduartepenuela Date: Sun, 24 May 2026 00:04:31 +0400 Subject: [PATCH] Add files via upload --- lab-agent-vector-store.ipynb | 492 ++++++++++++++++++++++++++++++----- 1 file changed, 428 insertions(+), 64 deletions(-) diff --git a/lab-agent-vector-store.ipynb b/lab-agent-vector-store.ipynb index c0f762e..a36986d 100644 --- a/lab-agent-vector-store.ipynb +++ b/lab-agent-vector-store.ipynb @@ -34,35 +34,377 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "12df91e0-7322-43c2-96cd-0159d017a1e1", "metadata": { "tags": [] }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: chromadb in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (1.5.9)\n", + "Requirement already satisfied: langchain in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (1.3.1)\n", + "Requirement already satisfied: langchain_community in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (0.4.1)\n", + "Requirement already satisfied: langchain_openai in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (1.2.2)\n", + "Requirement already satisfied: build>=1.0.3 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (1.5.0)\n", + "Requirement already satisfied: pydantic>=2.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (2.13.4)\n", + "Requirement already satisfied: pydantic-settings>=2.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (2.14.1)\n", + "Requirement already satisfied: pybase64>=1.4.1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (1.4.3)\n", + "Requirement already satisfied: uvicorn>=0.18.3 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from uvicorn[standard]>=0.18.3->chromadb) (0.47.0)\n", + "Requirement already satisfied: numpy>=1.22.5 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (2.4.6)\n", + "Requirement already satisfied: typing-extensions>=4.5.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (4.15.0)\n", + "Requirement already satisfied: onnxruntime>=1.14.1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (1.26.0)\n", + "Requirement already satisfied: opentelemetry-api>=1.2.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (1.42.1)\n", + "Requirement already satisfied: opentelemetry-exporter-otlp-proto-grpc>=1.2.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (1.42.1)\n", + "Requirement already satisfied: opentelemetry-sdk>=1.2.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (1.42.1)\n", + "Requirement already satisfied: tokenizers>=0.13.2 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (0.19.1)\n", + "Requirement already satisfied: pypika>=0.48.9 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (0.51.1)\n", + "Requirement already satisfied: tqdm>=4.65.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (4.67.3)\n", + "Requirement already satisfied: overrides>=7.3.1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (7.7.0)\n", + "Requirement already satisfied: importlib-resources in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (7.1.0)\n", + "Requirement already satisfied: grpcio>=1.58.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (1.80.0)\n", + "Requirement already satisfied: bcrypt>=4.0.1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (5.0.0)\n", + "Requirement already satisfied: typer>=0.9.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (0.25.1)\n", + "Requirement already satisfied: kubernetes>=28.1.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (36.0.0)\n", + "Requirement already satisfied: tenacity>=8.2.3 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (9.1.4)\n", + "Requirement already satisfied: pyyaml>=6.0.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (6.0.3)\n", + "Requirement already satisfied: mmh3>=4.0.1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (5.2.1)\n", + "Requirement already satisfied: orjson>=3.9.12 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (3.11.9)\n", + "Requirement already satisfied: httpx>=0.27.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (0.28.1)\n", + "Requirement already satisfied: rich>=10.11.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (15.0.0)\n", + "Requirement already satisfied: jsonschema>=4.19.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (4.26.0)\n", + "Requirement already satisfied: langchain-core<2.0.0,>=1.4.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain) (1.4.0)\n", + "Requirement already satisfied: langgraph<1.3.0,>=1.2.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain) (1.2.1)\n", + "Requirement already satisfied: jsonpatch<2.0.0,>=1.33.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain-core<2.0.0,>=1.4.0->langchain) (1.33)\n", + "Requirement already satisfied: langchain-protocol>=0.0.14 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain-core<2.0.0,>=1.4.0->langchain) (0.0.15)\n", + "Requirement already satisfied: langsmith<1.0.0,>=0.3.45 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain-core<2.0.0,>=1.4.0->langchain) (0.8.5)\n", + "Requirement already satisfied: packaging>=23.2.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain-core<2.0.0,>=1.4.0->langchain) (24.2)\n", + "Requirement already satisfied: uuid-utils<1.0,>=0.12.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain-core<2.0.0,>=1.4.0->langchain) (0.16.0)\n", + "Requirement already satisfied: jsonpointer>=1.9 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from jsonpatch<2.0.0,>=1.33.0->langchain-core<2.0.0,>=1.4.0->langchain) (3.1.1)\n", + "Requirement already satisfied: langgraph-checkpoint<5.0.0,>=4.1.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langgraph<1.3.0,>=1.2.0->langchain) (4.1.1)\n", + "Requirement already satisfied: langgraph-prebuilt<1.2.0,>=1.1.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langgraph<1.3.0,>=1.2.0->langchain) (1.1.0)\n", + "Requirement already satisfied: langgraph-sdk<0.4.0,>=0.3.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langgraph<1.3.0,>=1.2.0->langchain) (0.3.15)\n", + "Requirement already satisfied: xxhash>=3.5.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langgraph<1.3.0,>=1.2.0->langchain) (3.7.0)\n", + "Requirement already satisfied: ormsgpack>=1.12.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langgraph-checkpoint<5.0.0,>=4.1.0->langgraph<1.3.0,>=1.2.0->langchain) (1.12.2)\n", + "Requirement already satisfied: requests-toolbelt>=1.0.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langsmith<1.0.0,>=0.3.45->langchain-core<2.0.0,>=1.4.0->langchain) (1.0.0)\n", + "Requirement already satisfied: requests>=2.0.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langsmith<1.0.0,>=0.3.45->langchain-core<2.0.0,>=1.4.0->langchain) (2.34.2)\n", + "Requirement already satisfied: zstandard>=0.23.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langsmith<1.0.0,>=0.3.45->langchain-core<2.0.0,>=1.4.0->langchain) (0.25.0)\n", + "Requirement already satisfied: anyio in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from httpx>=0.27.0->chromadb) (4.13.0)\n", + "Requirement already satisfied: certifi in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from httpx>=0.27.0->chromadb) (2026.5.20)\n", + "Requirement already satisfied: httpcore==1.* in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from httpx>=0.27.0->chromadb) (1.0.9)\n", + "Requirement already satisfied: idna in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from httpx>=0.27.0->chromadb) (3.15)\n", + "Requirement already satisfied: h11>=0.16 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from httpcore==1.*->httpx>=0.27.0->chromadb) (0.16.0)\n", + "Requirement already satisfied: annotated-types>=0.6.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from pydantic>=2.0->chromadb) (0.7.0)\n", + "Requirement already satisfied: pydantic-core==2.46.4 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from pydantic>=2.0->chromadb) (2.46.4)\n", + "Requirement already satisfied: typing-inspection>=0.4.2 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from pydantic>=2.0->chromadb) (0.4.2)\n", + "Requirement already satisfied: langchain-classic<2.0.0,>=1.0.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain_community) (1.0.7)\n", + "Requirement already satisfied: SQLAlchemy<3.0.0,>=1.4.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain_community) (2.0.49)\n", + "Requirement already satisfied: aiohttp<4.0.0,>=3.8.3 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain_community) (3.13.5)\n", + "Requirement already satisfied: dataclasses-json<0.7.0,>=0.6.7 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain_community) (0.6.7)\n", + "Requirement already satisfied: httpx-sse<1.0.0,>=0.4.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain_community) (0.4.3)\n", + "Requirement already satisfied: aiohappyeyeballs>=2.5.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.3->langchain_community) (2.6.2)\n", + "Requirement already satisfied: aiosignal>=1.4.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.3->langchain_community) (1.4.0)\n", + "Requirement already satisfied: attrs>=17.3.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.3->langchain_community) (26.1.0)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.3->langchain_community) (1.8.0)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.3->langchain_community) (6.7.1)\n", + "Requirement already satisfied: propcache>=0.2.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.3->langchain_community) (0.5.2)\n", + "Requirement already satisfied: yarl<2.0,>=1.17.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.3->langchain_community) (1.24.2)\n", + "Requirement already satisfied: marshmallow<4.0.0,>=3.18.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from dataclasses-json<0.7.0,>=0.6.7->langchain_community) (3.26.2)\n", + "Requirement already satisfied: typing-inspect<1,>=0.4.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from dataclasses-json<0.7.0,>=0.6.7->langchain_community) (0.9.0)\n", + "Requirement already satisfied: langchain-text-splitters<2.0.0,>=1.1.2 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain-classic<2.0.0,>=1.0.0->langchain_community) (1.1.2)\n", + "Requirement already satisfied: python-dotenv>=0.21.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from pydantic-settings>=2.0->chromadb) (1.2.2)\n", + "Requirement already satisfied: charset_normalizer<4,>=2 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from requests>=2.0.0->langsmith<1.0.0,>=0.3.45->langchain-core<2.0.0,>=1.4.0->langchain) (3.4.7)\n", + "Requirement already satisfied: urllib3<3,>=1.26 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from requests>=2.0.0->langsmith<1.0.0,>=0.3.45->langchain-core<2.0.0,>=1.4.0->langchain) (2.7.0)\n", + "Requirement already satisfied: mypy-extensions>=0.3.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from typing-inspect<1,>=0.4.0->dataclasses-json<0.7.0,>=0.6.7->langchain_community) (1.1.0)\n", + "Requirement already satisfied: openai<3.0.0,>=2.26.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain_openai) (2.37.0)\n", + "Requirement already satisfied: tiktoken<1.0.0,>=0.7.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain_openai) (0.13.0)\n", + "Requirement already satisfied: distro<2,>=1.7.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from openai<3.0.0,>=2.26.0->langchain_openai) (1.9.0)\n", + "Requirement already satisfied: jiter<1,>=0.10.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from openai<3.0.0,>=2.26.0->langchain_openai) (0.15.0)\n", + "Requirement already satisfied: sniffio in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from openai<3.0.0,>=2.26.0->langchain_openai) (1.3.1)\n", + "Requirement already satisfied: regex in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from tiktoken<1.0.0,>=0.7.0->langchain_openai) (2026.5.9)\n", + "Requirement already satisfied: pyproject_hooks in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from build>=1.0.3->chromadb) (1.2.0)\n", + "Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from jsonschema>=4.19.0->chromadb) (2025.9.1)\n", + "Requirement already satisfied: referencing>=0.28.4 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from jsonschema>=4.19.0->chromadb) (0.37.0)\n", + "Requirement already satisfied: rpds-py>=0.25.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from jsonschema>=4.19.0->chromadb) (0.30.0)\n", + "Requirement already satisfied: six>=1.9.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from kubernetes>=28.1.0->chromadb) (1.17.0)\n", + "Requirement already satisfied: python-dateutil>=2.5.3 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from kubernetes>=28.1.0->chromadb) (2.9.0.post0)\n", + "Requirement already satisfied: websocket-client!=0.40.0,!=0.41.*,!=0.42.*,>=0.32.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from kubernetes>=28.1.0->chromadb) (1.9.0)\n", + "Requirement already satisfied: requests-oauthlib in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from kubernetes>=28.1.0->chromadb) (2.0.0)\n", + "Requirement already satisfied: durationpy>=0.7 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from kubernetes>=28.1.0->chromadb) (0.10)\n", + "Requirement already satisfied: flatbuffers in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from onnxruntime>=1.14.1->chromadb) (25.12.19)\n", + "Requirement already satisfied: protobuf in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from onnxruntime>=1.14.1->chromadb) (6.33.6)\n", + "Requirement already satisfied: googleapis-common-protos~=1.57 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from opentelemetry-exporter-otlp-proto-grpc>=1.2.0->chromadb) (1.75.0)\n", + "Requirement already satisfied: opentelemetry-exporter-otlp-proto-common==1.42.1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from opentelemetry-exporter-otlp-proto-grpc>=1.2.0->chromadb) (1.42.1)\n", + "Requirement already satisfied: opentelemetry-proto==1.42.1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from opentelemetry-exporter-otlp-proto-grpc>=1.2.0->chromadb) (1.42.1)\n", + "Requirement already satisfied: opentelemetry-semantic-conventions==0.63b1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from opentelemetry-sdk>=1.2.0->chromadb) (0.63b1)\n", + "Requirement already satisfied: markdown-it-py>=2.2.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from rich>=10.11.0->chromadb) (4.2.0)\n", + "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from rich>=10.11.0->chromadb) (2.20.0)\n", + "Requirement already satisfied: mdurl~=0.1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from markdown-it-py>=2.2.0->rich>=10.11.0->chromadb) (0.1.2)\n", + "Requirement already satisfied: huggingface-hub<1.0,>=0.16.4 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from tokenizers>=0.13.2->chromadb) (0.36.2)\n", + "Requirement already satisfied: filelock in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from huggingface-hub<1.0,>=0.16.4->tokenizers>=0.13.2->chromadb) (3.29.0)\n", + "Requirement already satisfied: fsspec>=2023.5.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from huggingface-hub<1.0,>=0.16.4->tokenizers>=0.13.2->chromadb) (2026.2.0)\n", + "Requirement already satisfied: hf-xet<2.0.0,>=1.1.3 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from huggingface-hub<1.0,>=0.16.4->tokenizers>=0.13.2->chromadb) (1.5.0)\n", + "Requirement already satisfied: click>=8.2.1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from typer>=0.9.0->chromadb) (8.4.0)\n", + "Requirement already satisfied: shellingham>=1.3.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from typer>=0.9.0->chromadb) (1.5.4)\n", + "Requirement already satisfied: annotated-doc>=0.0.2 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from typer>=0.9.0->chromadb) (0.0.4)\n", + "Requirement already satisfied: httptools>=0.6.3 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from uvicorn[standard]>=0.18.3->chromadb) (0.7.1)\n", + "Requirement already satisfied: uvloop>=0.15.1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from uvicorn[standard]>=0.18.3->chromadb) (0.22.1)\n", + "Requirement already satisfied: watchfiles>=0.20 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from uvicorn[standard]>=0.18.3->chromadb) (1.2.0)\n", + "Requirement already satisfied: websockets>=10.4 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from uvicorn[standard]>=0.18.3->chromadb) (16.0)\n", + "Requirement already satisfied: oauthlib>=3.0.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from requests-oauthlib->kubernetes>=28.1.0->chromadb) (3.3.1)\n" + ] + } + ], "source": [ - "#!pip install chromadb langchain langchain_community langchain_openai" + "!pip install chromadb langchain langchain_community langchain_openai" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, + "id": "830a00e5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/opt/anaconda3/envs/qa-lab/bin/python\n" + ] + } + ], + "source": [ + "import sys\n", + "print(sys.executable)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "5e063510", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting langchain==0.1.20\n", + " Downloading langchain-0.1.20-py3-none-any.whl.metadata (13 kB)\n", + "Collecting langchain-community==0.0.38\n", + " Downloading langchain_community-0.0.38-py3-none-any.whl.metadata (8.7 kB)\n", + "Collecting langchain-openai==0.1.7\n", + " Downloading langchain_openai-0.1.7-py3-none-any.whl.metadata (2.5 kB)\n", + "Requirement already satisfied: chromadb in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (1.5.9)\n", + "Requirement already satisfied: python-dotenv in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (1.2.2)\n", + "Requirement already satisfied: PyYAML>=5.3 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain==0.1.20) (6.0.3)\n", + "Requirement already satisfied: SQLAlchemy<3,>=1.4 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain==0.1.20) (2.0.49)\n", + "Requirement already satisfied: aiohttp<4.0.0,>=3.8.3 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain==0.1.20) (3.13.5)\n", + "Requirement already satisfied: dataclasses-json<0.7,>=0.5.7 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain==0.1.20) (0.6.7)\n", + "Collecting langchain-core<0.2.0,>=0.1.52 (from langchain==0.1.20)\n", + " Downloading langchain_core-0.1.53-py3-none-any.whl.metadata (5.9 kB)\n", + "Collecting langchain-text-splitters<0.1,>=0.0.1 (from langchain==0.1.20)\n", + " Downloading langchain_text_splitters-0.0.2-py3-none-any.whl.metadata (2.2 kB)\n", + "Collecting langsmith<0.2.0,>=0.1.17 (from langchain==0.1.20)\n", + " Downloading langsmith-0.1.147-py3-none-any.whl.metadata (14 kB)\n", + "Collecting numpy<2,>=1 (from langchain==0.1.20)\n", + " Using cached numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl.metadata (114 kB)\n", + "Requirement already satisfied: pydantic<3,>=1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain==0.1.20) (2.13.4)\n", + "Requirement already satisfied: requests<3,>=2 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain==0.1.20) (2.34.2)\n", + "Collecting tenacity<9.0.0,>=8.1.0 (from langchain==0.1.20)\n", + " Downloading tenacity-8.5.0-py3-none-any.whl.metadata (1.2 kB)\n", + "Collecting openai<2.0.0,>=1.24.0 (from langchain-openai==0.1.7)\n", + " Downloading openai-1.109.1-py3-none-any.whl.metadata (29 kB)\n", + "Requirement already satisfied: tiktoken<1,>=0.7 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain-openai==0.1.7) (0.13.0)\n", + "Requirement already satisfied: aiohappyeyeballs>=2.5.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.3->langchain==0.1.20) (2.6.2)\n", + "Requirement already satisfied: aiosignal>=1.4.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.3->langchain==0.1.20) (1.4.0)\n", + "Requirement already satisfied: attrs>=17.3.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.3->langchain==0.1.20) (26.1.0)\n", + "Requirement already satisfied: frozenlist>=1.1.1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.3->langchain==0.1.20) (1.8.0)\n", + "Requirement already satisfied: multidict<7.0,>=4.5 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.3->langchain==0.1.20) (6.7.1)\n", + "Requirement already satisfied: propcache>=0.2.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.3->langchain==0.1.20) (0.5.2)\n", + "Requirement already satisfied: yarl<2.0,>=1.17.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from aiohttp<4.0.0,>=3.8.3->langchain==0.1.20) (1.24.2)\n", + "Requirement already satisfied: marshmallow<4.0.0,>=3.18.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from dataclasses-json<0.7,>=0.5.7->langchain==0.1.20) (3.26.2)\n", + "Requirement already satisfied: typing-inspect<1,>=0.4.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from dataclasses-json<0.7,>=0.5.7->langchain==0.1.20) (0.9.0)\n", + "Requirement already satisfied: jsonpatch<2.0,>=1.33 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langchain-core<0.2.0,>=0.1.52->langchain==0.1.20) (1.33)\n", + "Collecting packaging<24.0,>=23.2 (from langchain-core<0.2.0,>=0.1.52->langchain==0.1.20)\n", + " Downloading packaging-23.2-py3-none-any.whl.metadata (3.2 kB)\n", + "Requirement already satisfied: jsonpointer>=1.9 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from jsonpatch<2.0,>=1.33->langchain-core<0.2.0,>=0.1.52->langchain==0.1.20) (3.1.1)\n", + "Requirement already satisfied: httpx<1,>=0.23.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langsmith<0.2.0,>=0.1.17->langchain==0.1.20) (0.28.1)\n", + "Requirement already satisfied: orjson<4.0.0,>=3.9.14 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langsmith<0.2.0,>=0.1.17->langchain==0.1.20) (3.11.9)\n", + "Requirement already satisfied: requests-toolbelt<2.0.0,>=1.0.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from langsmith<0.2.0,>=0.1.17->langchain==0.1.20) (1.0.0)\n", + "Requirement already satisfied: anyio in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from httpx<1,>=0.23.0->langsmith<0.2.0,>=0.1.17->langchain==0.1.20) (4.13.0)\n", + "Requirement already satisfied: certifi in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from httpx<1,>=0.23.0->langsmith<0.2.0,>=0.1.17->langchain==0.1.20) (2026.5.20)\n", + "Requirement already satisfied: httpcore==1.* in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from httpx<1,>=0.23.0->langsmith<0.2.0,>=0.1.17->langchain==0.1.20) (1.0.9)\n", + "Requirement already satisfied: idna in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from httpx<1,>=0.23.0->langsmith<0.2.0,>=0.1.17->langchain==0.1.20) (3.15)\n", + "Requirement already satisfied: h11>=0.16 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from httpcore==1.*->httpx<1,>=0.23.0->langsmith<0.2.0,>=0.1.17->langchain==0.1.20) (0.16.0)\n", + "Requirement already satisfied: distro<2,>=1.7.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from openai<2.0.0,>=1.24.0->langchain-openai==0.1.7) (1.9.0)\n", + "Requirement already satisfied: jiter<1,>=0.4.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from openai<2.0.0,>=1.24.0->langchain-openai==0.1.7) (0.15.0)\n", + "Requirement already satisfied: sniffio in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from openai<2.0.0,>=1.24.0->langchain-openai==0.1.7) (1.3.1)\n", + "Requirement already satisfied: tqdm>4 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from openai<2.0.0,>=1.24.0->langchain-openai==0.1.7) (4.67.3)\n", + "Requirement already satisfied: typing-extensions<5,>=4.11 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from openai<2.0.0,>=1.24.0->langchain-openai==0.1.7) (4.15.0)\n", + "Requirement already satisfied: annotated-types>=0.6.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from pydantic<3,>=1->langchain==0.1.20) (0.7.0)\n", + "Requirement already satisfied: pydantic-core==2.46.4 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from pydantic<3,>=1->langchain==0.1.20) (2.46.4)\n", + "Requirement already satisfied: typing-inspection>=0.4.2 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from pydantic<3,>=1->langchain==0.1.20) (0.4.2)\n", + "Requirement already satisfied: charset_normalizer<4,>=2 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from requests<3,>=2->langchain==0.1.20) (3.4.7)\n", + "Requirement already satisfied: urllib3<3,>=1.26 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from requests<3,>=2->langchain==0.1.20) (2.7.0)\n", + "Requirement already satisfied: regex in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from tiktoken<1,>=0.7->langchain-openai==0.1.7) (2026.5.9)\n", + "Requirement already satisfied: mypy-extensions>=0.3.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from typing-inspect<1,>=0.4.0->dataclasses-json<0.7,>=0.5.7->langchain==0.1.20) (1.1.0)\n", + "Requirement already satisfied: build>=1.0.3 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (1.5.0)\n", + "Requirement already satisfied: pydantic-settings>=2.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (2.14.1)\n", + "Requirement already satisfied: pybase64>=1.4.1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (1.4.3)\n", + "Requirement already satisfied: uvicorn>=0.18.3 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from uvicorn[standard]>=0.18.3->chromadb) (0.47.0)\n", + "Requirement already satisfied: onnxruntime>=1.14.1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (1.26.0)\n", + "Requirement already satisfied: opentelemetry-api>=1.2.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (1.42.1)\n", + "Requirement already satisfied: opentelemetry-exporter-otlp-proto-grpc>=1.2.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (1.42.1)\n", + "Requirement already satisfied: opentelemetry-sdk>=1.2.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (1.42.1)\n", + "Requirement already satisfied: tokenizers>=0.13.2 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (0.19.1)\n", + "Requirement already satisfied: pypika>=0.48.9 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (0.51.1)\n", + "Requirement already satisfied: overrides>=7.3.1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (7.7.0)\n", + "Requirement already satisfied: importlib-resources in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (7.1.0)\n", + "Requirement already satisfied: grpcio>=1.58.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (1.80.0)\n", + "Requirement already satisfied: bcrypt>=4.0.1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (5.0.0)\n", + "Requirement already satisfied: typer>=0.9.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (0.25.1)\n", + "Requirement already satisfied: kubernetes>=28.1.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (36.0.0)\n", + "Requirement already satisfied: mmh3>=4.0.1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (5.2.1)\n", + "Requirement already satisfied: rich>=10.11.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (15.0.0)\n", + "Requirement already satisfied: jsonschema>=4.19.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from chromadb) (4.26.0)\n", + "INFO: pip is looking at multiple versions of build to determine which version is compatible with other requirements. This could take a while.\n", + "Collecting build>=1.0.3 (from chromadb)\n", + " Downloading build-1.4.4-py3-none-any.whl.metadata (5.8 kB)\n", + " Downloading build-1.4.3-py3-none-any.whl.metadata (5.8 kB)\n", + " Downloading build-1.4.2-py3-none-any.whl.metadata (5.8 kB)\n", + " Downloading build-1.4.1-py3-none-any.whl.metadata (5.8 kB)\n", + " Downloading build-1.4.0-py3-none-any.whl.metadata (5.8 kB)\n", + " Downloading build-1.3.0-py3-none-any.whl.metadata (5.6 kB)\n", + "Requirement already satisfied: pyproject_hooks in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from build>=1.0.3->chromadb) (1.2.0)\n", + "Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from jsonschema>=4.19.0->chromadb) (2025.9.1)\n", + "Requirement already satisfied: referencing>=0.28.4 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from jsonschema>=4.19.0->chromadb) (0.37.0)\n", + "Requirement already satisfied: rpds-py>=0.25.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from jsonschema>=4.19.0->chromadb) (0.30.0)\n", + "Requirement already satisfied: six>=1.9.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from kubernetes>=28.1.0->chromadb) (1.17.0)\n", + "Requirement already satisfied: python-dateutil>=2.5.3 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from kubernetes>=28.1.0->chromadb) (2.9.0.post0)\n", + "Requirement already satisfied: websocket-client!=0.40.0,!=0.41.*,!=0.42.*,>=0.32.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from kubernetes>=28.1.0->chromadb) (1.9.0)\n", + "Requirement already satisfied: requests-oauthlib in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from kubernetes>=28.1.0->chromadb) (2.0.0)\n", + "Requirement already satisfied: durationpy>=0.7 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from kubernetes>=28.1.0->chromadb) (0.10)\n", + "Requirement already satisfied: flatbuffers in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from onnxruntime>=1.14.1->chromadb) (25.12.19)\n", + "Requirement already satisfied: protobuf in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from onnxruntime>=1.14.1->chromadb) (6.33.6)\n", + "Requirement already satisfied: googleapis-common-protos~=1.57 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from opentelemetry-exporter-otlp-proto-grpc>=1.2.0->chromadb) (1.75.0)\n", + "Requirement already satisfied: opentelemetry-exporter-otlp-proto-common==1.42.1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from opentelemetry-exporter-otlp-proto-grpc>=1.2.0->chromadb) (1.42.1)\n", + "Requirement already satisfied: opentelemetry-proto==1.42.1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from opentelemetry-exporter-otlp-proto-grpc>=1.2.0->chromadb) (1.42.1)\n", + "Requirement already satisfied: opentelemetry-semantic-conventions==0.63b1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from opentelemetry-sdk>=1.2.0->chromadb) (0.63b1)\n", + "Requirement already satisfied: markdown-it-py>=2.2.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from rich>=10.11.0->chromadb) (4.2.0)\n", + "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from rich>=10.11.0->chromadb) (2.20.0)\n", + "Requirement already satisfied: mdurl~=0.1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from markdown-it-py>=2.2.0->rich>=10.11.0->chromadb) (0.1.2)\n", + "Requirement already satisfied: huggingface-hub<1.0,>=0.16.4 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from tokenizers>=0.13.2->chromadb) (0.36.2)\n", + "Requirement already satisfied: filelock in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from huggingface-hub<1.0,>=0.16.4->tokenizers>=0.13.2->chromadb) (3.29.0)\n", + "Requirement already satisfied: fsspec>=2023.5.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from huggingface-hub<1.0,>=0.16.4->tokenizers>=0.13.2->chromadb) (2026.2.0)\n", + "Requirement already satisfied: hf-xet<2.0.0,>=1.1.3 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from huggingface-hub<1.0,>=0.16.4->tokenizers>=0.13.2->chromadb) (1.5.0)\n", + "Requirement already satisfied: click>=8.2.1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from typer>=0.9.0->chromadb) (8.4.0)\n", + "Requirement already satisfied: shellingham>=1.3.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from typer>=0.9.0->chromadb) (1.5.4)\n", + "Requirement already satisfied: annotated-doc>=0.0.2 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from typer>=0.9.0->chromadb) (0.0.4)\n", + "Requirement already satisfied: httptools>=0.6.3 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from uvicorn[standard]>=0.18.3->chromadb) (0.7.1)\n", + "Requirement already satisfied: uvloop>=0.15.1 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from uvicorn[standard]>=0.18.3->chromadb) (0.22.1)\n", + "Requirement already satisfied: watchfiles>=0.20 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from uvicorn[standard]>=0.18.3->chromadb) (1.2.0)\n", + "Requirement already satisfied: websockets>=10.4 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from uvicorn[standard]>=0.18.3->chromadb) (16.0)\n", + "Requirement already satisfied: oauthlib>=3.0.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from requests-oauthlib->kubernetes>=28.1.0->chromadb) (3.3.1)\n", + "Downloading langchain-0.1.20-py3-none-any.whl (1.0 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.0/1.0 MB\u001b[0m \u001b[31m1.8 MB/s\u001b[0m \u001b[33m0:00:00\u001b[0m eta \u001b[36m0:00:01\u001b[0m\n", + "\u001b[?25hDownloading langchain_community-0.0.38-py3-none-any.whl (2.0 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m5.9 MB/s\u001b[0m \u001b[33m0:00:00\u001b[0m eta \u001b[36m0:00:01\u001b[0m\n", + "\u001b[?25hDownloading langchain_openai-0.1.7-py3-none-any.whl (34 kB)\n", + "Downloading langchain_core-0.1.53-py3-none-any.whl (303 kB)\n", + "Downloading langchain_text_splitters-0.0.2-py3-none-any.whl (23 kB)\n", + "Downloading langsmith-0.1.147-py3-none-any.whl (311 kB)\n", + "Using cached numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl (14.0 MB)\n", + "Downloading openai-1.109.1-py3-none-any.whl (948 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m948.6/948.6 kB\u001b[0m \u001b[31m11.1 MB/s\u001b[0m \u001b[33m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading packaging-23.2-py3-none-any.whl (53 kB)\n", + "Downloading tenacity-8.5.0-py3-none-any.whl (28 kB)\n", + "Downloading build-1.3.0-py3-none-any.whl (23 kB)\n", + "Installing collected packages: tenacity, packaging, numpy, build, openai, langsmith, langchain-core, langchain-text-splitters, langchain-openai, langchain-community, langchain\n", + "\u001b[2K Attempting uninstall: tenacity\n", + "\u001b[2K Found existing installation: tenacity 9.1.4\n", + "\u001b[2K Uninstalling tenacity-9.1.4:\n", + "\u001b[2K Successfully uninstalled tenacity-9.1.4\n", + "\u001b[2K Attempting uninstall: packaging\n", + "\u001b[2K Found existing installation: packaging 24.2\n", + "\u001b[2K Uninstalling packaging-24.2:\n", + "\u001b[2K Successfully uninstalled packaging-24.2\n", + "\u001b[2K Attempting uninstall: numpy\n", + "\u001b[2K Found existing installation: numpy 2.4.6\n", + "\u001b[2K Uninstalling numpy-2.4.6:\n", + "\u001b[2K Successfully uninstalled numpy-2.4.6\n", + "\u001b[2K Attempting uninstall: build\u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m 2/11\u001b[0m [numpy]\n", + "\u001b[2K Found existing installation: build 1.5.0━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m 2/11\u001b[0m [numpy]\n", + "\u001b[2K Uninstalling build-1.5.0:m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m 2/11\u001b[0m [numpy]\n", + "\u001b[2K Successfully uninstalled build-1.5.0━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m 2/11\u001b[0m [numpy]\n", + "\u001b[2K Attempting uninstall: openai━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m 2/11\u001b[0m [numpy]\n", + "\u001b[2K Found existing installation: openai 2.37.0━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m 2/11\u001b[0m [numpy]\n", + "\u001b[2K Uninstalling openai-2.37.0:╸\u001b[0m\u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m 4/11\u001b[0m [openai]\n", + "\u001b[2K Successfully uninstalled openai-2.37.0━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m 4/11\u001b[0m [openai]\n", + "\u001b[2K Attempting uninstall: langsmith[0m\u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m 4/11\u001b[0m [openai]\n", + "\u001b[2K Found existing installation: langsmith 0.8.5━━━━━━━━━━━━━━\u001b[0m \u001b[32m 4/11\u001b[0m [openai]\n", + "\u001b[2K Uninstalling langsmith-0.8.5:[90m━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m 4/11\u001b[0m [openai]\n", + "\u001b[2K Successfully uninstalled langsmith-0.8.5━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m 4/11\u001b[0m [openai]\n", + "\u001b[2K Attempting uninstall: langchain-core0m\u001b[90m━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m 5/11\u001b[0m [langsmith]\n", + "\u001b[2K Found existing installation: langchain-core 1.4.0━━━━━━━━━\u001b[0m \u001b[32m 5/11\u001b[0m [langsmith]\n", + "\u001b[2K Uninstalling langchain-core-1.4.0:90m━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m 5/11\u001b[0m [langsmith]\n", + "\u001b[2K Successfully uninstalled langchain-core-1.4.0━━━━━━━━━━━\u001b[0m \u001b[32m 5/11\u001b[0m [langsmith]\n", + "\u001b[2K Attempting uninstall: langchain-text-splitters━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m 6/11\u001b[0m [langchain-core]\n", + "\u001b[2K Found existing installation: langchain-text-splitters 1.1.2[0m \u001b[32m 6/11\u001b[0m [langchain-core]\n", + "\u001b[2K Uninstalling langchain-text-splitters-1.1.2:━━━━━━━━━━━━━━\u001b[0m \u001b[32m 6/11\u001b[0m [langchain-core]\n", + "\u001b[2K Successfully uninstalled langchain-text-splitters-1.1.2━━━━━\u001b[0m \u001b[32m 7/11\u001b[0m [langchain-text-splitters]\n", + "\u001b[2K Attempting uninstall: langchain-openai[0m\u001b[90m━━━━━━━━━━━━━━\u001b[0m \u001b[32m 7/11\u001b[0m [langchain-text-splitters]\n", + "\u001b[2K Found existing installation: langchain-openai 1.2.2━━━━━━━\u001b[0m \u001b[32m 7/11\u001b[0m [langchain-text-splitters]\n", + "\u001b[2K Uninstalling langchain-openai-1.2.2:[0m\u001b[90m━━━━━━━━━━━━━━\u001b[0m \u001b[32m 7/11\u001b[0m [langchain-text-splitters]\n", + "\u001b[2K Successfully uninstalled langchain-openai-1.2.2━━━━━━━━━\u001b[0m \u001b[32m 7/11\u001b[0m [langchain-text-splitters]\n", + "\u001b[2K Attempting uninstall: langchain-community\u001b[90m━━━━━━━━━━━━━━\u001b[0m \u001b[32m 7/11\u001b[0m [langchain-text-splitters]\n", + "\u001b[2K Found existing installation: langchain-community 0.4.1━━━━\u001b[0m \u001b[32m 7/11\u001b[0m [langchain-text-splitters]\n", + "\u001b[2K Uninstalling langchain-community-0.4.1:m\u001b[91m╸\u001b[0m\u001b[90m━━━━━━━\u001b[0m \u001b[32m 9/11\u001b[0m [langchain-community]]\n", + "\u001b[2K Successfully uninstalled langchain-community-0.4.1━━━━━━\u001b[0m \u001b[32m 9/11\u001b[0m [langchain-community]\n", + "\u001b[2K Attempting uninstall: langchain━━━━━━━\u001b[0m\u001b[91m╸\u001b[0m\u001b[90m━━━━━━━\u001b[0m \u001b[32m 9/11\u001b[0m [langchain-community]\n", + "\u001b[2K Found existing installation: langchain 1.3.10m\u001b[90m━━━━━━━\u001b[0m \u001b[32m 9/11\u001b[0m [langchain-community]\n", + "\u001b[2K Uninstalling langchain-1.3.1:━━━\u001b[0m\u001b[91m╸\u001b[0m\u001b[90m━━━━━━━\u001b[0m \u001b[32m 9/11\u001b[0m [langchain-community]\n", + "\u001b[2K Successfully uninstalled langchain-1.3.1\u001b[0m\u001b[90m━━━━━━━\u001b[0m \u001b[32m 9/11\u001b[0m [langchain-community]\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m11/11\u001b[0m [langchain]11\u001b[0m [langchain]unity]\n", + "\u001b[1A\u001b[2K\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n", + "langgraph-prebuilt 1.1.0 requires langchain-core>=1.3.1, but you have langchain-core 0.1.53 which is incompatible.\n", + "wheel 0.46.3 requires packaging>=24.0, but you have packaging 23.2 which is incompatible.\n", + "langgraph 1.2.1 requires langchain-core<2,>=1.4.0, but you have langchain-core 0.1.53 which is incompatible.\n", + "langchain-classic 1.0.7 requires langchain-core<2.0.0,>=1.3.3, but you have langchain-core 0.1.53 which is incompatible.\n", + "langchain-classic 1.0.7 requires langchain-text-splitters<2.0.0,>=1.1.2, but you have langchain-text-splitters 0.0.2 which is incompatible.\n", + "langchain-pinecone 0.2.13 requires langchain-core<2.0.0,>=0.3.34, but you have langchain-core 0.1.53 which is incompatible.\n", + "langchain-pinecone 0.2.13 requires langchain-openai>=0.3.11, but you have langchain-openai 0.1.7 which is incompatible.\n", + "langgraph-checkpoint 4.1.1 requires langchain-core>=0.2.38, but you have langchain-core 0.1.53 which is incompatible.\n", + "pinecone-plugin-assistant 1.8.0 requires packaging<25.0,>=24.2, but you have packaging 23.2 which is incompatible.\u001b[0m\u001b[31m\n", + "\u001b[0mSuccessfully installed build-1.3.0 langchain-0.1.20 langchain-community-0.0.38 langchain-core-0.1.53 langchain-openai-0.1.7 langchain-text-splitters-0.0.2 langsmith-0.1.147 numpy-1.26.4 openai-1.109.1 packaging-23.2 tenacity-8.5.0\n" + ] + } + ], + "source": [ + "import sys\n", + "!{sys.executable} -m pip install -U \"langchain==0.1.20\" \"langchain-community==0.0.38\" \"langchain-openai==0.1.7\" chromadb python-dotenv" + ] + }, + { + "cell_type": "code", + "execution_count": 1, "id": "2868cff1-a3ef-426f-b8d7-7fe89047a5b7", "metadata": { "tags": [] }, "outputs": [], "source": [ - "from langchain.chains import RetrievalQA\n", "from langchain_community.vectorstores import Chroma\n", "from langchain_openai import OpenAI, OpenAIEmbeddings\n", "from langchain_text_splitters import CharacterTextSplitter\n", - "from langchain_community.document_loaders import TextLoader" + "from langchain_community.document_loaders import TextLoader\n", + "from langchain.chains.retrieval_qa.base import RetrievalQA" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "id": "aeff3a2d-b0cc-429f-a34c-4381d71f1a5f", "metadata": { "tags": [] @@ -76,17 +418,6 @@ "OPENAI_API_KEY = os.getenv('OPENAI_API_KEY')" ] }, - { - "cell_type": "code", - "execution_count": null, - "id": "f16d010b", - "metadata": {}, - "outputs": [], - "source": [ - "# If you're using colab, run this\n", - "#os.environ['OPENAI_API_KEY'] = \"YOUR_OPENAI_API_KEY\"" - ] - }, { "cell_type": "code", "execution_count": 9, @@ -101,7 +432,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "id": "0b7b772b", "metadata": { "tags": [] @@ -120,7 +451,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 11, "id": "f2675861", "metadata": { "tags": [] @@ -138,7 +469,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 12, "id": "bc5403d4", "metadata": { "tags": [] @@ -152,7 +483,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 13, "id": "1431cded", "metadata": { "tags": [] @@ -164,7 +495,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 14, "id": "915d3ff3", "metadata": { "tags": [] @@ -176,7 +507,35 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 16, + "id": "6bb8746f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting beautifulsoup4\n", + " Downloading beautifulsoup4-4.14.3-py3-none-any.whl.metadata (3.8 kB)\n", + "Collecting soupsieve>=1.6.1 (from beautifulsoup4)\n", + " Downloading soupsieve-2.8.3-py3-none-any.whl.metadata (4.6 kB)\n", + "Requirement already satisfied: typing-extensions>=4.0.0 in /opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages (from beautifulsoup4) (4.15.0)\n", + "Downloading beautifulsoup4-4.14.3-py3-none-any.whl (107 kB)\n", + "Downloading soupsieve-2.8.3-py3-none-any.whl (37 kB)\n", + "Installing collected packages: soupsieve, beautifulsoup4\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2/2\u001b[0m [beautifulsoup4]\n", + "\u001b[1A\u001b[2KSuccessfully installed beautifulsoup4-4.14.3 soupsieve-2.8.3\n" + ] + } + ], + "source": [ + "import sys\n", + "!{sys.executable} -m pip install beautifulsoup4" + ] + }, + { + "cell_type": "code", + "execution_count": 17, "id": "96a2edf8", "metadata": { "tags": [] @@ -186,10 +545,11 @@ "name": "stderr", "output_type": "stream", "text": [ - "Created a chunk of size 2134, which is longer than the specified 1000\n", - "Created a chunk of size 2470, which is longer than the specified 1000\n", - "Created a chunk of size 1259, which is longer than the specified 1000\n", - "Created a chunk of size 1636, which is longer than the specified 1000\n" + "Created a chunk of size 2122, which is longer than the specified 1000\n", + "Created a chunk of size 3187, which is longer than the specified 1000\n", + "Created a chunk of size 1017, which is longer than the specified 1000\n", + "Created a chunk of size 1256, which is longer than the specified 1000\n", + "Created a chunk of size 2321, which is longer than the specified 1000\n" ] } ], @@ -212,7 +572,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 18, "id": "eb142786", "metadata": { "tags": [] @@ -226,7 +586,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 19, "id": "850bc4e9", "metadata": { "tags": [] @@ -249,7 +609,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 20, "id": "fc47f230", "metadata": { "tags": [] @@ -259,7 +619,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "/opt/anaconda3/lib/python3.11/site-packages/langchain_core/_api/deprecation.py:119: LangChainDeprecationWarning: The function `initialize_agent` was deprecated in LangChain 0.1.0 and will be removed in 0.2.0. Use Use new agent constructor methods like create_react_agent, create_json_agent, create_structured_chat_agent, etc. instead.\n", + "/opt/anaconda3/envs/qa-lab/lib/python3.11/site-packages/langchain_core/_api/deprecation.py:119: LangChainDeprecationWarning: The function `initialize_agent` was deprecated in LangChain 0.1.0 and will be removed in 0.3.0. Use Use new agent constructor methods like create_react_agent, create_json_agent, create_structured_chat_agent, etc. instead.\n", " warn_deprecated(\n" ] } @@ -274,20 +634,12 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 21, "id": "10ca2db8", "metadata": { "tags": [] }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/opt/anaconda3/lib/python3.11/site-packages/langchain_core/_api/deprecation.py:119: LangChainDeprecationWarning: The method `Chain.run` was deprecated in langchain 0.1.0 and will be removed in 0.2.0. Use invoke instead.\n", - " warn_deprecated(\n" - ] - }, { "name": "stdout", "output_type": "stream", @@ -308,10 +660,11 @@ { "data": { "text/plain": [ - "\"Biden mentioned that he nominated Circuit Court of Appeals Judge Ketanji Brown Jackson to serve on the United States Supreme Court, praising her as one of the nation's top legal minds who will continue Justice Breyer's legacy of excellence.\"" + "{'input': 'What did biden say about ketanji brown jackson in the state of the union address?',\n", + " 'output': \"Biden mentioned that he nominated Circuit Court of Appeals Judge Ketanji Brown Jackson to serve on the United States Supreme Court, praising her as one of the nation's top legal minds who will continue Justice Breyer's legacy of excellence.\"}" ] }, - "execution_count": 38, + "execution_count": 21, "metadata": {}, "output_type": "execute_result" } @@ -324,7 +677,7 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 22, "id": "4e91b811", "metadata": { "tags": [] @@ -340,9 +693,9 @@ "\u001b[32;1m\u001b[1;3m You should always think about the differences between ruff and flake8\n", "Action: Ruff QA System\n", "Action Input: \"Why use ruff over flake8?\"\u001b[0m\n", - "Observation: \u001b[33;1m\u001b[1;3m Ruff can replace multiple Flake8 plugins, has a larger rule set, and can automatically fix its own lint violations. It also supports Python versions from 3.7 onwards and does not require the installation of Rust. Additionally, Ruff can be used independently as a linter or formatter, and can be used alongside a type checker for more comprehensive error detection.\u001b[0m\n", + "Observation: \u001b[33;1m\u001b[1;3m Ruff offers a larger rule set and better compatibility with other tools like Black. It also has the ability to automatically fix its own lint violations. However, it does not support custom lint rules like Flake8 does.\u001b[0m\n", "Thought:\u001b[32;1m\u001b[1;3m I now know the final answer\n", - "Final Answer: Ruff offers more features and flexibility compared to flake8, making it a better choice for linting and formatting Python code.\u001b[0m\n", + "Final Answer: Ruff offers a larger rule set, better compatibility with other tools, and the ability to automatically fix its own lint violations, but does not support custom lint rules like Flake8 does.\u001b[0m\n", "\n", "\u001b[1m> Finished chain.\u001b[0m\n" ] @@ -351,10 +704,10 @@ "data": { "text/plain": [ "{'input': 'Why use ruff over flake8?',\n", - " 'output': 'Ruff offers more features and flexibility compared to flake8, making it a better choice for linting and formatting Python code.'}" + " 'output': 'Ruff offers a larger rule set, better compatibility with other tools, and the ability to automatically fix its own lint violations, but does not support custom lint rules like Flake8 does.'}" ] }, - "execution_count": 40, + "execution_count": 22, "metadata": {}, "output_type": "execute_result" } @@ -383,7 +736,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 23, "id": "f59b377e", "metadata": { "tags": [] @@ -408,7 +761,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 24, "id": "8615707a", "metadata": { "tags": [] @@ -422,7 +775,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 25, "id": "36e718a9", "metadata": { "tags": [] @@ -451,7 +804,7 @@ " 'output': \" Biden mentioned that he nominated Circuit Court of Appeals Judge Ketanji Brown Jackson to serve on the United States Supreme Court, praising her as one of the nation's top legal minds who will continue Justice Breyer's legacy of excellence.\"}" ] }, - "execution_count": 48, + "execution_count": 25, "metadata": {}, "output_type": "execute_result" } @@ -464,7 +817,7 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 26, "id": "edfd0a1a", "metadata": { "tags": [] @@ -480,7 +833,18 @@ "\u001b[32;1m\u001b[1;3m You should always think about the differences between ruff and flake8\n", "Action: Ruff QA System\n", "Action Input: \"Why use ruff over flake8?\"\u001b[0m\n", - "Observation: \u001b[33;1m\u001b[1;3m Ruff can replace multiple Flake8 plugins, has a larger rule set, and can automatically fix its own lint violations. It also supports Python versions from 3.7 onwards and does not require the installation of Rust. Additionally, Ruff can be used independently as a linter or formatter, and can be used alongside a type checker for more comprehensive error detection.\u001b[0m\n", + "Observation: \u001b[33;1m\u001b[1;3m\n", + "There are a few reasons why someone might choose to use Ruff over Flake8:\n", + "\n", + "1. Larger rule set: Ruff implements over 900 rules, while Flake8 only implements around 80. This means that Ruff can catch more potential issues in your code.\n", + "\n", + "2. Better compatibility with Black: Ruff is designed to be used alongside a formatter, like Black, and will defer implementing stylistic rules that are already covered by the formatter. This means that Ruff and Black will work together seamlessly, while Flake8 may flag some of the same issues that Black will automatically fix.\n", + "\n", + "3. Automatic fixing of lint violations: Unlike Flake8, Ruff is capable of automatically fixing its own lint violations. This can save time and effort when trying to clean up your code.\n", + "\n", + "4. No need for custom or third-party rules: Ruff implements all of its rules natively, so there is no need to install and configure additional plugins or extensions. This can simplify the setup process and reduce the risk of conflicts between different plugins.\n", + "\n", + "Overall, Ruff offers a more comprehensive and streamlined approach to code linting compared to Flake8. However, it's worth noting that Flake8 still has a larger user base and may have more community support and resources available. Ultimately, the\u001b[0m\n", "\u001b[32;1m\u001b[1;3m\u001b[0m\n", "\n", "\u001b[1m> Finished chain.\u001b[0m\n" @@ -490,10 +854,10 @@ "data": { "text/plain": [ "{'input': 'Why use ruff over flake8?',\n", - " 'output': ' Ruff can replace multiple Flake8 plugins, has a larger rule set, and can automatically fix its own lint violations. It also supports Python versions from 3.7 onwards and does not require the installation of Rust. Additionally, Ruff can be used independently as a linter or formatter, and can be used alongside a type checker for more comprehensive error detection.'}" + " 'output': \"\\nThere are a few reasons why someone might choose to use Ruff over Flake8:\\n\\n1. Larger rule set: Ruff implements over 900 rules, while Flake8 only implements around 80. This means that Ruff can catch more potential issues in your code.\\n\\n2. Better compatibility with Black: Ruff is designed to be used alongside a formatter, like Black, and will defer implementing stylistic rules that are already covered by the formatter. This means that Ruff and Black will work together seamlessly, while Flake8 may flag some of the same issues that Black will automatically fix.\\n\\n3. Automatic fixing of lint violations: Unlike Flake8, Ruff is capable of automatically fixing its own lint violations. This can save time and effort when trying to clean up your code.\\n\\n4. No need for custom or third-party rules: Ruff implements all of its rules natively, so there is no need to install and configure additional plugins or extensions. This can simplify the setup process and reduce the risk of conflicts between different plugins.\\n\\nOverall, Ruff offers a more comprehensive and streamlined approach to code linting compared to Flake8. However, it's worth noting that Flake8 still has a larger user base and may have more community support and resources available. Ultimately, the\"}" ] }, - "execution_count": 50, + "execution_count": 26, "metadata": {}, "output_type": "execute_result" } @@ -514,7 +878,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 27, "id": "d397a233", "metadata": { "tags": [] @@ -537,7 +901,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 28, "id": "06157240", "metadata": { "tags": [] @@ -553,7 +917,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 29, "id": "b492b520", "metadata": { "tags": [] @@ -569,8 +933,8 @@ "\u001b[32;1m\u001b[1;3m I should use the Ruff QA System to answer the first question and the State of Union QA System to answer the second question.\n", "Action: Ruff QA System\n", "Action Input: What tool does ruff use to run over Jupyter Notebooks?\u001b[0m\n", - "Observation: \u001b[33;1m\u001b[1;3m Ruff integrates with nbQA, a tool for running linters and code formatters over Jupyter Notebooks.\u001b[0m\n", - "Thought:\u001b[32;1m\u001b[1;3m I should use the State of Union QA System to answer the second question.\n", + "Observation: \u001b[33;1m\u001b[1;3m Ruff uses nbQA, a tool for running linters and code formatters over Jupyter Notebooks.\u001b[0m\n", + "Thought:\u001b[32;1m\u001b[1;3m I should now use the State of Union QA System to answer the second question.\n", "Action: State of Union QA System\n", "Action Input: Did the president mention that tool in the state of the union?\u001b[0m\n", "Observation: \u001b[36;1m\u001b[1;3m\n", @@ -588,7 +952,7 @@ " 'output': 'No, the president did not mention a specific tool in the state of the union.'}" ] }, - "execution_count": 57, + "execution_count": 29, "metadata": {}, "output_type": "execute_result" } @@ -602,7 +966,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "qa-lab", "language": "python", "name": "python3" }, @@ -616,7 +980,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.8" + "version": "3.11.15" } }, "nbformat": 4,