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,