Skip to content

Commit c134c0c

Browse files
authored
Merge branch 'main' into marco/langchain-workshop
2 parents ff4dd37 + 16cf9d3 commit c134c0c

File tree

7 files changed

+1780
-13
lines changed

7 files changed

+1780
-13
lines changed

.vscode/settings.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"mdb.presetConnections": [
3+
{
4+
"name": "mongodb:27017",
5+
"connectionString": "mongodb://admin:mongodb@localhost:27017"
6+
}
7+
]
8+
}

notebooks/ai-agents-lab.ipynb

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,29 @@
2828
},
2929
{
3030
"cell_type": "code",
31-
"execution_count": null,
32-
"metadata": {},
33-
"outputs": [],
31+
"execution_count": 2,
32+
"metadata": {},
33+
"outputs": [
34+
{
35+
"ename": "ServerSelectionTimeoutError",
36+
"evalue": "localhost:27017: [Errno 61] Connection refused (configured timeouts: socketTimeoutMS: 20000.0ms, connectTimeoutMS: 20000.0ms), Timeout: 30s, Topology Description: <TopologyDescription id: 684afbede5776620b1cb0429, topology_type: Unknown, servers: [<ServerDescription ('localhost', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('localhost:27017: [Errno 61] Connection refused (configured timeouts: socketTimeoutMS: 20000.0ms, connectTimeoutMS: 20000.0ms)')>]>",
37+
"output_type": "error",
38+
"traceback": [
39+
"\u001b[31m---------------------------------------------------------------------------\u001b[39m",
40+
"\u001b[31mServerSelectionTimeoutError\u001b[39m Traceback (most recent call last)",
41+
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[2]\u001b[39m\u001b[32m, line 6\u001b[39m\n\u001b[32m 4\u001b[39m mongodb_client = MongoClient(MONGODB_URI)\n\u001b[32m 5\u001b[39m \u001b[38;5;66;03m# Check the connection to the server\u001b[39;00m\n\u001b[32m----> \u001b[39m\u001b[32m6\u001b[39m \u001b[43mmongodb_client\u001b[49m\u001b[43m.\u001b[49m\u001b[43madmin\u001b[49m\u001b[43m.\u001b[49m\u001b[43mcommand\u001b[49m\u001b[43m(\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mping\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n",
42+
"\u001b[36mFile \u001b[39m\u001b[32m~/Projects/genai-devday-notebooks-amsterdam/venv/lib/python3.11/site-packages/pymongo/_csot.py:119\u001b[39m, in \u001b[36mapply.<locals>.csot_wrapper\u001b[39m\u001b[34m(self, *args, **kwargs)\u001b[39m\n\u001b[32m 117\u001b[39m \u001b[38;5;28;01mwith\u001b[39;00m _TimeoutContext(timeout):\n\u001b[32m 118\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m func(\u001b[38;5;28mself\u001b[39m, *args, **kwargs)\n\u001b[32m--> \u001b[39m\u001b[32m119\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;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",
43+
"\u001b[36mFile \u001b[39m\u001b[32m~/Projects/genai-devday-notebooks-amsterdam/venv/lib/python3.11/site-packages/pymongo/synchronous/database.py:926\u001b[39m, in \u001b[36mDatabase.command\u001b[39m\u001b[34m(self, command, value, check, allowable_errors, read_preference, codec_options, session, comment, **kwargs)\u001b[39m\n\u001b[32m 924\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m read_preference \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[32m 925\u001b[39m read_preference = (session \u001b[38;5;129;01mand\u001b[39;00m session._txn_read_preference()) \u001b[38;5;129;01mor\u001b[39;00m ReadPreference.PRIMARY\n\u001b[32m--> \u001b[39m\u001b[32m926\u001b[39m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_client\u001b[49m\u001b[43m.\u001b[49m\u001b[43m_conn_for_reads\u001b[49m\u001b[43m(\u001b[49m\u001b[43mread_preference\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msession\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43moperation\u001b[49m\u001b[43m=\u001b[49m\u001b[43mcommand_name\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mas\u001b[39;00m (\n\u001b[32m 927\u001b[39m connection,\n\u001b[32m 928\u001b[39m read_preference,\n\u001b[32m 929\u001b[39m ):\n\u001b[32m 930\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m._command(\n\u001b[32m 931\u001b[39m connection,\n\u001b[32m 932\u001b[39m command,\n\u001b[32m (...)\u001b[39m\u001b[32m 939\u001b[39m **kwargs,\n\u001b[32m 940\u001b[39m )\n",
44+
"\u001b[36mFile \u001b[39m\u001b[32m~/Projects/genai-devday-notebooks-amsterdam/venv/lib/python3.11/site-packages/pymongo/synchronous/mongo_client.py:1699\u001b[39m, in \u001b[36mMongoClient._conn_for_reads\u001b[39m\u001b[34m(self, read_preference, session, operation)\u001b[39m\n\u001b[32m 1692\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m_conn_for_reads\u001b[39m(\n\u001b[32m 1693\u001b[39m \u001b[38;5;28mself\u001b[39m,\n\u001b[32m 1694\u001b[39m read_preference: _ServerMode,\n\u001b[32m 1695\u001b[39m session: Optional[ClientSession],\n\u001b[32m 1696\u001b[39m operation: \u001b[38;5;28mstr\u001b[39m,\n\u001b[32m 1697\u001b[39m ) -> ContextManager[\u001b[38;5;28mtuple\u001b[39m[Connection, _ServerMode]]:\n\u001b[32m 1698\u001b[39m \u001b[38;5;28;01massert\u001b[39;00m read_preference \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m, \u001b[33m\"\u001b[39m\u001b[33mread_preference must not be None\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m-> \u001b[39m\u001b[32m1699\u001b[39m server = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_select_server\u001b[49m\u001b[43m(\u001b[49m\u001b[43mread_preference\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msession\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43moperation\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 1700\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m._conn_from_server(read_preference, server, session)\n",
45+
"\u001b[36mFile \u001b[39m\u001b[32m~/Projects/genai-devday-notebooks-amsterdam/venv/lib/python3.11/site-packages/pymongo/synchronous/mongo_client.py:1647\u001b[39m, in \u001b[36mMongoClient._select_server\u001b[39m\u001b[34m(self, server_selector, session, operation, address, deprioritized_servers, operation_id)\u001b[39m\n\u001b[32m 1645\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m AutoReconnect(\u001b[33m\"\u001b[39m\u001b[33mserver \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[33m:\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[33m no longer available\u001b[39m\u001b[33m\"\u001b[39m % address) \u001b[38;5;66;03m# noqa: UP031\u001b[39;00m\n\u001b[32m 1646\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m-> \u001b[39m\u001b[32m1647\u001b[39m server = \u001b[43mtopology\u001b[49m\u001b[43m.\u001b[49m\u001b[43mselect_server\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 1648\u001b[39m \u001b[43m \u001b[49m\u001b[43mserver_selector\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1649\u001b[39m \u001b[43m \u001b[49m\u001b[43moperation\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1650\u001b[39m \u001b[43m \u001b[49m\u001b[43mdeprioritized_servers\u001b[49m\u001b[43m=\u001b[49m\u001b[43mdeprioritized_servers\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1651\u001b[39m \u001b[43m \u001b[49m\u001b[43moperation_id\u001b[49m\u001b[43m=\u001b[49m\u001b[43moperation_id\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 1652\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 1653\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m server\n\u001b[32m 1654\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m PyMongoError \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[32m 1655\u001b[39m \u001b[38;5;66;03m# Server selection errors in a transaction are transient.\u001b[39;00m\n",
46+
"\u001b[36mFile \u001b[39m\u001b[32m~/Projects/genai-devday-notebooks-amsterdam/venv/lib/python3.11/site-packages/pymongo/synchronous/topology.py:401\u001b[39m, in \u001b[36mTopology.select_server\u001b[39m\u001b[34m(self, selector, operation, server_selection_timeout, address, deprioritized_servers, operation_id)\u001b[39m\n\u001b[32m 391\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mselect_server\u001b[39m(\n\u001b[32m 392\u001b[39m \u001b[38;5;28mself\u001b[39m,\n\u001b[32m 393\u001b[39m selector: Callable[[Selection], Selection],\n\u001b[32m (...)\u001b[39m\u001b[32m 398\u001b[39m operation_id: Optional[\u001b[38;5;28mint\u001b[39m] = \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[32m 399\u001b[39m ) -> Server:\n\u001b[32m 400\u001b[39m \u001b[38;5;250m \u001b[39m\u001b[33;03m\"\"\"Like select_servers, but choose a random server if several match.\"\"\"\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m401\u001b[39m server = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_select_server\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 402\u001b[39m \u001b[43m \u001b[49m\u001b[43mselector\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 403\u001b[39m \u001b[43m \u001b[49m\u001b[43moperation\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 404\u001b[39m \u001b[43m \u001b[49m\u001b[43mserver_selection_timeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 405\u001b[39m \u001b[43m \u001b[49m\u001b[43maddress\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 406\u001b[39m \u001b[43m \u001b[49m\u001b[43mdeprioritized_servers\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 407\u001b[39m \u001b[43m \u001b[49m\u001b[43moperation_id\u001b[49m\u001b[43m=\u001b[49m\u001b[43moperation_id\u001b[49m\u001b[43m,\u001b[49m\n\u001b[32m 408\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 409\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m _csot.get_timeout():\n\u001b[32m 410\u001b[39m _csot.set_rtt(server.description.min_round_trip_time)\n",
47+
"\u001b[36mFile \u001b[39m\u001b[32m~/Projects/genai-devday-notebooks-amsterdam/venv/lib/python3.11/site-packages/pymongo/synchronous/topology.py:379\u001b[39m, in \u001b[36mTopology._select_server\u001b[39m\u001b[34m(self, selector, operation, server_selection_timeout, address, deprioritized_servers, operation_id)\u001b[39m\n\u001b[32m 370\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m_select_server\u001b[39m(\n\u001b[32m 371\u001b[39m \u001b[38;5;28mself\u001b[39m,\n\u001b[32m 372\u001b[39m selector: Callable[[Selection], Selection],\n\u001b[32m (...)\u001b[39m\u001b[32m 377\u001b[39m operation_id: Optional[\u001b[38;5;28mint\u001b[39m] = \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[32m 378\u001b[39m ) -> Server:\n\u001b[32m--> \u001b[39m\u001b[32m379\u001b[39m servers = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mselect_servers\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 380\u001b[39m \u001b[43m \u001b[49m\u001b[43mselector\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43moperation\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mserver_selection_timeout\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maddress\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43moperation_id\u001b[49m\n\u001b[32m 381\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 382\u001b[39m servers = _filter_servers(servers, deprioritized_servers)\n\u001b[32m 383\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(servers) == \u001b[32m1\u001b[39m:\n",
48+
"\u001b[36mFile \u001b[39m\u001b[32m~/Projects/genai-devday-notebooks-amsterdam/venv/lib/python3.11/site-packages/pymongo/synchronous/topology.py:286\u001b[39m, in \u001b[36mTopology.select_servers\u001b[39m\u001b[34m(self, selector, operation, server_selection_timeout, address, operation_id)\u001b[39m\n\u001b[32m 283\u001b[39m server_timeout = server_selection_timeout\n\u001b[32m 285\u001b[39m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m._lock:\n\u001b[32m--> \u001b[39m\u001b[32m286\u001b[39m server_descriptions = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_select_servers_loop\u001b[49m\u001b[43m(\u001b[49m\n\u001b[32m 287\u001b[39m \u001b[43m \u001b[49m\u001b[43mselector\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mserver_timeout\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43moperation\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43moperation_id\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maddress\u001b[49m\n\u001b[32m 288\u001b[39m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 290\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m [\n\u001b[32m 291\u001b[39m cast(Server, \u001b[38;5;28mself\u001b[39m.get_server_by_address(sd.address)) \u001b[38;5;28;01mfor\u001b[39;00m sd \u001b[38;5;129;01min\u001b[39;00m server_descriptions\n\u001b[32m 292\u001b[39m ]\n",
49+
"\u001b[36mFile \u001b[39m\u001b[32m~/Projects/genai-devday-notebooks-amsterdam/venv/lib/python3.11/site-packages/pymongo/synchronous/topology.py:336\u001b[39m, in \u001b[36mTopology._select_servers_loop\u001b[39m\u001b[34m(self, selector, timeout, operation, operation_id, address)\u001b[39m\n\u001b[32m 325\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m _SERVER_SELECTION_LOGGER.isEnabledFor(logging.DEBUG):\n\u001b[32m 326\u001b[39m _debug_log(\n\u001b[32m 327\u001b[39m _SERVER_SELECTION_LOGGER,\n\u001b[32m 328\u001b[39m message=_ServerSelectionStatusMessage.FAILED,\n\u001b[32m (...)\u001b[39m\u001b[32m 334\u001b[39m failure=\u001b[38;5;28mself\u001b[39m._error_message(selector),\n\u001b[32m 335\u001b[39m )\n\u001b[32m--> \u001b[39m\u001b[32m336\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m ServerSelectionTimeoutError(\n\u001b[32m 337\u001b[39m \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m._error_message(selector)\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m, Timeout: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mtimeout\u001b[38;5;132;01m}\u001b[39;00m\u001b[33ms, Topology Description: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m.description\u001b[38;5;132;01m!r}\u001b[39;00m\u001b[33m\"\u001b[39m\n\u001b[32m 338\u001b[39m )\n\u001b[32m 340\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m logged_waiting:\n\u001b[32m 341\u001b[39m _debug_log(\n\u001b[32m 342\u001b[39m _SERVER_SELECTION_LOGGER,\n\u001b[32m 343\u001b[39m message=_ServerSelectionStatusMessage.WAITING,\n\u001b[32m (...)\u001b[39m\u001b[32m 349\u001b[39m remainingTimeMS=\u001b[38;5;28mint\u001b[39m(end_time - time.monotonic()),\n\u001b[32m 350\u001b[39m )\n",
50+
"\u001b[31mServerSelectionTimeoutError\u001b[39m: localhost:27017: [Errno 61] Connection refused (configured timeouts: socketTimeoutMS: 20000.0ms, connectTimeoutMS: 20000.0ms), Timeout: 30s, Topology Description: <TopologyDescription id: 684afbede5776620b1cb0429, topology_type: Unknown, servers: [<ServerDescription ('localhost', 27017) server_type: Unknown, rtt: None, error=AutoReconnect('localhost:27017: [Errno 61] Connection refused (configured timeouts: socketTimeoutMS: 20000.0ms, connectTimeoutMS: 20000.0ms)')>]>"
51+
]
52+
}
53+
],
3454
"source": [
3555
"# If you are using your own MongoDB Atlas cluster, use the connection string for your cluster here\n",
3656
"MONGODB_URI = os.environ.get(\"MONGODB_URI\")\n",

notebooks/ai-rag-lab.ipynb

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
"cell_type": "markdown",
5252
"metadata": {},
5353
"source": [
54-
"# Step 2: Download the dataset"
54+
"# Step 2: Load the dataset"
5555
]
5656
},
5757
{
@@ -60,9 +60,7 @@
6060
"metadata": {},
6161
"outputs": [],
6262
"source": [
63-
"# You may see a warning upon running this cell. You can ignore it.\n",
64-
"import pandas as pd\n",
65-
"from datasets import load_dataset"
63+
"import json"
6664
]
6765
},
6866
{
@@ -71,10 +69,10 @@
7169
"metadata": {},
7270
"outputs": [],
7371
"source": [
74-
"# Download the `mongodb-docs` dataset from Hugging Face\n",
75-
"data = load_dataset(\"mongodb/mongodb-docs\", split=\"train\")\n",
76-
"# Convert the dataset into a dataframe first, then into a list of Python objects/dictionaries\n",
77-
"docs = pd.DataFrame(data).to_dict(\"records\")"
72+
"with open(\"../data/mongodb_docs.json\", \"r\") as data_file:\n",
73+
" json_data = data_file.read()\n",
74+
"\n",
75+
"docs = json.loads(json_data)"
7876
]
7977
},
8078
{
@@ -177,7 +175,7 @@
177175
" chunked_data = []\n",
178176
" for chunk in chunks:\n",
179177
" temp = doc.copy()\n",
180-
" temp[text_field]=chunk\n",
178+
" temp[text_field] = chunk\n",
181179
" chunked_data.append(temp)\n",
182180
"\n",
183181
" return chunked_data"
50.2 KB
Loading

notebooks/images/hil_v2.png

34.3 KB
Loading

0 commit comments

Comments
 (0)