{ "cells": [ { "cell_type": "code", "execution_count": 4, "id": "6d8ac8c2", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: smolagents[mcp] in ./.venv/lib/python3.12/site-packages (1.20.0)\n", "Requirement already satisfied: huggingface-hub>=0.31.2 in ./.venv/lib/python3.12/site-packages (from smolagents[mcp]) (0.33.4)\n", "Requirement already satisfied: requests>=2.32.3 in ./.venv/lib/python3.12/site-packages (from smolagents[mcp]) (2.32.4)\n", "Requirement already satisfied: rich>=13.9.4 in ./.venv/lib/python3.12/site-packages (from smolagents[mcp]) (14.0.0)\n", "Requirement already satisfied: jinja2>=3.1.4 in ./.venv/lib/python3.12/site-packages (from smolagents[mcp]) (3.1.6)\n", "Requirement already satisfied: pillow>=10.0.1 in ./.venv/lib/python3.12/site-packages (from smolagents[mcp]) (11.3.0)\n", "Requirement already satisfied: python-dotenv in ./.venv/lib/python3.12/site-packages (from smolagents[mcp]) (1.1.1)\n", "Collecting mcpadapt>=0.1.8 (from smolagents[mcp])\n", " Downloading mcpadapt-0.1.11-py3-none-any.whl.metadata (8.1 kB)\n", "Collecting mcp (from smolagents[mcp])\n", " Downloading mcp-1.12.0-py3-none-any.whl.metadata (60 kB)\n", "Requirement already satisfied: filelock in ./.venv/lib/python3.12/site-packages (from huggingface-hub>=0.31.2->smolagents[mcp]) (3.18.0)\n", "Requirement already satisfied: fsspec>=2023.5.0 in ./.venv/lib/python3.12/site-packages (from huggingface-hub>=0.31.2->smolagents[mcp]) (2025.7.0)\n", "Requirement already satisfied: packaging>=20.9 in ./.venv/lib/python3.12/site-packages (from huggingface-hub>=0.31.2->smolagents[mcp]) (25.0)\n", "Requirement already satisfied: pyyaml>=5.1 in ./.venv/lib/python3.12/site-packages (from huggingface-hub>=0.31.2->smolagents[mcp]) (6.0.2)\n", "Requirement already satisfied: tqdm>=4.42.1 in ./.venv/lib/python3.12/site-packages (from huggingface-hub>=0.31.2->smolagents[mcp]) (4.67.1)\n", "Requirement already satisfied: typing-extensions>=3.7.4.3 in ./.venv/lib/python3.12/site-packages (from huggingface-hub>=0.31.2->smolagents[mcp]) (4.14.1)\n", "Requirement already satisfied: hf-xet<2.0.0,>=1.1.2 in ./.venv/lib/python3.12/site-packages (from huggingface-hub>=0.31.2->smolagents[mcp]) (1.1.5)\n", "Requirement already satisfied: MarkupSafe>=2.0 in ./.venv/lib/python3.12/site-packages (from jinja2>=3.1.4->smolagents[mcp]) (3.0.2)\n", "Collecting jsonref>=1.1.0 (from mcpadapt>=0.1.8->smolagents[mcp])\n", " Using cached jsonref-1.1.0-py3-none-any.whl.metadata (2.7 kB)\n", "Collecting pydantic>=2.10.6 (from mcpadapt>=0.1.8->smolagents[mcp])\n", " Using cached pydantic-2.11.7-py3-none-any.whl.metadata (67 kB)\n", "Collecting anyio>=4.5 (from mcp->smolagents[mcp])\n", " Using cached anyio-4.9.0-py3-none-any.whl.metadata (4.7 kB)\n", "Collecting httpx-sse>=0.4 (from mcp->smolagents[mcp])\n", " Downloading httpx_sse-0.4.1-py3-none-any.whl.metadata (9.4 kB)\n", "Collecting httpx>=0.27 (from mcp->smolagents[mcp])\n", " Using cached httpx-0.28.1-py3-none-any.whl.metadata (7.1 kB)\n", "Collecting jsonschema>=4.20.0 (from mcp->smolagents[mcp])\n", " Downloading jsonschema-4.25.0-py3-none-any.whl.metadata (7.7 kB)\n", "Collecting pydantic-settings>=2.5.2 (from mcp->smolagents[mcp])\n", " Downloading pydantic_settings-2.10.1-py3-none-any.whl.metadata (3.4 kB)\n", "Collecting python-multipart>=0.0.9 (from mcp->smolagents[mcp])\n", " Using cached python_multipart-0.0.20-py3-none-any.whl.metadata (1.8 kB)\n", "Collecting sse-starlette>=1.6.1 (from mcp->smolagents[mcp])\n", " Downloading sse_starlette-2.4.1-py3-none-any.whl.metadata (10 kB)\n", "Collecting starlette>=0.27 (from mcp->smolagents[mcp])\n", " Downloading starlette-0.47.2-py3-none-any.whl.metadata (6.2 kB)\n", "Collecting uvicorn>=0.23.1 (from mcp->smolagents[mcp])\n", " Using cached uvicorn-0.35.0-py3-none-any.whl.metadata (6.5 kB)\n", "Collecting annotated-types>=0.6.0 (from pydantic>=2.10.6->mcpadapt>=0.1.8->smolagents[mcp])\n", " Using cached annotated_types-0.7.0-py3-none-any.whl.metadata (15 kB)\n", "Collecting pydantic-core==2.33.2 (from pydantic>=2.10.6->mcpadapt>=0.1.8->smolagents[mcp])\n", " Using cached pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.8 kB)\n", "Collecting typing-inspection>=0.4.0 (from pydantic>=2.10.6->mcpadapt>=0.1.8->smolagents[mcp])\n", " Using cached typing_inspection-0.4.1-py3-none-any.whl.metadata (2.6 kB)\n", "Requirement already satisfied: idna>=2.8 in ./.venv/lib/python3.12/site-packages (from anyio>=4.5->mcp->smolagents[mcp]) (3.10)\n", "Collecting sniffio>=1.1 (from anyio>=4.5->mcp->smolagents[mcp])\n", " Using cached sniffio-1.3.1-py3-none-any.whl.metadata (3.9 kB)\n", "Requirement already satisfied: certifi in ./.venv/lib/python3.12/site-packages (from httpx>=0.27->mcp->smolagents[mcp]) (2025.7.14)\n", "Collecting httpcore==1.* (from httpx>=0.27->mcp->smolagents[mcp])\n", " Using cached httpcore-1.0.9-py3-none-any.whl.metadata (21 kB)\n", "Collecting h11>=0.16 (from httpcore==1.*->httpx>=0.27->mcp->smolagents[mcp])\n", " Using cached h11-0.16.0-py3-none-any.whl.metadata (8.3 kB)\n", "Collecting attrs>=22.2.0 (from jsonschema>=4.20.0->mcp->smolagents[mcp])\n", " Using cached attrs-25.3.0-py3-none-any.whl.metadata (10 kB)\n", "Collecting jsonschema-specifications>=2023.03.6 (from jsonschema>=4.20.0->mcp->smolagents[mcp])\n", " Using cached jsonschema_specifications-2025.4.1-py3-none-any.whl.metadata (2.9 kB)\n", "Collecting referencing>=0.28.4 (from jsonschema>=4.20.0->mcp->smolagents[mcp])\n", " Using cached referencing-0.36.2-py3-none-any.whl.metadata (2.8 kB)\n", "Collecting rpds-py>=0.7.1 (from jsonschema>=4.20.0->mcp->smolagents[mcp])\n", " Downloading rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.2 kB)\n", "Requirement already satisfied: charset_normalizer<4,>=2 in ./.venv/lib/python3.12/site-packages (from requests>=2.32.3->smolagents[mcp]) (3.4.2)\n", "Requirement already satisfied: urllib3<3,>=1.21.1 in ./.venv/lib/python3.12/site-packages (from requests>=2.32.3->smolagents[mcp]) (2.5.0)\n", "Requirement already satisfied: markdown-it-py>=2.2.0 in ./.venv/lib/python3.12/site-packages (from rich>=13.9.4->smolagents[mcp]) (3.0.0)\n", "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in ./.venv/lib/python3.12/site-packages (from rich>=13.9.4->smolagents[mcp]) (2.19.2)\n", "Requirement already satisfied: mdurl~=0.1 in ./.venv/lib/python3.12/site-packages (from markdown-it-py>=2.2.0->rich>=13.9.4->smolagents[mcp]) (0.1.2)\n", "Collecting click>=7.0 (from uvicorn>=0.23.1->mcp->smolagents[mcp])\n", " Using cached click-8.2.1-py3-none-any.whl.metadata (2.5 kB)\n", "Downloading mcpadapt-0.1.11-py3-none-any.whl (18 kB)\n", "Using cached jsonref-1.1.0-py3-none-any.whl (9.4 kB)\n", "Downloading mcp-1.12.0-py3-none-any.whl (158 kB)\n", "Using cached pydantic-2.11.7-py3-none-any.whl (444 kB)\n", "Using cached pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB)\n", "Using cached annotated_types-0.7.0-py3-none-any.whl (13 kB)\n", "Using cached anyio-4.9.0-py3-none-any.whl (100 kB)\n", "Using cached httpx-0.28.1-py3-none-any.whl (73 kB)\n", "Using cached httpcore-1.0.9-py3-none-any.whl (78 kB)\n", "Using cached h11-0.16.0-py3-none-any.whl (37 kB)\n", "Downloading httpx_sse-0.4.1-py3-none-any.whl (8.1 kB)\n", "Downloading jsonschema-4.25.0-py3-none-any.whl (89 kB)\n", "Using cached attrs-25.3.0-py3-none-any.whl (63 kB)\n", "Using cached jsonschema_specifications-2025.4.1-py3-none-any.whl (18 kB)\n", "Downloading pydantic_settings-2.10.1-py3-none-any.whl (45 kB)\n", "Using cached python_multipart-0.0.20-py3-none-any.whl (24 kB)\n", "Using cached referencing-0.36.2-py3-none-any.whl (26 kB)\n", "Downloading rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (386 kB)\n", "Using cached sniffio-1.3.1-py3-none-any.whl (10 kB)\n", "Downloading sse_starlette-2.4.1-py3-none-any.whl (10 kB)\n", "Downloading starlette-0.47.2-py3-none-any.whl (72 kB)\n", "Using cached typing_inspection-0.4.1-py3-none-any.whl (14 kB)\n", "Using cached uvicorn-0.35.0-py3-none-any.whl (66 kB)\n", "Using cached click-8.2.1-py3-none-any.whl (102 kB)\n", "Installing collected packages: typing-inspection, sniffio, rpds-py, python-multipart, pydantic-core, jsonref, httpx-sse, h11, click, attrs, annotated-types, uvicorn, referencing, pydantic, httpcore, anyio, starlette, sse-starlette, pydantic-settings, jsonschema-specifications, httpx, jsonschema, mcp, mcpadapt\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m24/24\u001b[0m [mcpadapt]/24\u001b[0m [mcp]starlette]\n", "\u001b[1A\u001b[2KSuccessfully installed annotated-types-0.7.0 anyio-4.9.0 attrs-25.3.0 click-8.2.1 h11-0.16.0 httpcore-1.0.9 httpx-0.28.1 httpx-sse-0.4.1 jsonref-1.1.0 jsonschema-4.25.0 jsonschema-specifications-2025.4.1 mcp-1.12.0 mcpadapt-0.1.11 pydantic-2.11.7 pydantic-core-2.33.2 pydantic-settings-2.10.1 python-multipart-0.0.20 referencing-0.36.2 rpds-py-0.26.0 sniffio-1.3.1 sse-starlette-2.4.1 starlette-0.47.2 typing-inspection-0.4.1 uvicorn-0.35.0\n" ] } ], "source": [ "!pip install smolagents[mcp]" ] }, { "cell_type": "code", "execution_count": 17, "id": "007e179a", "metadata": {}, "outputs": [ { "ename": "TimeoutError", "evalue": "Couldn't connect to the MCP server after 30 seconds", "output_type": "error", "traceback": [ "\u001b[31m---------------------------------------------------------------------------\u001b[39m", "\u001b[31mTimeoutError\u001b[39m Traceback (most recent call last)", "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[17]\u001b[39m\u001b[32m, line 5\u001b[39m\n\u001b[32m 3\u001b[39m \u001b[38;5;66;03m# manually manage the connection via the mcp_client object:\u001b[39;00m\n\u001b[32m 4\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m----> \u001b[39m\u001b[32m5\u001b[39m mcp_client = \u001b[43mMCPClient\u001b[49m\u001b[43m(\u001b[49m\u001b[43m{\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43murl\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mhttps://sayshara-letter-counter.hf.space/gradio_api/mcp/sse\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mtransport\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mstreamable-http\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 6\u001b[39m tools = mcp_client.get_tools()\n\u001b[32m 7\u001b[39m \u001b[38;5;28mprint\u001b[39m(mcp_client.get_tools())\n", "\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/smolagents/mcp_client.py:110\u001b[39m, in \u001b[36mMCPClient.__init__\u001b[39m\u001b[34m(self, server_parameters, adapter_kwargs)\u001b[39m\n\u001b[32m 108\u001b[39m \u001b[38;5;28mself\u001b[39m._adapter = MCPAdapt(server_parameters, SmolAgentsAdapter(), **adapter_kwargs)\n\u001b[32m 109\u001b[39m \u001b[38;5;28mself\u001b[39m._tools: \u001b[38;5;28mlist\u001b[39m[Tool] | \u001b[38;5;28;01mNone\u001b[39;00m = \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m110\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mconnect\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/smolagents/mcp_client.py:114\u001b[39m, in \u001b[36mMCPClient.connect\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 112\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mconnect\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[32m 113\u001b[39m \u001b[38;5;250m \u001b[39m\u001b[33;03m\"\"\"Connect to the MCP server and initialize the tools.\"\"\"\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m114\u001b[39m \u001b[38;5;28mself\u001b[39m._tools: \u001b[38;5;28mlist\u001b[39m[Tool] = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_adapter\u001b[49m\u001b[43m.\u001b[49m\u001b[34;43m__enter__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/mcpadapt/core.py:300\u001b[39m, in \u001b[36mMCPAdapt.__enter__\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 299\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m__enter__\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[32m--> \u001b[39m\u001b[32m300\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mstart\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 301\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m.tools()\n", "\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/mcpadapt/core.py:288\u001b[39m, in \u001b[36mMCPAdapt.start\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 286\u001b[39m \u001b[38;5;66;03m# check connection to mcp server is ready\u001b[39;00m\n\u001b[32m 287\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m.ready.wait(timeout=\u001b[38;5;28mself\u001b[39m.connect_timeout):\n\u001b[32m--> \u001b[39m\u001b[32m288\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTimeoutError\u001b[39;00m(\n\u001b[32m 289\u001b[39m \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mCouldn\u001b[39m\u001b[33m'\u001b[39m\u001b[33mt connect to the MCP server after \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m.connect_timeout\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m seconds\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 290\u001b[39m )\n", "\u001b[31mTimeoutError\u001b[39m: Couldn't connect to the MCP server after 30 seconds" ] } ], "source": [ "from smolagents import MCPClient\n", "\n", "# manually manage the connection via the mcp_client object:\n", "try:\n", " mcp_client = MCPClient({\"url\":\"https://sayshara-letter-counter.hf.space/gradio_api/mcp/sse\", \"transport\": \"streamable-http\"})\n", " tools = mcp_client.get_tools()\n", " print(mcp_client.get_tools())\n", "\n", " # use your tools here.\n", "finally:\n", " mcp_client.disconnect()" ] }, { "cell_type": "code", "execution_count": 24, "id": "41e947ff", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
╭──────────────────────────────────────────────────── New run ────────────────────────────────────────────────────╮\n", "│ │\n", "│ How many R's in the word strawberry? │\n", "│ │\n", "╰─ InferenceClientModel - HuggingFaceTB/SmolLM3-3B ───────────────────────────────────────────────────────────────╯\n", "\n" ], "text/plain": [ "\u001b[38;2;212;183;2m╭─\u001b[0m\u001b[38;2;212;183;2m───────────────────────────────────────────────────\u001b[0m\u001b[38;2;212;183;2m \u001b[0m\u001b[1;38;2;212;183;2mNew run\u001b[0m\u001b[38;2;212;183;2m \u001b[0m\u001b[38;2;212;183;2m───────────────────────────────────────────────────\u001b[0m\u001b[38;2;212;183;2m─╮\u001b[0m\n", "\u001b[38;2;212;183;2m│\u001b[0m \u001b[38;2;212;183;2m│\u001b[0m\n", "\u001b[38;2;212;183;2m│\u001b[0m \u001b[1mHow many R's in the word strawberry?\u001b[0m \u001b[38;2;212;183;2m│\u001b[0m\n", "\u001b[38;2;212;183;2m│\u001b[0m \u001b[38;2;212;183;2m│\u001b[0m\n", "\u001b[38;2;212;183;2m╰─\u001b[0m\u001b[38;2;212;183;2m InferenceClientModel - HuggingFaceTB/SmolLM3-3B \u001b[0m\u001b[38;2;212;183;2m──────────────────────────────────────────────────────────────\u001b[0m\u001b[38;2;212;183;2m─╯\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Step 1 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n", "\n" ], "text/plain": [ "\u001b[38;2;212;183;2m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ \u001b[0m\u001b[1mStep \u001b[0m\u001b[1;36m1\u001b[0m\u001b[38;2;212;183;2m ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
Error in generating model output:\n", "(ReadTimeoutError(\"HTTPSConnectionPool(host='router.huggingface.co', port=443): Read timed out. (read \n", "timeout=120)\"), '(Request ID: a4dbb91d-dd83-4e56-bf21-b3fe6d74a2dc)')\n", "\n" ], "text/plain": [ "\u001b[1;31mError in generating model output:\u001b[0m\n", "\u001b[1;31m(\u001b[0m\u001b[1;35mReadTimeoutError\u001b[0m\u001b[1;31m(\u001b[0m\u001b[32m\"HTTPSConnectionPool\u001b[0m\u001b[32m(\u001b[0m\u001b[32mhost\u001b[0m\u001b[32m='router.huggingface.co', \u001b[0m\u001b[32mport\u001b[0m\u001b[32m=\u001b[0m\u001b[32m443\u001b[0m\u001b[32m)\u001b[0m\u001b[32m: Read timed out. \u001b[0m\u001b[32m(\u001b[0m\u001b[32mread \u001b[0m\n", "\u001b[32mtimeout\u001b[0m\u001b[32m=\u001b[0m\u001b[32m120\u001b[0m\u001b[32m)\u001b[0m\u001b[32m\"\u001b[0m\u001b[1;31m)\u001b[0m\u001b[1;31m, \u001b[0m\u001b[32m'\u001b[0m\u001b[32m(\u001b[0m\u001b[32mRequest ID: a4dbb91d-dd83-4e56-bf21-b3fe6d74a2dc\u001b[0m\u001b[32m)\u001b[0m\u001b[32m'\u001b[0m\u001b[1;31m)\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
[Step 1: Duration 120.17 seconds]\n",
"\n"
],
"text/plain": [
"\u001b[2m[Step 1: Duration 120.17 seconds]\u001b[0m\n"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"ename": "AgentGenerationError",
"evalue": "Error in generating model output:\n(ReadTimeoutError(\"HTTPSConnectionPool(host='router.huggingface.co', port=443): Read timed out. (read timeout=120)\"), '(Request ID: a4dbb91d-dd83-4e56-bf21-b3fe6d74a2dc)')",
"output_type": "error",
"traceback": [
"\u001b[31m---------------------------------------------------------------------------\u001b[39m",
"\u001b[31mTimeoutError\u001b[39m Traceback (most recent call last)",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/urllib3/connectionpool.py:534\u001b[39m, in \u001b[36mHTTPConnectionPool._make_request\u001b[39m\u001b[34m(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)\u001b[39m\n\u001b[32m 533\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m--> \u001b[39m\u001b[32m534\u001b[39m response = \u001b[43mconn\u001b[49m\u001b[43m.\u001b[49m\u001b[43mgetresponse\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 535\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m (BaseSSLError, \u001b[38;5;167;01mOSError\u001b[39;00m) \u001b[38;5;28;01mas\u001b[39;00m e:\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/urllib3/connection.py:565\u001b[39m, in \u001b[36mHTTPConnection.getresponse\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 564\u001b[39m \u001b[38;5;66;03m# Get the response from http.client.HTTPConnection\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m565\u001b[39m httplib_response = \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m.\u001b[49m\u001b[43mgetresponse\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 567\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n",
"\u001b[36mFile \u001b[39m\u001b[32m/usr/lib/python3.12/http/client.py:1428\u001b[39m, in \u001b[36mHTTPConnection.getresponse\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 1427\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m-> \u001b[39m\u001b[32m1428\u001b[39m \u001b[43mresponse\u001b[49m\u001b[43m.\u001b[49m\u001b[43mbegin\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 1429\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mConnectionError\u001b[39;00m:\n",
"\u001b[36mFile \u001b[39m\u001b[32m/usr/lib/python3.12/http/client.py:331\u001b[39m, in \u001b[36mHTTPResponse.begin\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 330\u001b[39m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[32m--> \u001b[39m\u001b[32m331\u001b[39m version, status, reason = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_read_status\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 332\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m status != CONTINUE:\n",
"\u001b[36mFile \u001b[39m\u001b[32m/usr/lib/python3.12/http/client.py:292\u001b[39m, in \u001b[36mHTTPResponse._read_status\u001b[39m\u001b[34m(self)\u001b[39m\n\u001b[32m 291\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m_read_status\u001b[39m(\u001b[38;5;28mself\u001b[39m):\n\u001b[32m--> \u001b[39m\u001b[32m292\u001b[39m line = \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mfp\u001b[49m\u001b[43m.\u001b[49m\u001b[43mreadline\u001b[49m\u001b[43m(\u001b[49m\u001b[43m_MAXLINE\u001b[49m\u001b[43m \u001b[49m\u001b[43m+\u001b[49m\u001b[43m \u001b[49m\u001b[32;43m1\u001b[39;49m\u001b[43m)\u001b[49m, \u001b[33m\"\u001b[39m\u001b[33miso-8859-1\u001b[39m\u001b[33m\"\u001b[39m)\n\u001b[32m 293\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(line) > _MAXLINE:\n",
"\u001b[36mFile \u001b[39m\u001b[32m/usr/lib/python3.12/socket.py:707\u001b[39m, in \u001b[36mSocketIO.readinto\u001b[39m\u001b[34m(self, b)\u001b[39m\n\u001b[32m 706\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m--> \u001b[39m\u001b[32m707\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_sock\u001b[49m\u001b[43m.\u001b[49m\u001b[43mrecv_into\u001b[49m\u001b[43m(\u001b[49m\u001b[43mb\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 708\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m timeout:\n",
"\u001b[36mFile \u001b[39m\u001b[32m/usr/lib/python3.12/ssl.py:1252\u001b[39m, in \u001b[36mSSLSocket.recv_into\u001b[39m\u001b[34m(self, buffer, nbytes, flags)\u001b[39m\n\u001b[32m 1249\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[32m 1250\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mnon-zero flags not allowed in calls to recv_into() on \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[33m\"\u001b[39m %\n\u001b[32m 1251\u001b[39m \u001b[38;5;28mself\u001b[39m.\u001b[34m__class__\u001b[39m)\n\u001b[32m-> \u001b[39m\u001b[32m1252\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mread\u001b[49m\u001b[43m(\u001b[49m\u001b[43mnbytes\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbuffer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 1253\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n",
"\u001b[36mFile \u001b[39m\u001b[32m/usr/lib/python3.12/ssl.py:1104\u001b[39m, in \u001b[36mSSLSocket.read\u001b[39m\u001b[34m(self, len, buffer)\u001b[39m\n\u001b[32m 1103\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m buffer \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[32m-> \u001b[39m\u001b[32m1104\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_sslobj\u001b[49m\u001b[43m.\u001b[49m\u001b[43mread\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mbuffer\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 1105\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n",
"\u001b[31mTimeoutError\u001b[39m: The read operation timed out",
"\nThe above exception was the direct cause of the following exception:\n",
"\u001b[31mReadTimeoutError\u001b[39m Traceback (most recent call last)",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/requests/adapters.py:667\u001b[39m, in \u001b[36mHTTPAdapter.send\u001b[39m\u001b[34m(self, request, stream, timeout, verify, cert, proxies)\u001b[39m\n\u001b[32m 666\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m--> \u001b[39m\u001b[32m667\u001b[39m resp = \u001b[43mconn\u001b[49m\u001b[43m.\u001b[49m\u001b[43murlopen\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 668\u001b[39m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m=\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m.\u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 669\u001b[39m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m=\u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 670\u001b[39m \u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[43m=\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m.\u001b[49m\u001b[43mbody\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 671\u001b[39m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[43m=\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m.\u001b[49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 672\u001b[39m \u001b[43m \u001b[49m\u001b[43mredirect\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[32m 673\u001b[39m \u001b[43m \u001b[49m\u001b[43massert_same_host\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[32m 674\u001b[39m \u001b[43m \u001b[49m\u001b[43mpreload_content\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[32m 675\u001b[39m \u001b[43m \u001b[49m\u001b[43mdecode_content\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m,\u001b[49m\n\u001b[32m 676\u001b[39m \u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mmax_retries\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 677\u001b[39m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m=\u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 678\u001b[39m \u001b[43m \u001b[49m\u001b[43mchunked\u001b[49m\u001b[43m=\u001b[49m\u001b[43mchunked\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 679\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 681\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m (ProtocolError, \u001b[38;5;167;01mOSError\u001b[39;00m) \u001b[38;5;28;01mas\u001b[39;00m err:\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/urllib3/connectionpool.py:841\u001b[39m, in \u001b[36mHTTPConnectionPool.urlopen\u001b[39m\u001b[34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)\u001b[39m\n\u001b[32m 839\u001b[39m new_e = ProtocolError(\u001b[33m\"\u001b[39m\u001b[33mConnection aborted.\u001b[39m\u001b[33m\"\u001b[39m, new_e)\n\u001b[32m--> \u001b[39m\u001b[32m841\u001b[39m retries = \u001b[43mretries\u001b[49m\u001b[43m.\u001b[49m\u001b[43mincrement\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 842\u001b[39m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43merror\u001b[49m\u001b[43m=\u001b[49m\u001b[43mnew_e\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m_pool\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m_stacktrace\u001b[49m\u001b[43m=\u001b[49m\u001b[43msys\u001b[49m\u001b[43m.\u001b[49m\u001b[43mexc_info\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m[\u001b[49m\u001b[32;43m2\u001b[39;49m\u001b[43m]\u001b[49m\n\u001b[32m 843\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 844\u001b[39m retries.sleep()\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/urllib3/util/retry.py:474\u001b[39m, in \u001b[36mRetry.increment\u001b[39m\u001b[34m(self, method, url, response, error, _pool, _stacktrace)\u001b[39m\n\u001b[32m 473\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m read \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mFalse\u001b[39;00m \u001b[38;5;129;01mor\u001b[39;00m method \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m._is_method_retryable(method):\n\u001b[32m--> \u001b[39m\u001b[32m474\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[43mreraise\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mtype\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43merror\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43merror\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m_stacktrace\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 475\u001b[39m \u001b[38;5;28;01melif\u001b[39;00m read \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/urllib3/util/util.py:39\u001b[39m, in \u001b[36mreraise\u001b[39m\u001b[34m(tp, value, tb)\u001b[39m\n\u001b[32m 38\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m value.with_traceback(tb)\n\u001b[32m---> \u001b[39m\u001b[32m39\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m value\n\u001b[32m 40\u001b[39m \u001b[38;5;28;01mfinally\u001b[39;00m:\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/urllib3/connectionpool.py:787\u001b[39m, in \u001b[36mHTTPConnectionPool.urlopen\u001b[39m\u001b[34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)\u001b[39m\n\u001b[32m 786\u001b[39m \u001b[38;5;66;03m# Make the request on the HTTPConnection object\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m787\u001b[39m response = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_make_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 788\u001b[39m \u001b[43m \u001b[49m\u001b[43mconn\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 789\u001b[39m \u001b[43m \u001b[49m\u001b[43mmethod\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 790\u001b[39m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 791\u001b[39m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m=\u001b[49m\u001b[43mtimeout_obj\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 792\u001b[39m \u001b[43m \u001b[49m\u001b[43mbody\u001b[49m\u001b[43m=\u001b[49m\u001b[43mbody\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 793\u001b[39m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[43m=\u001b[49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 794\u001b[39m \u001b[43m \u001b[49m\u001b[43mchunked\u001b[49m\u001b[43m=\u001b[49m\u001b[43mchunked\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 795\u001b[39m \u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[43m=\u001b[49m\u001b[43mretries\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 796\u001b[39m \u001b[43m \u001b[49m\u001b[43mresponse_conn\u001b[49m\u001b[43m=\u001b[49m\u001b[43mresponse_conn\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 797\u001b[39m \u001b[43m \u001b[49m\u001b[43mpreload_content\u001b[49m\u001b[43m=\u001b[49m\u001b[43mpreload_content\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 798\u001b[39m \u001b[43m \u001b[49m\u001b[43mdecode_content\u001b[49m\u001b[43m=\u001b[49m\u001b[43mdecode_content\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 799\u001b[39m \u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mresponse_kw\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 800\u001b[39m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 802\u001b[39m \u001b[38;5;66;03m# Everything went great!\u001b[39;00m\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/urllib3/connectionpool.py:536\u001b[39m, in \u001b[36mHTTPConnectionPool._make_request\u001b[39m\u001b[34m(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)\u001b[39m\n\u001b[32m 535\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m (BaseSSLError, \u001b[38;5;167;01mOSError\u001b[39;00m) \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[32m--> \u001b[39m\u001b[32m536\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_raise_timeout\u001b[49m\u001b[43m(\u001b[49m\u001b[43merr\u001b[49m\u001b[43m=\u001b[49m\u001b[43me\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m=\u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout_value\u001b[49m\u001b[43m=\u001b[49m\u001b[43mread_timeout\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 537\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/urllib3/connectionpool.py:367\u001b[39m, in \u001b[36mHTTPConnectionPool._raise_timeout\u001b[39m\u001b[34m(self, err, url, timeout_value)\u001b[39m\n\u001b[32m 366\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(err, SocketTimeout):\n\u001b[32m--> \u001b[39m\u001b[32m367\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m ReadTimeoutError(\n\u001b[32m 368\u001b[39m \u001b[38;5;28mself\u001b[39m, url, \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mRead timed out. (read timeout=\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mtimeout_value\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m)\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 369\u001b[39m ) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01merr\u001b[39;00m\n\u001b[32m 371\u001b[39m \u001b[38;5;66;03m# See the above comment about EAGAIN in Python 3.\u001b[39;00m\n",
"\u001b[31mReadTimeoutError\u001b[39m: HTTPSConnectionPool(host='router.huggingface.co', port=443): Read timed out. (read timeout=120)",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[31mReadTimeout\u001b[39m Traceback (most recent call last)",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/smolagents/agents.py:1642\u001b[39m, in \u001b[36mCodeAgent._step_stream\u001b[39m\u001b[34m(self, memory_step)\u001b[39m\n\u001b[32m 1641\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m-> \u001b[39m\u001b[32m1642\u001b[39m chat_message: ChatMessage = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m.\u001b[49m\u001b[43mgenerate\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 1643\u001b[39m \u001b[43m \u001b[49m\u001b[43minput_messages\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1644\u001b[39m \u001b[43m \u001b[49m\u001b[43mstop_sequences\u001b[49m\u001b[43m=\u001b[49m\u001b[43mstop_sequences\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1645\u001b[39m \u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43madditional_args\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1646\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 1647\u001b[39m memory_step.model_output_message = chat_message\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/smolagents/models.py:1434\u001b[39m, in \u001b[36mInferenceClientModel.generate\u001b[39m\u001b[34m(self, messages, stop_sequences, response_format, tools_to_call_from, **kwargs)\u001b[39m\n\u001b[32m 1433\u001b[39m \u001b[38;5;28mself\u001b[39m._apply_rate_limit()\n\u001b[32m-> \u001b[39m\u001b[32m1434\u001b[39m response = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mclient\u001b[49m\u001b[43m.\u001b[49m\u001b[43mchat_completion\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mcompletion_kwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 1436\u001b[39m \u001b[38;5;28mself\u001b[39m._last_input_token_count = response.usage.prompt_tokens\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/huggingface_hub/inference/_client.py:924\u001b[39m, in \u001b[36mInferenceClient.chat_completion\u001b[39m\u001b[34m(self, messages, model, stream, frequency_penalty, logit_bias, logprobs, max_tokens, n, presence_penalty, response_format, seed, stop, stream_options, temperature, tool_choice, tool_prompt, tools, top_logprobs, top_p, extra_body)\u001b[39m\n\u001b[32m 917\u001b[39m request_parameters = provider_helper.prepare_request(\n\u001b[32m 918\u001b[39m inputs=messages,\n\u001b[32m 919\u001b[39m parameters=parameters,\n\u001b[32m (...)\u001b[39m\u001b[32m 922\u001b[39m api_key=\u001b[38;5;28mself\u001b[39m.token,\n\u001b[32m 923\u001b[39m )\n\u001b[32m--> \u001b[39m\u001b[32m924\u001b[39m data = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_inner_post\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest_parameters\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[43m=\u001b[49m\u001b[43mstream\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 926\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m stream:\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/huggingface_hub/inference/_client.py:265\u001b[39m, in \u001b[36mInferenceClient._inner_post\u001b[39m\u001b[34m(self, request_parameters, stream)\u001b[39m\n\u001b[32m 264\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m--> \u001b[39m\u001b[32m265\u001b[39m response = \u001b[43mget_session\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m.\u001b[49m\u001b[43mpost\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 266\u001b[39m \u001b[43m \u001b[49m\u001b[43mrequest_parameters\u001b[49m\u001b[43m.\u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 267\u001b[39m \u001b[43m \u001b[49m\u001b[43mjson\u001b[49m\u001b[43m=\u001b[49m\u001b[43mrequest_parameters\u001b[49m\u001b[43m.\u001b[49m\u001b[43mjson\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 268\u001b[39m \u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m=\u001b[49m\u001b[43mdata_as_binary\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 269\u001b[39m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[43m=\u001b[49m\u001b[43mrequest_parameters\u001b[49m\u001b[43m.\u001b[49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 270\u001b[39m \u001b[43m \u001b[49m\u001b[43mcookies\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mcookies\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 271\u001b[39m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 272\u001b[39m \u001b[43m \u001b[49m\u001b[43mstream\u001b[49m\u001b[43m=\u001b[49m\u001b[43mstream\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 273\u001b[39m \u001b[43m \u001b[49m\u001b[43mproxies\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mproxies\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 274\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 275\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mTimeoutError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m error:\n\u001b[32m 276\u001b[39m \u001b[38;5;66;03m# Convert any `TimeoutError` to a `InferenceTimeoutError`\u001b[39;00m\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/requests/sessions.py:637\u001b[39m, in \u001b[36mSession.post\u001b[39m\u001b[34m(self, url, data, json, **kwargs)\u001b[39m\n\u001b[32m 627\u001b[39m \u001b[38;5;250m\u001b[39m\u001b[33mr\u001b[39m\u001b[33;03m\"\"\"Sends a POST request. Returns :class:`Response` object.\u001b[39;00m\n\u001b[32m 628\u001b[39m \n\u001b[32m 629\u001b[39m \u001b[33;03m:param url: URL for the new :class:`Request` object.\u001b[39;00m\n\u001b[32m (...)\u001b[39m\u001b[32m 634\u001b[39m \u001b[33;03m:rtype: requests.Response\u001b[39;00m\n\u001b[32m 635\u001b[39m \u001b[33;03m\"\"\"\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m637\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mPOST\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdata\u001b[49m\u001b[43m=\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mjson\u001b[49m\u001b[43m=\u001b[49m\u001b[43mjson\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/requests/sessions.py:589\u001b[39m, in \u001b[36mSession.request\u001b[39m\u001b[34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[39m\n\u001b[32m 588\u001b[39m send_kwargs.update(settings)\n\u001b[32m--> \u001b[39m\u001b[32m589\u001b[39m resp = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprep\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43msend_kwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 591\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m resp\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/requests/sessions.py:703\u001b[39m, in \u001b[36mSession.send\u001b[39m\u001b[34m(self, request, **kwargs)\u001b[39m\n\u001b[32m 702\u001b[39m \u001b[38;5;66;03m# Send the request\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m703\u001b[39m r = \u001b[43madapter\u001b[49m\u001b[43m.\u001b[49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 705\u001b[39m \u001b[38;5;66;03m# Total elapsed time of the request (approximately)\u001b[39;00m\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/huggingface_hub/utils/_http.py:96\u001b[39m, in \u001b[36mUniqueRequestIdAdapter.send\u001b[39m\u001b[34m(self, request, *args, **kwargs)\u001b[39m\n\u001b[32m 95\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m---> \u001b[39m\u001b[32m96\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m.\u001b[49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 97\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m requests.RequestException \u001b[38;5;28;01mas\u001b[39;00m e:\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/requests/adapters.py:713\u001b[39m, in \u001b[36mHTTPAdapter.send\u001b[39m\u001b[34m(self, request, stream, timeout, verify, cert, proxies)\u001b[39m\n\u001b[32m 712\u001b[39m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(e, ReadTimeoutError):\n\u001b[32m--> \u001b[39m\u001b[32m713\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m ReadTimeout(e, request=request)\n\u001b[32m 714\u001b[39m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(e, _InvalidHeader):\n",
"\u001b[31mReadTimeout\u001b[39m: (ReadTimeoutError(\"HTTPSConnectionPool(host='router.huggingface.co', port=443): Read timed out. (read timeout=120)\"), '(Request ID: a4dbb91d-dd83-4e56-bf21-b3fe6d74a2dc)')",
"\nThe above exception was the direct cause of the following exception:\n",
"\u001b[31mAgentGenerationError\u001b[39m Traceback (most recent call last)",
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[24]\u001b[39m\u001b[32m, line 14\u001b[39m\n\u001b[32m 6\u001b[39m \u001b[38;5;28;01mwith\u001b[39;00m ToolCollection.from_mcp(\n\u001b[32m 7\u001b[39m {\u001b[33m\"\u001b[39m\u001b[33murl\u001b[39m\u001b[33m\"\u001b[39m: mcp_url, \u001b[33m\"\u001b[39m\u001b[33mtransport\u001b[39m\u001b[33m\"\u001b[39m: \u001b[33m\"\u001b[39m\u001b[33msse\u001b[39m\u001b[33m\"\u001b[39m},\n\u001b[32m 8\u001b[39m trust_remote_code=\u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[32m 9\u001b[39m ) \u001b[38;5;28;01mas\u001b[39;00m tc:\n\u001b[32m 10\u001b[39m agent = CodeAgent(\n\u001b[32m 11\u001b[39m tools=[*tc.tools],\n\u001b[32m 12\u001b[39m model=model,\n\u001b[32m 13\u001b[39m )\n\u001b[32m---> \u001b[39m\u001b[32m14\u001b[39m \u001b[38;5;28mprint\u001b[39m(\u001b[43magent\u001b[49m\u001b[43m.\u001b[49m\u001b[43mrun\u001b[49m\u001b[43m(\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mHow many R\u001b[39;49m\u001b[33;43m'\u001b[39;49m\u001b[33;43ms in the word strawberry?\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m)\u001b[49m)\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/smolagents/agents.py:467\u001b[39m, in \u001b[36mMultiStepAgent.run\u001b[39m\u001b[34m(self, task, stream, reset, images, additional_args, max_steps)\u001b[39m\n\u001b[32m 464\u001b[39m run_start_time = time.time()\n\u001b[32m 465\u001b[39m \u001b[38;5;66;03m# Outputs are returned only at the end. We only look at the last step.\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m467\u001b[39m steps = \u001b[38;5;28;43mlist\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_run_stream\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtask\u001b[49m\u001b[43m=\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mtask\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmax_steps\u001b[49m\u001b[43m=\u001b[49m\u001b[43mmax_steps\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mimages\u001b[49m\u001b[43m=\u001b[49m\u001b[43mimages\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 468\u001b[39m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(steps[-\u001b[32m1\u001b[39m], FinalAnswerStep)\n\u001b[32m 469\u001b[39m output = steps[-\u001b[32m1\u001b[39m].output\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/smolagents/agents.py:561\u001b[39m, in \u001b[36mMultiStepAgent._run_stream\u001b[39m\u001b[34m(self, task, max_steps, images)\u001b[39m\n\u001b[32m 557\u001b[39m action_step.is_final_answer = \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[32m 559\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m AgentGenerationError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[32m 560\u001b[39m \u001b[38;5;66;03m# Agent generation errors are not caused by a Model error but an implementation error: so we should raise them and exit.\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m561\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m e\n\u001b[32m 562\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m AgentError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[32m 563\u001b[39m \u001b[38;5;66;03m# Other AgentError types are caused by the Model, so we should log them and iterate.\u001b[39;00m\n\u001b[32m 564\u001b[39m action_step.error = e\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/smolagents/agents.py:543\u001b[39m, in \u001b[36mMultiStepAgent._run_stream\u001b[39m\u001b[34m(self, task, max_steps, images)\u001b[39m\n\u001b[32m 541\u001b[39m \u001b[38;5;28mself\u001b[39m.logger.log_rule(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mStep \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m.step_number\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m, level=LogLevel.INFO)\n\u001b[32m 542\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m--> \u001b[39m\u001b[32m543\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43moutput\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_step_stream\u001b[49m\u001b[43m(\u001b[49m\u001b[43maction_step\u001b[49m\u001b[43m)\u001b[49m\u001b[43m:\u001b[49m\n\u001b[32m 544\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;66;43;03m# Yield all\u001b[39;49;00m\n\u001b[32m 545\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43;01myield\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43moutput\u001b[49m\n\u001b[32m 547\u001b[39m \u001b[43m \u001b[49m\u001b[38;5;28;43;01mif\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[38;5;28;43misinstance\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43moutput\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mActionOutput\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01mand\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43moutput\u001b[49m\u001b[43m.\u001b[49m\u001b[43mis_final_answer\u001b[49m\u001b[43m:\u001b[49m\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/hf/sayshara/letter_counter/.venv/lib/python3.12/site-packages/smolagents/agents.py:1664\u001b[39m, in \u001b[36mCodeAgent._step_stream\u001b[39m\u001b[34m(self, memory_step)\u001b[39m\n\u001b[32m 1662\u001b[39m memory_step.model_output = output_text\n\u001b[32m 1663\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[32m-> \u001b[39m\u001b[32m1664\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m AgentGenerationError(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mError in generating model output:\u001b[39m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00me\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m, \u001b[38;5;28mself\u001b[39m.logger) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01me\u001b[39;00m\n\u001b[32m 1666\u001b[39m \u001b[38;5;66;03m### Parse output ###\u001b[39;00m\n\u001b[32m 1667\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n",
"\u001b[31mAgentGenerationError\u001b[39m: Error in generating model output:\n(ReadTimeoutError(\"HTTPSConnectionPool(host='router.huggingface.co', port=443): Read timed out. (read timeout=120)\"), '(Request ID: a4dbb91d-dd83-4e56-bf21-b3fe6d74a2dc)')"
]
}
],
"source": [
"from smolagents import ToolCollection, CodeAgent, InferenceClientModel\n",
"\n",
"model = InferenceClientModel(\"HuggingFaceTB/SmolLM3-3B\")\n",
"mcp_url = \"https://sayshara-letter-counter.hf.space/gradio_api/mcp/sse\"\n",
"\n",
"with ToolCollection.from_mcp(\n",
" {\"url\": mcp_url, \"transport\": \"sse\"},\n",
" trust_remote_code=True\n",
") as tc:\n",
" agent = CodeAgent(\n",
" tools=[*tc.tools],\n",
" model=model,\n",
" )\n",
" print(agent.run(\"How many R's in the word strawberry?\"))\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}