Skip to content

Commit

Permalink
Ce notebook permet de déclencher la "pipeline_rag" pour une question …
Browse files Browse the repository at this point in the history
…et obtenir la réponse.

3 paramètres existent pour l'instant : le "top_K" de chunks récupérées en sortie de chaque queries, le choix du prompt (mistral/albert/chatgpt), et la version des instructions.

Pour cela le notebook importe 'instructions_LLM' (qui historise les versions de prompt) et framework_test_functions

Pour la suite, il faut : 
- rajouter des paramètres de tests. En priorité, la possibilité d'ingérer le texte complet à la place du chunk dans le prompt. 
- obtenir des scores de performance approximant la précision / le recall sur la base de 20 questions annotées
  • Loading branch information
rprebot committed Dec 9, 2024
1 parent 36cdb1a commit 0bdc485
Showing 1 changed file with 313 additions and 0 deletions.
313 changes: 313 additions & 0 deletions framework_pipeline_test.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,313 @@
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"collapsed_sections": [
"BxaanZoIKZRg"
],
"authorship_tag": "ABX9TyMJmSyyFNro750WquvdIFaJ",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/github/SocialGouv/srdt/blob/framework_pipeline_test/framework_pipeline_test.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"source": [
"# Chargement des fonctions depuis google drive"
],
"metadata": {
"id": "BxaanZoIKZRg"
}
},
{
"cell_type": "code",
"source": [
"# Monter google drive dans Google colab\n",
"from google.colab import drive\n",
"drive.mount('/content/drive')"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "fuGabxc7KDBt",
"outputId": "5d3f2017-26db-4aa1-ce67-25a948d36616"
},
"execution_count": 1,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"import os\n",
"os.chdir('/content/drive/My Drive/srdt_analysis')\n",
"import sys\n",
"sys.path.append('/content/drive/MyDrive/srdt_analysis')\n",
"from instructions_LLM import instructions\n",
"from framework_test_functions import call_LLM, albert_search, pipeline_test_RAG"
],
"metadata": {
"id": "USFAYP81KVcZ"
},
"execution_count": 2,
"outputs": []
},
{
"cell_type": "code",
"source": [],
"metadata": {
"id": "nCoxypg5d-Gm"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# Chargement des fonctions depuis github"
],
"metadata": {
"id": "DpXTStITKV4I"
}
},
{
"cell_type": "code",
"source": [
"!wget https://raw.githubusercontent.com/SocialGouv/srdt/refs/heads/framework_pipeline_test/srdt_analysis/framework_test_functions.py\n",
"!wget https://raw.githubusercontent.com/SocialGouv/srdt/refs/heads/framework_pipeline_test/srdt_analysis/instructions_LLM.py\n",
"!wget https://raw.githubusercontent.com/SocialGouv/srdt/refs/heads/framework_pipeline_test/srdt_analysis/API_KEYS.py\n",
"\n",
"#remarque : si la PR change de branche, il faut aussi changer les URLs (ici elles sont dans la branche \"framework_pipeline_test\")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "tzhshsV5F0n5",
"outputId": "6c1d674b-d647-4cf8-d811-0929547ae006"
},
"execution_count": 32,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"--2024-12-09 18:15:12-- https://raw.githubusercontent.com/SocialGouv/srdt/refs/heads/remi/srdt_analysis/framework_test_functions.py\n",
"Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...\n",
"Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n",
"HTTP request sent, awaiting response... 404 Not Found\n",
"2024-12-09 18:15:12 ERROR 404: Not Found.\n",
"\n",
"--2024-12-09 18:15:12-- https://raw.githubusercontent.com/SocialGouv/srdt/refs/heads/remi/srdt_analysis/instructions_LLM.py\n",
"Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.109.133, 185.199.110.133, ...\n",
"Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected.\n",
"HTTP request sent, awaiting response... 404 Not Found\n",
"2024-12-09 18:15:12 ERROR 404: Not Found.\n",
"\n",
"--2024-12-09 18:15:13-- https://raw.githubusercontent.com/SocialGouv/srdt/refs/heads/remi/srdt_analysis/API_KEYS.py\n",
"Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.111.133, 185.199.110.133, ...\n",
"Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n",
"HTTP request sent, awaiting response... 404 Not Found\n",
"2024-12-09 18:15:13 ERROR 404: Not Found.\n",
"\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"from instructions_LLM import instructions\n",
"from framework_test_functions import call_LLM, albert_search, pipeline_test_RAG"
],
"metadata": {
"id": "QVRtkuYZGmuG"
},
"execution_count": 39,
"outputs": []
},
{
"cell_type": "code",
"source": [],
"metadata": {
"id": "M2b1lCP6NnON"
},
"execution_count": 8,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# Réglage des paramètres de test"
],
"metadata": {
"id": "WFF7Xp2lLILA"
}
},
{
"cell_type": "code",
"source": [
"version_instructions = instructions['v2'] #v2 : prompt séparé en reformulation et traitement de la réponse\n",
"LLM = {\n",
" 'llm_model_family' : 'mistral', #albert #mistral #chatgpt\n",
" 'llm_model_version' : 'mistral-large-2407' #gpt-3.5-turbo #mistral-large-2407 #meta-llama/Meta-Llama-3.1-70B-Instruct\n",
" } #choix du modèl de LLM (la reformulation, et la réponse)\n",
"\n",
"top_K = 2 #nombre de chunks en sortie de chaque query\n",
"\n",
"question_utilisateur = \"\"\" un salarié a droit à combien de semains de congés par an ? merci\"\"\"\n",
"# pour trouver des questions types : https://docs.google.com/spreadsheets/d/1bvss8wGC6UiaCyp4dvyBDt7mgdk-nyecf6epIdvfGm4/edit?gid=1360931749#gid=1360931749\n"
],
"metadata": {
"id": "z-KKpumpLL1O"
},
"execution_count": 27,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# Lancement d'un test pour une question"
],
"metadata": {
"id": "UzkSub9FMB46"
}
},
{
"cell_type": "code",
"source": [
"reponse_assistant = pipeline_test_RAG(version_instructions, LLM, question_utilisateur, top_K)"
],
"metadata": {
"id": "f3XivpCAMGI5"
},
"execution_count": 28,
"outputs": []
},
{
"cell_type": "code",
"source": [
"reponse_assistant['reponse_assistant'] # la réponse de l'assistant"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 214
},
"id": "Wb3MOBK6XcWz",
"outputId": "f65c5d84-91e2-429e-e2e4-4883d008a2d7"
},
"execution_count": 29,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"\"### Reformulation de la demande\\n\\n**Contexte :**\\nVous êtes un salarié en France et vous souhaitez connaître le nombre de semaines de congés payés auxquelles vous avez droit par an. Vous vous interrogez également sur les conditions spécifiques pour bénéficier de ces congés.\\n\\n**Points juridiques à traiter :**\\n1. Combien de semaines de congés payés un salarié a-t-il droit par an en France ?\\n2. Y a-t-il des conditions spécifiques à remplir pour bénéficier de ces congés ?\\n\\n### Réponse\\n\\n#### 1. Combien de semaines de congés payés un salarié a-t-il droit par an en France ?\\n\\n**Principe général de droit :**\\nEn France, tout salarié a droit à des congés payés. La durée légale des congés payés est de 2,5 jours ouvrables par mois de travail effectif.\\n\\n**Détail :**\\nPour une année complète de travail, cela équivaut à 30 jours ouvrables de congés payés, soit environ 5 semaines.\\n\\n**Source :**\\nTitre du document : Salariés détachés : vos droits\\nConformément au droit français, tout salarié détaché bénéficie d'un droit à congés payés, soit 2,5 jours par mois effectif de travail. Pour une période d'activité inférieure à un mois, le droit à congé est proratisé selon la règle suivante : nombre de jours travaillés / 26 jours par mois (travail sur 6 jours dans la semaine, soit 52 semaines / 12 mois * 6 jours = 26 jours).\\n\\n#### 2. Y a-t-il des conditions spécifiques à remplir pour bénéficier de ces congés ?\\n\\n**Principe général de droit :**\\nLes congés payés sont un droit pour tous les salariés, mais il existe certaines conditions spécifiques à remplir pour en bénéficier.\\n\\n**Détail :**\\nLes congés payés sont acquis proportionnellement au temps de travail effectif. Si vous travaillez moins d'un mois complet, le nombre de jours de congés payés est proratisé.\\n\\n**Source :**\\nTitre du document : Salariés détachés : vos droits\\nConformément au droit français, tout salarié détaché bénéficie d'un droit à congés payés, soit 2,5 jours par mois effectif de travail. Pour une période d'activité inférieure à un mois, le droit à congé est proratisé selon la règle suivante : nombre de jours travaillés / 26 jours par mois (travail sur 6 jours dans la semaine, soit 52 semaines / 12 mois * 6 jours = 26 jours).\\n\\n### Conclusion\\n\\nEn France, un salarié a droit à 5 semaines de congés payés par an, soit 30 jours ouvrables. Ces congés sont acquis proportionnellement au temps de travail effectif. Pour bénéficier de ces congés, il est important de connaître les conditions spécifiques liées à la durée de travail effectif.\\n\\n### Prochaines étapes\\n\\nPour compléter cette réponse, avez-vous des questions supplémentaires concernant les modalités de prise de congés ou les éventuelles conditions spécifiques à votre situation (par exemple, si vous travaillez à temps partiel ou si vous avez des périodes d'absence) ?\""
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 29
}
]
},
{
"cell_type": "code",
"source": [
"reponse_assistant['urls'] # la sources sélectionnées en sortie du RAG"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "khL6PFQdaDl6",
"outputId": "951185e0-f9fa-4d1c-ea94-135bf95a6f38"
},
"execution_count": 30,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"['https://code.travail.gouv.fr/fiche-ministere-travail/salaries-detaches-vos-droits',\n",
" 'https://code.travail.gouv.fr/fiche-service-public/labsence-du-salarie-est-elle-prise-en-compte-pour-le-calcul-de-ses-conges',\n",
" 'https://code.travail.gouv.fr/fiche-service-public/conge-de-formation-economique-sociale-environnementale-et-syndicale-cfeses',\n",
" 'https://code.travail.gouv.fr/fiche-service-public/conge-de-proche-aidant']"
]
},
"metadata": {},
"execution_count": 30
}
]
},
{
"cell_type": "code",
"source": [
"reponse_assistant['question_reformulee'] # la question reformulée"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 89
},
"id": "9xNloWibaIwd",
"outputId": "73bab9db-404b-48e3-e7f3-35f70ea7c03d"
},
"execution_count": 31,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"\"Bonjour,\\n\\nJe suis salarié et je souhaite savoir combien de semaines de congés payés j'ai droit par an.\\n\\nMes questions sont :\\n- Combien de semaines de congés payés un salarié a-t-il droit par an en France ?\\n- Y a-t-il des conditions spécifiques à remplir pour bénéficier de ces congés ?\\n\\nMerci.\""
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 31
}
]
},
{
"cell_type": "code",
"source": [],
"metadata": {
"id": "ov35es4wkvjA"
},
"execution_count": null,
"outputs": []
}
]
}

0 comments on commit 0bdc485

Please sign in to comment.