diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..52dd8d2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.env +*.venv diff --git a/lab-chains-in-langchain.ipynb b/lab-chains-in-langchain.ipynb index 290f3bb..ffcd8cf 100644 --- a/lab-chains-in-langchain.ipynb +++ b/lab-chains-in-langchain.ipynb @@ -18,13 +18,23 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, + "id": "3fddd30b", + "metadata": {}, + "outputs": [], + "source": [ + "#!pip install python-dotenv" + ] + }, + { + "cell_type": "code", + "execution_count": 2, "id": "541eb2f1", "metadata": {}, "outputs": [], "source": [ "import warnings\n", - "warnings.filterwarnings('ignore')" + "warnings.filterwarnings('ignore')\n" ] }, { @@ -47,7 +57,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "b84e441b", "metadata": { "tags": [] @@ -59,7 +69,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 5, "id": "974acf8e-8f88-42de-88f8-40a82cb58e8b", "metadata": { "tags": [] @@ -67,12 +77,12 @@ "outputs": [], "source": [ "import pandas as pd\n", - "df = pd.read_csv('./lab/data/Data.csv')" + "df = pd.read_csv('./data/Data.csv')" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 6, "id": "b7a09c35", "metadata": { "tags": [] @@ -126,7 +136,7 @@ " \n", " \n", " 4\n", - " Milk Frother Handheld\\n\n", + " Milk Frother Handheld\\r\\n\n", " I loved this product. But they only seem to l...\n", " \n", " \n", @@ -134,15 +144,22 @@ "" ], "text/plain": [ - " Product Review\n", - "0 Queen Size Sheet Set I ordered a king size set. My only criticism w...\n", - "1 Waterproof Phone Pouch I loved the waterproof sac, although the openi...\n", - "2 Luxury Air Mattress This mattress had a small hole in the top of i...\n", - "3 Pillows Insert This is the best throw pillow fillers on Amazo...\n", - "4 Milk Frother Handheld\\n  I loved this product. But they only seem to l..." + " Product \\\n", + "0 Queen Size Sheet Set \n", + "1 Waterproof Phone Pouch \n", + "2 Luxury Air Mattress \n", + "3 Pillows Insert \n", + "4 Milk Frother Handheld\\r\\n \n", + "\n", + " Review \n", + "0 I ordered a king size set. My only criticism w... \n", + "1 I loved the waterproof sac, although the openi... \n", + "2 This mattress had a small hole in the top of i... \n", + "3 This is the best throw pillow fillers on Amazo... \n", + "4  I loved this product. But they only seem to l... " ] }, - "execution_count": 15, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -161,71 +178,330 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "id": "427e1119", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: langchain in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (1.3.14)\n", + "Requirement already satisfied: langchain-openai in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (1.4.1)\n", + "Requirement already satisfied: langchain-core in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (1.5.3)\n", + "Collecting langchain-community\n", + " Using cached langchain_community-0.4.2-py3-none-any.whl.metadata (3.4 kB)\n", + "Requirement already satisfied: langgraph<1.3.0,>=1.2.5 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langchain) (1.2.10)\n", + "Requirement already satisfied: pydantic<3.0.0,>=2.7.4 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langchain) (2.13.4)\n", + "Requirement already satisfied: jsonpatch<2.0.0,>=1.33.0 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langchain-core) (1.33)\n", + "Requirement already satisfied: langchain-protocol>=0.0.17 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langchain-core) (0.0.18)\n", + "Requirement already satisfied: langsmith<1.0.0,>=0.3.45 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langchain-core) (0.10.15)\n", + "Requirement already satisfied: packaging>=23.2.0 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langchain-core) (26.2)\n", + "Requirement already satisfied: pyyaml<7.0.0,>=5.3.0 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langchain-core) (6.0.3)\n", + "Requirement already satisfied: tenacity!=8.4.0,<10.0.0,>=8.1.0 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langchain-core) (9.1.4)\n", + "Requirement already satisfied: typing-extensions<5.0.0,>=4.7.0 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langchain-core) (4.16.0)\n", + "Requirement already satisfied: uuid-utils<1.0,>=0.12.0 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langchain-core) (0.17.0)\n", + "Requirement already satisfied: jsonpointer>=1.9 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from jsonpatch<2.0.0,>=1.33.0->langchain-core) (3.1.1)\n", + "Requirement already satisfied: langgraph-checkpoint<5.0.0,>=4.1.0 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langgraph<1.3.0,>=1.2.5->langchain) (4.1.1)\n", + "Requirement already satisfied: langgraph-prebuilt<1.2.0,>=1.1.0 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langgraph<1.3.0,>=1.2.5->langchain) (1.1.0)\n", + "Requirement already satisfied: langgraph-sdk<0.5.0,>=0.4.2 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langgraph<1.3.0,>=1.2.5->langchain) (0.4.2)\n", + "Requirement already satisfied: xxhash>=3.5.0 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langgraph<1.3.0,>=1.2.5->langchain) (3.8.1)\n", + "Requirement already satisfied: ormsgpack>=1.12.0 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langgraph-checkpoint<5.0.0,>=4.1.0->langgraph<1.3.0,>=1.2.5->langchain) (1.12.2)\n", + "Requirement already satisfied: httpx>=0.25.2 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langgraph-sdk<0.5.0,>=0.4.2->langgraph<1.3.0,>=1.2.5->langchain) (0.28.1)\n", + "Requirement already satisfied: orjson>=3.11.5 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langgraph-sdk<0.5.0,>=0.4.2->langgraph<1.3.0,>=1.2.5->langchain) (3.11.9)\n", + "Requirement already satisfied: websockets<16,>=14 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langgraph-sdk<0.5.0,>=0.4.2->langgraph<1.3.0,>=1.2.5->langchain) (15.0.1)\n", + "Requirement already satisfied: anyio>=3.5.0 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langsmith<1.0.0,>=0.3.45->langchain-core) (4.14.2)\n", + "Requirement already satisfied: distro>=1.7.0 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langsmith<1.0.0,>=0.3.45->langchain-core) (1.9.0)\n", + "Requirement already satisfied: requests-toolbelt>=1.0.0 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langsmith<1.0.0,>=0.3.45->langchain-core) (1.0.0)\n", + "Requirement already satisfied: requests>=2.0.0 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langsmith<1.0.0,>=0.3.45->langchain-core) (2.34.2)\n", + "Requirement already satisfied: sniffio>=1.1 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langsmith<1.0.0,>=0.3.45->langchain-core) (1.3.1)\n", + "Requirement already satisfied: zstandard>=0.23.0 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langsmith<1.0.0,>=0.3.45->langchain-core) (0.25.0)\n", + "Requirement already satisfied: certifi in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from httpx>=0.25.2->langgraph-sdk<0.5.0,>=0.4.2->langgraph<1.3.0,>=1.2.5->langchain) (2026.7.22)\n", + "Requirement already satisfied: httpcore==1.* in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from httpx>=0.25.2->langgraph-sdk<0.5.0,>=0.4.2->langgraph<1.3.0,>=1.2.5->langchain) (1.0.9)\n", + "Requirement already satisfied: idna in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from httpx>=0.25.2->langgraph-sdk<0.5.0,>=0.4.2->langgraph<1.3.0,>=1.2.5->langchain) (3.18)\n", + "Requirement already satisfied: h11>=0.16 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from httpcore==1.*->httpx>=0.25.2->langgraph-sdk<0.5.0,>=0.4.2->langgraph<1.3.0,>=1.2.5->langchain) (0.16.0)\n", + "Requirement already satisfied: annotated-types>=0.6.0 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from pydantic<3.0.0,>=2.7.4->langchain) (0.8.0)\n", + "Requirement already satisfied: pydantic-core==2.46.4 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from pydantic<3.0.0,>=2.7.4->langchain) (2.46.4)\n", + "Requirement already satisfied: typing-inspection>=0.4.2 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from pydantic<3.0.0,>=2.7.4->langchain) (0.4.2)\n", + "Requirement already satisfied: openai<3.0.0,>=2.45.0 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langchain-openai) (2.53.0)\n", + "Requirement already satisfied: tiktoken<1.0.0,>=0.7.0 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langchain-openai) (0.13.0)\n", + "Requirement already satisfied: jiter<1,>=0.10.0 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from openai<3.0.0,>=2.45.0->langchain-openai) (0.16.0)\n", + "Requirement already satisfied: tqdm>4 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from openai<3.0.0,>=2.45.0->langchain-openai) (4.70.0)\n", + "Requirement already satisfied: regex in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from tiktoken<1.0.0,>=0.7.0->langchain-openai) (2026.7.19)\n", + "Collecting aiohttp<4.0.0,>=3.8.3 (from langchain-community)\n", + " Using cached aiohttp-3.14.3-cp314-cp314-win_amd64.whl.metadata (8.5 kB)\n", + "Collecting httpx-sse<1.0.0,>=0.4.0 (from langchain-community)\n", + " Using cached httpx_sse-0.4.3-py3-none-any.whl.metadata (9.7 kB)\n", + "Collecting langchain-classic<2.0.0,>=1.0.7 (from langchain-community)\n", + " Using cached langchain_classic-1.0.8-py3-none-any.whl.metadata (5.1 kB)\n", + "Requirement already satisfied: numpy>=2.1.0 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from langchain-community) (2.5.1)\n", + "Collecting pydantic-settings<3.0.0,>=2.10.1 (from langchain-community)\n", + " Using cached pydantic_settings-2.14.2-py3-none-any.whl.metadata (3.4 kB)\n", + "Collecting sqlalchemy<3.0.0,>=1.4.0 (from langchain-community)\n", + " Using cached sqlalchemy-2.0.51-cp314-cp314-win_amd64.whl.metadata (9.8 kB)\n", + "Collecting aiohappyeyeballs>=2.5.0 (from aiohttp<4.0.0,>=3.8.3->langchain-community)\n", + " Using cached aiohappyeyeballs-2.7.1-py3-none-any.whl.metadata (5.9 kB)\n", + "Collecting aiosignal>=1.4.0 (from aiohttp<4.0.0,>=3.8.3->langchain-community)\n", + " Using cached aiosignal-1.4.0-py3-none-any.whl.metadata (3.7 kB)\n", + "Collecting attrs>=17.3.0 (from aiohttp<4.0.0,>=3.8.3->langchain-community)\n", + " Using cached attrs-26.1.0-py3-none-any.whl.metadata (8.8 kB)\n", + "Collecting frozenlist>=1.1.1 (from aiohttp<4.0.0,>=3.8.3->langchain-community)\n", + " Using cached frozenlist-1.8.0-cp314-cp314-win_amd64.whl.metadata (21 kB)\n", + "Collecting multidict<7.0,>=4.5 (from aiohttp<4.0.0,>=3.8.3->langchain-community)\n", + " Using cached multidict-6.7.1-cp314-cp314-win_amd64.whl.metadata (5.5 kB)\n", + "Collecting propcache>=0.2.0 (from aiohttp<4.0.0,>=3.8.3->langchain-community)\n", + " Using cached propcache-0.5.2-cp314-cp314-win_amd64.whl.metadata (17 kB)\n", + "Collecting yarl<2.0,>=1.17.0 (from aiohttp<4.0.0,>=3.8.3->langchain-community)\n", + " Using cached yarl-1.24.5-cp314-cp314-win_amd64.whl.metadata (107 kB)\n", + "Collecting langchain-text-splitters<2.0.0,>=1.1.2 (from langchain-classic<2.0.0,>=1.0.7->langchain-community)\n", + " Using cached langchain_text_splitters-1.1.2-py3-none-any.whl.metadata (3.3 kB)\n", + "Requirement already satisfied: python-dotenv>=0.21.0 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from pydantic-settings<3.0.0,>=2.10.1->langchain-community) (1.2.2)\n", + "Requirement already satisfied: charset_normalizer<4,>=2 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from requests>=2.0.0->langsmith<1.0.0,>=0.3.45->langchain-core) (3.4.9)\n", + "Requirement already satisfied: urllib3<3,>=1.26 in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from requests>=2.0.0->langsmith<1.0.0,>=0.3.45->langchain-core) (2.7.0)\n", + "Collecting greenlet>=1 (from sqlalchemy<3.0.0,>=1.4.0->langchain-community)\n", + " Using cached greenlet-3.5.4-cp314-cp314-win_amd64.whl.metadata (3.9 kB)\n", + "Requirement already satisfied: colorama in c:\\users\\gbt h610m-\\documents\\ironhack\\task\\lab-chains-in-langchain\\.venv\\lib\\site-packages (from tqdm>4->openai<3.0.0,>=2.45.0->langchain-openai) (0.4.6)\n", + "Using cached langchain_community-0.4.2-py3-none-any.whl (2.4 MB)\n", + "Using cached aiohttp-3.14.3-cp314-cp314-win_amd64.whl (481 kB)\n", + "Using cached httpx_sse-0.4.3-py3-none-any.whl (9.0 kB)\n", + "Using cached langchain_classic-1.0.8-py3-none-any.whl (1.0 MB)\n", + "Using cached langchain_text_splitters-1.1.2-py3-none-any.whl (35 kB)\n", + "Using cached multidict-6.7.1-cp314-cp314-win_amd64.whl (45 kB)\n", + "Using cached pydantic_settings-2.14.2-py3-none-any.whl (61 kB)\n", + "Using cached sqlalchemy-2.0.51-cp314-cp314-win_amd64.whl (2.1 MB)\n", + "Using cached yarl-1.24.5-cp314-cp314-win_amd64.whl (99 kB)\n", + "Using cached aiohappyeyeballs-2.7.1-py3-none-any.whl (15 kB)\n", + "Using cached aiosignal-1.4.0-py3-none-any.whl (7.5 kB)\n", + "Using cached attrs-26.1.0-py3-none-any.whl (67 kB)\n", + "Using cached frozenlist-1.8.0-cp314-cp314-win_amd64.whl (44 kB)\n", + "Using cached greenlet-3.5.4-cp314-cp314-win_amd64.whl (248 kB)\n", + "Using cached propcache-0.5.2-cp314-cp314-win_amd64.whl (42 kB)\n", + "Installing collected packages: propcache, multidict, httpx-sse, greenlet, frozenlist, attrs, aiohappyeyeballs, yarl, sqlalchemy, aiosignal, pydantic-settings, aiohttp, langchain-text-splitters, langchain-classic, langchain-community\n", + "\n", + " -------- ------------------------------- 3/15 [greenlet]\n", + " -------- ------------------------------- 3/15 [greenlet]\n", + " ------------- -------------------------- 5/15 [attrs]\n", + " --------------------- ------------------ 8/15 [sqlalchemy]\n", + " --------------------- ------------------ 8/15 [sqlalchemy]\n", + " --------------------- ------------------ 8/15 [sqlalchemy]\n", + " --------------------- ------------------ 8/15 [sqlalchemy]\n", + " --------------------- ------------------ 8/15 [sqlalchemy]\n", + " --------------------- ------------------ 8/15 [sqlalchemy]\n", + " --------------------- ------------------ 8/15 [sqlalchemy]\n", + " --------------------- ------------------ 8/15 [sqlalchemy]\n", + " --------------------- ------------------ 8/15 [sqlalchemy]\n", + " --------------------- ------------------ 8/15 [sqlalchemy]\n", + " --------------------- ------------------ 8/15 [sqlalchemy]\n", + " --------------------- ------------------ 8/15 [sqlalchemy]\n", + " --------------------- ------------------ 8/15 [sqlalchemy]\n", + " --------------------- ------------------ 8/15 [sqlalchemy]\n", + " --------------------- ------------------ 8/15 [sqlalchemy]\n", + " --------------------- ------------------ 8/15 [sqlalchemy]\n", + " --------------------- ------------------ 8/15 [sqlalchemy]\n", + " -------------------------- ------------- 10/15 [pydantic-settings]\n", + " ----------------------------- ---------- 11/15 [aiohttp]\n", + " ----------------------------- ---------- 11/15 [aiohttp]\n", + " ----------------------------- ---------- 11/15 [aiohttp]\n", + " -------------------------------- ------- 12/15 [langchain-text-splitters]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ---------------------------------- ----- 13/15 [langchain-classic]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ------------------------------------- -- 14/15 [langchain-community]\n", + " ---------------------------------------- 15/15 [langchain-community]\n", + "\n", + "Successfully installed aiohappyeyeballs-2.7.1 aiohttp-3.14.3 aiosignal-1.4.0 attrs-26.1.0 frozenlist-1.8.0 greenlet-3.5.4 httpx-sse-0.4.3 langchain-classic-1.0.8 langchain-community-0.4.2 langchain-text-splitters-1.1.2 multidict-6.7.1 propcache-0.5.2 pydantic-settings-2.14.2 sqlalchemy-2.0.51 yarl-1.24.5\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "[notice] A new release of pip is available: 25.3 -> 26.2\n", + "[notice] To update, run: python.exe -m pip install --upgrade pip\n" + ] + } + ], "source": [ - "!pip install langchain_community" + "!pip install langchain langchain-openai langchain-core langchain-community" ] }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 27, "id": "e92dff22", "metadata": { "tags": [] }, "outputs": [], "source": [ + "\n", "from langchain_openai import ChatOpenAI\n", - "from langchain.prompts import ChatPromptTemplate\n", - "from langchain.chains import LLMChain" + "from langchain_core.prompts import ChatPromptTemplate\n", + "from langchain_core.output_parsers import StrOutputParser\n", + "#from langchain_.chains import LLMChain\n", + "#from langchain_community.chains import LLMChain\n", + "#from langchain.chains.llm import LLMChain" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 21, "id": "943237a7", "metadata": {}, "outputs": [], "source": [ "#Replace None by your own value and justify\n", - "llm = ChatOpenAI(temperature=None)\n" + "llm = ChatOpenAI(temperature=0.7)\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 22, "id": "cdcdb42d", "metadata": {}, "outputs": [], "source": [ "prompt = ChatPromptTemplate.from_template( #Write a query that would take a variable to describe any product\n", - " \n", + " \"Describe the following product in detail: {product}\"\n", ")" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 28, "id": "d7abc20b", "metadata": {}, "outputs": [], "source": [ "\n", - "chain = LLMChain(llm=llm, prompt=prompt)" + "#chain = LLMChain(llm=llm, prompt=prompt)\n", + "chain = prompt | llm | StrOutputParser()" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 30, "id": "ad44d1fb", "metadata": {}, "outputs": [], "source": [ - "product = #Select a product type to be describe\n", - "chain.run(product)" + "product = \"smartphone\"\n", + "#chain.run(product)\n", + "result = chain.invoke({\"product\": product})" ] }, { @@ -238,10 +514,22 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 31, "id": "febee243", "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'langchain.chains'", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mModuleNotFoundError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[31]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m langchain.chains \u001b[38;5;28;01mimport\u001b[39;00m SimpleSequentialChain\n", + "\u001b[31mModuleNotFoundError\u001b[39m: No module named 'langchain.chains'" + ] + } + ], "source": [ "from langchain.chains import SimpleSequentialChain" ] @@ -257,7 +545,7 @@ "\n", "# prompt template 1\n", "first_prompt = ChatPromptTemplate.from_template(\n", - " #Repeat the initial query or create a new query that would feed into the second prompt\n", + " \"What is a good name for a company that makes {product}?\"\n", ")\n", "\n", "# Chain 1\n", @@ -274,7 +562,7 @@ "\n", "# prompt template 2\n", "second_prompt = ChatPromptTemplate.from_template(\n", - " #Write the second prompt query that takes an input variable whose input will come from the previous prompt\"\n", + " \"give me a short description for a company named {company_name} that makes {product}\"\n", ")\n", "# chain 2\n", "chain_two = LLMChain(llm=llm, prompt=second_prompt)" @@ -339,11 +627,11 @@ "\n", "\n", "first_prompt = ChatPromptTemplate.from_template(\n", - " #This prompt should translate a review\n", + " \"Translate the following review to English:\\n\\n{Review}\"\n", ")\n", "\n", "chain_one = LLMChain(llm=llm, prompt=first_prompt, \n", - " output_key=None #Give a name to your output\n", + " output_key=\"English_Review\" #Give a name to your output\n", " )\n" ] }, @@ -355,11 +643,11 @@ "outputs": [], "source": [ "second_prompt = ChatPromptTemplate.from_template(\n", - " #Write a promplt to summarize a review\n", + " \"Can you summarize the following review in one short sentence?\\n\\n{English_Review}\"\n", ")\n", "\n", "chain_two = LLMChain(llm=llm, prompt=second_prompt, \n", - " output_key=None #give a name to this output\n", + " output_key=\"summary\" #give a name to this output\n", " )\n" ] }, @@ -372,11 +660,11 @@ "source": [ "# prompt template 3: translate to english or other language\n", "third_prompt = ChatPromptTemplate.from_template(\n", - " None\n", + " \"What language is the following review written in?\\n\\n{Review}\"\n", ")\n", "# chain 3: input= Review and output= language\n", "chain_three = LLMChain(llm=llm, prompt=third_prompt,\n", - " output_key=None\n", + " output_key=\"language\"\n", " )\n" ] }, @@ -390,10 +678,20 @@ "\n", "# prompt template 4: follow up message that take as inputs the two previous prompts' variables\n", "fourth_prompt = ChatPromptTemplate.from_template(\n", - " None\n", + " \"\"\"Write a follow-up response to the following customer review.\n", + "\n", + " Review language: {language}\n", + "\n", + " Review:\n", + " {English_Review}\n", + "\n", + " Summary:\n", + " {summary}\n", + "\n", + " Response:\"\"\"\n", ")\n", "chain_four = LLMChain(llm=llm, prompt=fourth_prompt,\n", - " output_key=None\n", + " output_key=\"followup_message\"\n", " )\n" ] }, @@ -408,10 +706,13 @@ "# and output= English_Review,summary, followup_message\n", "overall_chain = SequentialChain(\n", " chains=[chain_one, chain_two, chain_three, chain_four],\n", - " input_variables=None,\n", - " output_variables=[None, None, None],\n", - " verbose=True\n", - ")" + " input_variables=[\"Review\"],\n", + " output_variables=[\n", + " \"English_Review\",\n", + " \"summary\",\n", + " \"followup_message\",\n", + " ],\n", + " verbose=True" ] }, { @@ -706,7 +1007,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": ".venv (3.14.3.final.0)", "language": "python", "name": "python3" }, @@ -720,7 +1021,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.8" + "version": "3.14.3" } }, "nbformat": 4,