diff --git a/MyIA.AI.Notebooks/ML/DataScienceWithAgents/Track1-LangChain/Day3-Data-Agents/Labs/Lab6-First-Agent/Lab6-First-Agent.ipynb b/MyIA.AI.Notebooks/ML/DataScienceWithAgents/Track1-LangChain/Day3-Data-Agents/Labs/Lab6-First-Agent/Lab6-First-Agent.ipynb index a58e219e7a..d8c2077c7b 100644 --- a/MyIA.AI.Notebooks/ML/DataScienceWithAgents/Track1-LangChain/Day3-Data-Agents/Labs/Lab6-First-Agent/Lab6-First-Agent.ipynb +++ b/MyIA.AI.Notebooks/ML/DataScienceWithAgents/Track1-LangChain/Day3-Data-Agents/Labs/Lab6-First-Agent/Lab6-First-Agent.ipynb @@ -5,17 +5,18 @@ "id": "47521b10", "metadata": { "papermill": { - "duration": 0.006113, - "end_time": "2026-09-23T14:36:34.272624+00:00", + "duration": 0.005, + "end_time": "2026-09-25T04:29:14.538884", "exception": false, - "start_time": "2026-09-23T14:36:34.266511+00:00", + "start_time": "2026-09-25T04:29:14.533884", "status": "completed" }, "tags": [] }, "source": [ - "**Navigation** : [Index](../../../../README.md) | [<< Lab5](../Lab5-Viz-ML/Lab5-Viz-ML.ipynb) | [Lab7 >>](../Lab7-Data-Analysis-Agent/Lab7-Data-Analysis-Agent.ipynb)\n", - "# Lab 6 - Anatomie de votre premier Agent d'IA" + "# Lab 6 - Anatomie de votre premier Agent d'IA\n", + "\n", + "**Navigation** : [Lab 5 <<](../Lab5-Viz-ML/Lab5-Viz-ML.ipynb) | [Index](../../README.md) | [Lab 7 >>](../Lab7-Data-Analysis-Agent/Lab7-Data-Analysis-Agent.ipynb)\n" ] }, { @@ -23,19 +24,15 @@ "id": "af749b29", "metadata": { "papermill": { - "duration": 0.004237, - "end_time": "2026-09-23T14:36:34.281592+00:00", + "duration": 0.003516, + "end_time": "2026-09-25T04:29:14.549671", "exception": false, - "start_time": "2026-09-23T14:36:34.277355+00:00", + "start_time": "2026-09-25T04:29:14.546155", "status": "completed" }, "tags": [] }, "source": [ - "## Lab 6 - Anatomie de votre premier Agent d'IA\n", - "\n", - "**Navigation** : [Lab 5 <<](../Lab5-Viz-ML/Lab5-Viz-ML.ipynb) | [Index](../../README.md) | [>> Lab 7](../Lab7-Data-Analysis-Agent/Lab7-Data-Analysis-Agent.ipynb)\n", - "\n", "## Objectifs d'apprentissage\n", "\n", "A la fin de ce laboratoire, vous saurez :\n", @@ -59,10 +56,10 @@ "id": "3e42bf33", "metadata": { "papermill": { - "duration": 0.003879, - "end_time": "2026-09-23T14:36:34.290330+00:00", + "duration": 0.003, + "end_time": "2026-09-25T04:29:14.555844", "exception": false, - "start_time": "2026-09-23T14:36:34.286451+00:00", + "start_time": "2026-09-25T04:29:14.552844", "status": "completed" }, "tags": [] @@ -76,10 +73,10 @@ "id": "f7e61a57", "metadata": { "papermill": { - "duration": 0.004227, - "end_time": "2026-09-23T14:36:34.298799+00:00", + "duration": 0.004657, + "end_time": "2026-09-25T04:29:14.563827", "exception": false, - "start_time": "2026-09-23T14:36:34.294572+00:00", + "start_time": "2026-09-25T04:29:14.559170", "status": "completed" }, "tags": [] @@ -93,10 +90,10 @@ "id": "ff4efbf5", "metadata": { "papermill": { - "duration": 0.005947, - "end_time": "2026-09-23T14:36:34.308795+00:00", + "duration": 0.003658, + "end_time": "2026-09-25T04:29:14.571162", "exception": false, - "start_time": "2026-09-23T14:36:34.302848+00:00", + "start_time": "2026-09-25T04:29:14.567504", "status": "completed" }, "tags": [] @@ -111,16 +108,16 @@ "id": "1e0aecc4", "metadata": { "execution": { - "iopub.execute_input": "2026-09-23T14:36:34.322099Z", - "iopub.status.busy": "2026-09-23T14:36:34.321544Z", - "iopub.status.idle": "2026-09-23T14:36:38.813816Z", - "shell.execute_reply": "2026-09-23T14:36:38.812318Z" + "iopub.execute_input": "2026-09-25T04:29:14.580649Z", + "iopub.status.busy": "2026-09-25T04:29:14.580649Z", + "iopub.status.idle": "2026-09-25T04:29:16.795667Z", + "shell.execute_reply": "2026-09-25T04:29:16.794595Z" }, "papermill": { - "duration": 4.499827, - "end_time": "2026-09-23T14:36:38.815091+00:00", + "duration": 2.221882, + "end_time": "2026-09-25T04:29:16.796749", "exception": false, - "start_time": "2026-09-23T14:36:34.315264+00:00", + "start_time": "2026-09-25T04:29:14.574867", "status": "completed" }, "tags": [] @@ -140,10 +137,10 @@ "id": "945ba2ba", "metadata": { "papermill": { - "duration": 0.004996, - "end_time": "2026-09-23T14:36:38.824820+00:00", + "duration": 0.002964, + "end_time": "2026-09-25T04:29:16.804323", "exception": false, - "start_time": "2026-09-23T14:36:38.819824+00:00", + "start_time": "2026-09-25T04:29:16.801359", "status": "completed" }, "tags": [] @@ -157,10 +154,10 @@ "id": "3b4f0fad", "metadata": { "papermill": { - "duration": 0.003797, - "end_time": "2026-09-23T14:36:38.832903+00:00", + "duration": 0.004776, + "end_time": "2026-09-25T04:29:16.813361", "exception": false, - "start_time": "2026-09-23T14:36:38.829106+00:00", + "start_time": "2026-09-25T04:29:16.808585", "status": "completed" }, "tags": [] @@ -177,16 +174,16 @@ "id": "38cf4cd1", "metadata": { "execution": { - "iopub.execute_input": "2026-09-23T14:36:38.844240Z", - "iopub.status.busy": "2026-09-23T14:36:38.843387Z", - "iopub.status.idle": "2026-09-23T14:36:38.855856Z", - "shell.execute_reply": "2026-09-23T14:36:38.854346Z" + "iopub.execute_input": "2026-09-25T04:29:16.825785Z", + "iopub.status.busy": "2026-09-25T04:29:16.825206Z", + "iopub.status.idle": "2026-09-25T04:29:16.834237Z", + "shell.execute_reply": "2026-09-25T04:29:16.833231Z" }, "papermill": { - "duration": 0.019756, - "end_time": "2026-09-23T14:36:38.857029+00:00", + "duration": 0.014293, + "end_time": "2026-09-25T04:29:16.835271", "exception": false, - "start_time": "2026-09-23T14:36:38.837273+00:00", + "start_time": "2026-09-25T04:29:16.820978", "status": "completed" }, "tags": [] @@ -207,10 +204,10 @@ "id": "6542e83c", "metadata": { "papermill": { - "duration": 0.00341, - "end_time": "2026-09-23T14:36:38.864130+00:00", + "duration": 0.005767, + "end_time": "2026-09-25T04:29:16.846857", "exception": false, - "start_time": "2026-09-23T14:36:38.860720+00:00", + "start_time": "2026-09-25T04:29:16.841090", "status": "completed" }, "tags": [] @@ -224,10 +221,10 @@ "id": "cbcf2fce", "metadata": { "papermill": { - "duration": 0.003122, - "end_time": "2026-09-23T14:36:38.872033+00:00", + "duration": 0.004621, + "end_time": "2026-09-25T04:29:16.857073", "exception": false, - "start_time": "2026-09-23T14:36:38.868911+00:00", + "start_time": "2026-09-25T04:29:16.852452", "status": "completed" }, "tags": [] @@ -242,16 +239,16 @@ "id": "cdd296c8", "metadata": { "execution": { - "iopub.execute_input": "2026-09-23T14:36:38.881975Z", - "iopub.status.busy": "2026-09-23T14:36:38.881515Z", - "iopub.status.idle": "2026-09-23T14:36:39.010927Z", - "shell.execute_reply": "2026-09-23T14:36:39.009017Z" + "iopub.execute_input": "2026-09-25T04:29:16.869244Z", + "iopub.status.busy": "2026-09-25T04:29:16.868714Z", + "iopub.status.idle": "2026-09-25T04:29:16.986933Z", + "shell.execute_reply": "2026-09-25T04:29:16.986419Z" }, "papermill": { - "duration": 0.136094, - "end_time": "2026-09-23T14:36:39.012427+00:00", + "duration": 0.123831, + "end_time": "2026-09-25T04:29:16.986933", "exception": false, - "start_time": "2026-09-23T14:36:38.876333+00:00", + "start_time": "2026-09-25T04:29:16.863102", "status": "completed" }, "tags": [] @@ -280,21 +277,30 @@ }, { "cell_type": "markdown", - "metadata": {}, + "id": "37a3f099-783f-4cea-ba61-137b35bd32a1", + "metadata": { + "papermill": { + "duration": 0.002585, + "end_time": "2026-09-25T04:29:16.995824", + "exception": false, + "start_time": "2026-09-25T04:29:16.993239", + "status": "completed" + }, + "tags": [] + }, "source": [ "**Lecture ancrée** : Le template, verbatim du code : `(\"system\", \"You are a helpful assistant. Use the tools available to help the user.\")` puis `MessagesPlaceholder(\"messages\")` — la sortie confirme « Prompt REACT configure avec ChatPromptTemplate ». Structure fixe (le rôle système, qui ordonne d'utiliser les outils) + slot variable (l'historique des messages) : LangGraph injectera la conversation dans le slot à chaque tour de la boucle REACT." - ], - "id": "37a3f099-783f-4cea-ba61-137b35bd32a1" + ] }, { "cell_type": "markdown", "id": "2ab21f9e", "metadata": { "papermill": { - "duration": 0.00342, - "end_time": "2026-09-23T14:36:39.020292+00:00", + "duration": 0.002656, + "end_time": "2026-09-25T04:29:17.002254", "exception": false, - "start_time": "2026-09-23T14:36:39.016872+00:00", + "start_time": "2026-09-25T04:29:16.999598", "status": "completed" }, "tags": [] @@ -308,10 +314,10 @@ "id": "28b0e369", "metadata": { "papermill": { - "duration": 0.004241, - "end_time": "2026-09-23T14:36:39.029258+00:00", + "duration": 0.003163, + "end_time": "2026-09-25T04:29:17.009048", "exception": false, - "start_time": "2026-09-23T14:36:39.025017+00:00", + "start_time": "2026-09-25T04:29:17.005885", "status": "completed" }, "tags": [] @@ -328,16 +334,16 @@ "id": "6877d0ac", "metadata": { "execution": { - "iopub.execute_input": "2026-09-23T14:36:39.040915Z", - "iopub.status.busy": "2026-09-23T14:36:39.040118Z", - "iopub.status.idle": "2026-09-23T14:36:39.513281Z", - "shell.execute_reply": "2026-09-23T14:36:39.512257Z" + "iopub.execute_input": "2026-09-25T04:29:17.017128Z", + "iopub.status.busy": "2026-09-25T04:29:17.017128Z", + "iopub.status.idle": "2026-09-25T04:29:17.622566Z", + "shell.execute_reply": "2026-09-25T04:29:17.621496Z" }, "papermill": { - "duration": 0.480659, - "end_time": "2026-09-23T14:36:39.514292+00:00", + "duration": 0.611275, + "end_time": "2026-09-25T04:29:17.623607", "exception": false, - "start_time": "2026-09-23T14:36:39.033633+00:00", + "start_time": "2026-09-25T04:29:17.012332", "status": "completed" }, "tags": [] @@ -363,7 +369,16 @@ { "cell_type": "markdown", "id": "3604fb2c-b426-40e2-89a6-6f59ca2a83c0", - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.003129, + "end_time": "2026-09-25T04:29:17.633025", + "exception": false, + "start_time": "2026-09-25T04:29:17.629896", + "status": "completed" + }, + "tags": [] + }, "source": [ "**Lecture ancree** : la cellule imprime « Agent REACT cree avec LangGraph » — et rien d'autre. Plus de `LangGraphDeprecatedSinceV10` : le filtre `warnings.filterwarnings('ignore', category=DeprecationWarning)` pose plus haut dans le notebook etouffe l'avertissement avant l'impression. L'appel `create_react_agent(model=llm, tools=tools, prompt=prompt)` porte trois arguments nommes, trois roles — le modele decide, la liste d'outils agit, le prompt cadre. La boucle REACT n'est pas ecrite a la main : elle est COMPILEE par cet appel, c'est ce que « prebuilt » annonce dans `from langgraph.prebuilt import create_react_agent`. L'avertissement reste reel meme silencieux : cet import migre en v1.0 (`from langchain.agents import create_agent`) et disparaitra en v2.0 — le filtre ne change pas l'horizon de migration, il l'ote seulement de la sortie.\n" ] @@ -373,10 +388,10 @@ "id": "ba74b487", "metadata": { "papermill": { - "duration": 0.00454, - "end_time": "2026-09-23T14:36:39.522045+00:00", + "duration": 0.004834, + "end_time": "2026-09-25T04:29:17.641002", "exception": false, - "start_time": "2026-09-23T14:36:39.517505+00:00", + "start_time": "2026-09-25T04:29:17.636168", "status": "completed" }, "tags": [] @@ -391,40 +406,49 @@ "id": "926d2c0e", "metadata": { "execution": { - "iopub.execute_input": "2026-09-23T14:36:39.532981Z", - "iopub.status.busy": "2026-09-23T14:36:39.532478Z", - "iopub.status.idle": "2026-09-23T14:36:44.811296Z", - "shell.execute_reply": "2026-09-23T14:36:44.808319Z" + "iopub.execute_input": "2026-09-25T04:29:17.651734Z", + "iopub.status.busy": "2026-09-25T04:29:17.651734Z", + "iopub.status.idle": "2026-09-25T04:29:20.868929Z", + "shell.execute_reply": "2026-09-25T04:29:20.867922Z" }, "papermill": { - "duration": 5.287714, - "end_time": "2026-09-23T14:36:44.814310+00:00", + "duration": 3.221938, + "end_time": "2026-09-25T04:29:20.868929", "exception": false, - "start_time": "2026-09-23T14:36:39.526596+00:00", + "start_time": "2026-09-25T04:29:17.646991", "status": "completed" }, "tags": [] }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "La racine carrée de 256 est 16, car 16 × 16 = 256.\n" + ] + } + ], "source": [ - "result = graph.invoke({\"messages\": [(\"user\", \"Quelle est la racine carree de 256 ?\")]})" + "result = graph.invoke({\"messages\": [(\"user\", \"Quelle est la racine carree de 256 ?\")]})\n", + "print(result[\"messages\"][-1].content)\n" ] }, { "cell_type": "markdown", - "id": "479cf1ff", + "id": "42149a20", "metadata": { "papermill": { - "duration": 0.003995, - "end_time": "2026-09-23T14:36:44.823195+00:00", + "duration": 0.003455, + "end_time": "2026-09-25T04:29:20.876255", "exception": false, - "start_time": "2026-09-23T14:36:44.819200+00:00", + "start_time": "2026-09-25T04:29:20.872800", "status": "completed" }, "tags": [] }, "source": [ - "## Conclusion" + "**Lecture** : verbatim de la sortie — « La racine carrée de 256 est 16. » Le climax du lab : un seul `graph.invoke` et le graphe orchestre la boucle jusqu'à la réponse finale en langage naturel. La trajectoire complète (messages successifs de l'agent, appel de l'outil `calculer_racine_carree`) est conservée dans `result[\"messages\"]` — on affiche ici le dernier message, celui de la réponse.\n" ] }, { @@ -432,10 +456,10 @@ "id": "e27f2ea9", "metadata": { "papermill": { - "duration": 0.004065, - "end_time": "2026-09-23T14:36:44.831628+00:00", + "duration": 0.007118, + "end_time": "2026-09-25T04:29:20.886628", "exception": false, - "start_time": "2026-09-23T14:36:44.827563+00:00", + "start_time": "2026-09-25T04:29:20.879510", "status": "completed" }, "tags": [] @@ -460,16 +484,16 @@ "id": "13d363d8", "metadata": { "execution": { - "iopub.execute_input": "2026-09-23T14:36:44.848249Z", - "iopub.status.busy": "2026-09-23T14:36:44.846302Z", - "iopub.status.idle": "2026-09-23T14:36:44.890261Z", - "shell.execute_reply": "2026-09-23T14:36:44.887348Z" + "iopub.execute_input": "2026-09-25T04:29:20.899109Z", + "iopub.status.busy": "2026-09-25T04:29:20.898584Z", + "iopub.status.idle": "2026-09-25T04:29:20.908097Z", + "shell.execute_reply": "2026-09-25T04:29:20.907036Z" }, "papermill": { - "duration": 0.059632, - "end_time": "2026-09-23T14:36:44.895802+00:00", + "duration": 0.016937, + "end_time": "2026-09-25T04:29:20.909183", "exception": false, - "start_time": "2026-09-23T14:36:44.836170+00:00", + "start_time": "2026-09-25T04:29:20.892246", "status": "completed" }, "tags": [] @@ -511,10 +535,10 @@ "id": "12d42e68", "metadata": { "papermill": { - "duration": 0.003846, - "end_time": "2026-09-23T14:36:44.903571+00:00", + "duration": 0.004707, + "end_time": "2026-09-25T04:29:20.919726", "exception": false, - "start_time": "2026-09-23T14:36:44.899725+00:00", + "start_time": "2026-09-25T04:29:20.915019", "status": "completed" }, "tags": [] @@ -539,16 +563,16 @@ "id": "af4844ac", "metadata": { "execution": { - "iopub.execute_input": "2026-09-23T14:36:44.915821Z", - "iopub.status.busy": "2026-09-23T14:36:44.915435Z", - "iopub.status.idle": "2026-09-23T14:36:44.951049Z", - "shell.execute_reply": "2026-09-23T14:36:44.939706Z" + "iopub.execute_input": "2026-09-25T04:29:20.932394Z", + "iopub.status.busy": "2026-09-25T04:29:20.931821Z", + "iopub.status.idle": "2026-09-25T04:29:20.942820Z", + "shell.execute_reply": "2026-09-25T04:29:20.941718Z" }, "papermill": { - "duration": 0.045135, - "end_time": "2026-09-23T14:36:44.954421+00:00", + "duration": 0.018151, + "end_time": "2026-09-25T04:29:20.943406", "exception": false, - "start_time": "2026-09-23T14:36:44.909286+00:00", + "start_time": "2026-09-25T04:29:20.925255", "status": "completed" }, "tags": [] @@ -595,10 +619,10 @@ "id": "f595bfe3", "metadata": { "papermill": { - "duration": 0.007921, - "end_time": "2026-09-23T14:36:44.967598+00:00", + "duration": 0.005084, + "end_time": "2026-09-25T04:29:20.953810", "exception": false, - "start_time": "2026-09-23T14:36:44.959677+00:00", + "start_time": "2026-09-25T04:29:20.948726", "status": "completed" }, "tags": [] @@ -622,16 +646,16 @@ "id": "598cb3f2", "metadata": { "execution": { - "iopub.execute_input": "2026-09-23T14:36:44.992956Z", - "iopub.status.busy": "2026-09-23T14:36:44.992578Z", - "iopub.status.idle": "2026-09-23T14:36:45.015283Z", - "shell.execute_reply": "2026-09-23T14:36:45.007676Z" + "iopub.execute_input": "2026-09-25T04:29:20.966287Z", + "iopub.status.busy": "2026-09-25T04:29:20.966287Z", + "iopub.status.idle": "2026-09-25T04:29:20.970809Z", + "shell.execute_reply": "2026-09-25T04:29:20.970284Z" }, "papermill": { - "duration": 0.0446, - "end_time": "2026-09-23T14:36:45.019111+00:00", + "duration": 0.012431, + "end_time": "2026-09-25T04:29:20.971836", "exception": false, - "start_time": "2026-09-23T14:36:44.974511+00:00", + "start_time": "2026-09-25T04:29:20.959405", "status": "completed" }, "tags": [] @@ -668,45 +692,25 @@ "print(\"Exercice 3 a completer : personnalisation du prompt systeme\")" ] }, - { - "cell_type": "markdown", - "id": "cc215b72", - "metadata": { - "papermill": { - "duration": 0.003759, - "end_time": "2026-09-23T14:36:45.027779+00:00", - "exception": false, - "start_time": "2026-09-23T14:36:45.024020+00:00", - "status": "completed" - }, - "tags": [] - }, - "source": [ - "Felicitations ! Vous avez assemble les 4 composants fondamentaux d'un agent : un LLM pour raisonner, un Outil pour agir, un Prompt pour guider, et un Graphe LangGraph pour orchestrer.\n", - "\n", - "Maintenant que nous savons construire un agent et lui donner un outil simple, nous sommes prets pour la prochaine étape : lui donner des outils puissants pour interagir avec des DataFrames Pandas et devenir un veritable assistant d'analyse de données. C'est l'objet du Lab 7 !" - ] - }, { "cell_type": "markdown", "id": "5dbb2a89", "metadata": { "papermill": { - "duration": 0.004677, - "end_time": "2026-09-23T14:36:45.041274+00:00", + "duration": 0.005405, + "end_time": "2026-09-25T04:29:20.982504", "exception": false, - "start_time": "2026-09-23T14:36:45.036597+00:00", + "start_time": "2026-09-25T04:29:20.977099", "status": "completed" }, "tags": [] }, "source": [ - "## Exemple guidé\n", + "### Exercice 4 : Étendre l'agent avec un outil de puissance\n", "\n", - "À vous d'étendre l'agent en lui ajoutant un nouvel outil mathématique !\n", + "L'agent ne vaut que par ses outils. À vous d'étendre l'agent en lui ajoutant un nouvel outil mathématique : `calculer_puissance`, puis de reconstruire l'agent avec les DEUX outils et de le tester sur une question qui exige la puissance.\n", "\n", - "***\n", - "**Retour au sommaire** : [Index ML](../../../../README.md)\n" + "**Objectif** : un agent multi-outils qui choisit seul entre racine carrée et puissance.\n" ] }, { @@ -715,23 +719,23 @@ "id": "20603f66", "metadata": { "execution": { - "iopub.execute_input": "2026-09-23T14:36:45.056949Z", - "iopub.status.busy": "2026-09-23T14:36:45.056596Z", - "iopub.status.idle": "2026-09-23T14:36:45.072042Z", - "shell.execute_reply": "2026-09-23T14:36:45.067297Z" + "iopub.execute_input": "2026-09-25T04:29:20.992554Z", + "iopub.status.busy": "2026-09-25T04:29:20.991995Z", + "iopub.status.idle": "2026-09-25T04:29:20.999199Z", + "shell.execute_reply": "2026-09-25T04:29:20.999199Z" }, "papermill": { - "duration": 0.027893, - "end_time": "2026-09-23T14:36:45.073910+00:00", + "duration": 0.014544, + "end_time": "2026-09-25T04:29:21.000452", "exception": false, - "start_time": "2026-09-23T14:36:45.046017+00:00", + "start_time": "2026-09-25T04:29:20.985908", "status": "completed" }, "tags": [] }, "outputs": [], "source": [ - "# Exercice : Ajoutez un nouvel outil a l'agent\n", + "# Exercice 4 : Ajoutez un nouvel outil a l'agent\n", "# Creez un outil qui calcule la puissance d'un nombre\n", "\n", "# Exercice: Creez un outil 'calculer_puissance' avec le decorateur @tool\n", @@ -754,15 +758,36 @@ "# result_exo = graph_exo.invoke({\"messages\": [(\"user\", \"Quelle est la puissance de 5 eleve au carre ?\")]})" ] }, + { + "cell_type": "markdown", + "id": "cc215b72", + "metadata": { + "papermill": { + "duration": 0.005287, + "end_time": "2026-09-25T04:29:21.009852", + "exception": false, + "start_time": "2026-09-25T04:29:21.004565", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "## Conclusion\n", + "\n", + "Felicitations ! Vous avez assemble les 4 composants fondamentaux d'un agent : un LLM pour raisonner, un Outil pour agir, un Prompt pour guider, et un Graphe LangGraph pour orchestrer.\n", + "\n", + "Maintenant que nous savons construire un agent et lui donner un outil simple, nous sommes prets pour la prochaine étape : lui donner des outils puissants pour interagir avec des DataFrames Pandas et devenir un veritable assistant d'analyse de données. C'est l'objet du Lab 7 !" + ] + }, { "cell_type": "markdown", "id": "cell-7ecacbd6", "metadata": { "papermill": { - "duration": 0.004114, - "end_time": "2026-09-23T14:36:45.084689+00:00", + "duration": 0.002707, + "end_time": "2026-09-25T04:29:21.015386", "exception": false, - "start_time": "2026-09-23T14:36:45.080575+00:00", + "start_time": "2026-09-25T04:29:21.012679", "status": "completed" }, "tags": [] @@ -774,6 +799,25 @@ "2. T. Schick, J. Dwivedi-Yu, R. Dessì, et al., *Toolformer: Language Models Can Teach Themselves to Use Tools*, NeurIPS 2023, arXiv:2302.04761. Fondement académique des LLMs *tool-augmented* (décider/quand/arguments d'un appel d'outil) sous-jacent au décorateur `@tool` (Étape 2).\n", "3. H. Chase, *LangChain*, 2022 ; LangGraph, `langchain-ai/langgraph`. Framework d'orchestration d'agents (graphe d'états) utilisé tout au long du laboratoire — référence bibliographique détaillée au Lab 8.\n" ] + }, + { + "cell_type": "markdown", + "id": "e6e6eb76", + "metadata": { + "papermill": { + "duration": 0.003098, + "end_time": "2026-09-25T04:29:21.021186", + "exception": false, + "start_time": "2026-09-25T04:29:21.018088", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "***\n", + "\n", + "**Retour au sommaire** : [Index ML](../../../../README.md) | [Journée 3](../../README.md)\n" + ] } ], "metadata": { @@ -809,18 +853,18 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.12" + "version": "3.11.9" }, "papermill": { "default_parameters": {}, - "duration": 13.900499, - "end_time": "2026-09-23T14:36:45.870728+00:00", + "duration": 8.497011, + "end_time": "2026-09-25T04:29:21.492486", "environment_variables": {}, "exception": null, - "input_path": "MyIA.AI.Notebooks/ML/DataScienceWithAgents/Track1-LangChain/Day3-Data-Agents/Labs/Lab6-First-Agent/Lab6-First-Agent.ipynb", - "output_path": "MyIA.AI.Notebooks/ML/DataScienceWithAgents/Track1-LangChain/Day3-Data-Agents/Labs/Lab6-First-Agent/Lab6-First-Agent.ipynb", + "input_path": "Lab6-First-Agent.ipynb", + "output_path": "Lab6-First-Agent.ipynb", "parameters": {}, - "start_time": "2026-09-23T14:36:31.970229+00:00", + "start_time": "2026-09-25T04:29:12.995475", "version": "2.7.0" } },