Skip to content

Commit

Permalink
Built site for gh-pages
Browse files Browse the repository at this point in the history
  • Loading branch information
Quarto GHA Workflow Runner committed Nov 7, 2024
1 parent b955245 commit 09acd56
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 31 deletions.
2 changes: 1 addition & 1 deletion .nojekyll
Original file line number Diff line number Diff line change
@@ -1 +1 @@
7947852f
4257870f
6 changes: 5 additions & 1 deletion II-Developpements/1_Anatomie_LLM.html
Original file line number Diff line number Diff line change
Expand Up @@ -573,7 +573,11 @@ <h6 class="anchored" data-anchor-id="dpo-kto">DPO, KTO</h6>
<li><a href="https://huggingface.co/blog/pref-tuning">Explication théorique</a></li>
<li><a href="https://huggingface.co/blog/dpo-trl">Guide pratique / Implémentation HugginFace</a></li>
</ul>
<p>Liens des papiers originaux : - <a href="https://arxiv.org/abs/2305.18290">DPO</a> - <a href="https://arxiv.org/abs/2402.01306">KTO</a></p>
<p>Liens des papiers originaux :</p>
<ul>
<li><a href="https://arxiv.org/abs/2305.18290">DPO</a></li>
<li><a href="https://arxiv.org/abs/2402.01306">KTO</a></li>
</ul>


</section>
Expand Down
16 changes: 8 additions & 8 deletions IV-Exemples/2_Classification_accords_entreprise.html
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,7 @@ <h3 class="anchored" data-anchor-id="récupération-des-données">Récupération
<p>Les données sont disponibles sur <a href="https://www.legifrance.gouv.fr/search/acco?tab_selection=acco&amp;searchField=ALL&amp;query=%2A&amp;searchType=ALL&amp;typePagination=DEFAULT&amp;sortValue=PERTINENCE&amp;pageSize=25&amp;page=1#acco">Légifrance</a>. Le stock des textes est également publié par le <a href="https://echanges.dila.gouv.fr/OPENDATA/ACCO/">FTP de la DILA</a> et les thématiques déclarées sont à la fois dans les métadonnées XML publié conjointement avec les textes, ou retrouvables sur Légifrance.</p>
<p>Pour des raisons pratiques, nous travaillerons avec une <a href="https://minio.lab.sspcloud.fr/cthiounn2/Accords/10p_accords_publics_et_thematiques_240815.parquet">photographie du stock au 1er semestre 2024</a> et sur un <a href="https://minio.lab.sspcloud.fr/cthiounn2/Accords/10p_accords_publics_et_thematiques_240815_sample_of_1000.parquet">échantillon des 1000 textes d’accords</a>, convertis au format parquet.</p>
<p>Ces données comportent le numéro de dossier de l’accord, identifiant unique, puis le texte et les thématiques déclarées, et enfin suivies des thématiques une à une :</p>
<div id="e090057a" class="cell" data-execution_count="1">
<div id="50e4633a" class="cell" data-execution_count="1">
<div class="cell-output cell-output-display">
<div>

Expand Down Expand Up @@ -416,7 +416,7 @@ <h4 class="anchored" data-anchor-id="lecture-de-données">Lecture de données</h
jupyter==1.1.1
ipykernel==6.29.5</code></pre>
<p>Nous allons dans cet exemple, extraire 10 textes pour des raisons de rapidité :</p>
<div id="cc0f9815" class="cell" data-execution_count="2">
<div id="fbafa6c9" class="cell" data-execution_count="2">
<div class="sourceCode cell-code" id="cb5"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> json</span>
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> numpy <span class="im">as</span> np</span>
<span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> pandas <span class="im">as</span> pd</span>
Expand Down Expand Up @@ -445,7 +445,7 @@ <h4 class="anchored" data-anchor-id="lecture-de-données">Lecture de données</h
<section id="vectoriser-nos-textes-avec-chromadb" class="level4">
<h4 class="anchored" data-anchor-id="vectoriser-nos-textes-avec-chromadb">Vectoriser nos textes avec ChromaDB</h4>
<p>Pour vectoriser nos textes, nous utilisons ChromaDB qui s’intègre avec Langchain. Nous allons découper en morceau des 3000 caractères à chaque saut à ligne, ce qui correspond à un paragraphe. Les morceaux de textes, ici paragraphes, sont stockés dans une boutique de vecteur avec le numéro de dossier et le numéro de paragraphe en métadonnées.</p>
<div id="75aeedf9" class="cell" data-execution_count="3">
<div id="15daab57" class="cell" data-execution_count="3">
<div class="sourceCode cell-code" id="cb6"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb6-1"><a href="#cb6-1" aria-hidden="true" tabindex="-1"></a>text_splitter <span class="op">=</span> CharacterTextSplitter(</span>
<span id="cb6-2"><a href="#cb6-2" aria-hidden="true" tabindex="-1"></a> separator<span class="op">=</span><span class="st">"</span><span class="ch">\n\n</span><span class="st">"</span>,</span>
<span id="cb6-3"><a href="#cb6-3" aria-hidden="true" tabindex="-1"></a> chunk_size<span class="op">=</span><span class="dv">3000</span>,</span>
Expand All @@ -472,7 +472,7 @@ <h4 class="anchored" data-anchor-id="vectoriser-nos-textes-avec-chromadb">Vector
<section id="interroger-un-llm-en-mode-api" class="level4">
<h4 class="anchored" data-anchor-id="interroger-un-llm-en-mode-api">Interroger un LLM en mode API</h4>
<p>Pour interroger le LLM, nous construisons une classe qui permet de générer les requêtes et de traiter les réponses :</p>
<div id="80afda26" class="cell" data-execution_count="4">
<div id="f4c595d9" class="cell" data-execution_count="4">
<div class="sourceCode cell-code" id="cb7"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb7-1"><a href="#cb7-1" aria-hidden="true" tabindex="-1"></a>MODEL<span class="op">=</span><span class="st">"llama3.1"</span></span>
<span id="cb7-2"><a href="#cb7-2" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb7-3"><a href="#cb7-3" aria-hidden="true" tabindex="-1"></a></span>
Expand All @@ -493,7 +493,7 @@ <h4 class="anchored" data-anchor-id="interroger-un-llm-en-mode-api">Interroger u
<span id="cb7-18"><a href="#cb7-18" aria-hidden="true" tabindex="-1"></a> llm <span class="op">=</span> LocalOllamaLLM(api_url<span class="op">=</span><span class="st">"http://127.0.0.1:11434"</span>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<p>Nous définissons également un prompt de base, améliorable par la suite, et une chaîne LangChain entre le prompt et le LLM :</p>
<div id="85c4097b" class="cell" data-execution_count="5">
<div id="5cdf9ec1" class="cell" data-execution_count="5">
<div class="sourceCode cell-code" id="cb8"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" tabindex="-1"></a>system_prompt <span class="op">=</span> (</span>
<span id="cb8-2"><a href="#cb8-2" aria-hidden="true" tabindex="-1"></a> <span class="st">" Répondez à la question posée "</span></span>
<span id="cb8-3"><a href="#cb8-3" aria-hidden="true" tabindex="-1"></a> <span class="st">" Utilisez le contexte (sélection des meilleurs paragraphes liés à la question) donné pour répondre à la question "</span></span>
Expand All @@ -510,7 +510,7 @@ <h4 class="anchored" data-anchor-id="interroger-un-llm-en-mode-api">Interroger u
<span id="cb8-14"><a href="#cb8-14" aria-hidden="true" tabindex="-1"></a>question_answer_chain <span class="op">=</span> create_stuff_documents_chain(llm, prompt)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</div>
<p>Nous définissons une fonction pour effectuer le RAG, avec à la fois la recherche de similarité par rapport à la question, et la soumission augmentée pour une réponse du LLM :</p>
<div id="93db107f" class="cell" data-execution_count="6">
<div id="2eedcb25" class="cell" data-execution_count="6">
<div class="sourceCode cell-code" id="cb9"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb9-1"><a href="#cb9-1" aria-hidden="true" tabindex="-1"></a><span class="kw">def</span> search_and_invoke_llm(vector_store,index,query,k<span class="op">=</span><span class="dv">5</span>):</span>
<span id="cb9-2"><a href="#cb9-2" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> k<span class="op">==</span><span class="dv">0</span>:</span>
<span id="cb9-3"><a href="#cb9-3" aria-hidden="true" tabindex="-1"></a> <span class="bu">print</span>(<span class="ss">f"bug with </span><span class="sc">{</span>index<span class="sc">}</span><span class="ss">"</span>)</span>
Expand All @@ -535,7 +535,7 @@ <h4 class="anchored" data-anchor-id="interroger-un-llm-en-mode-api">Interroger u
<section id="automatiser-la-classification-sur-lensemble-des-thématiques" class="level4">
<h4 class="anchored" data-anchor-id="automatiser-la-classification-sur-lensemble-des-thématiques">Automatiser la classification sur l’ensemble des thématiques</h4>
<p>Nous automatisons ici la classification sous forme de classification binaire pour chaque thématique, en posant une question “oui ou non” et en inférant oui si la réponse commence par oui, non sinon.</p>
<div id="2e42302b" class="cell" data-execution_count="7">
<div id="fbac7034" class="cell" data-execution_count="7">
<div class="sourceCode cell-code" id="cb10"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb10-1"><a href="#cb10-1" aria-hidden="true" tabindex="-1"></a>THEMATIQUES<span class="op">=</span>{</span>
<span id="cb10-2"><a href="#cb10-2" aria-hidden="true" tabindex="-1"></a> <span class="st">"accord_methode_penibilite"</span>:<span class="st">"Accords de méthode (pénibilité)"</span>,</span>
<span id="cb10-3"><a href="#cb10-3" aria-hidden="true" tabindex="-1"></a><span class="st">"accord_methode_pse"</span>:<span class="st">"Accords de méthode (PSE)"</span>,</span>
Expand Down Expand Up @@ -626,7 +626,7 @@ <h4 class="anchored" data-anchor-id="automatiser-la-classification-sur-lensemble
<section id="evaluation" class="level3">
<h3 class="anchored" data-anchor-id="evaluation">Evaluation</h3>
<p>Nous évaluons les performances de cette solution simple, en affichant la matrice de confusion et les différentes métriques, pour chaque thématique :</p>
<div id="a571e2ab" class="cell" data-execution_count="8">
<div id="12a29cfe" class="cell" data-execution_count="8">
<div class="sourceCode cell-code" id="cb11"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb11-1"><a href="#cb11-1" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> numpy <span class="im">as</span> np</span>
<span id="cb11-2"><a href="#cb11-2" aria-hidden="true" tabindex="-1"></a><span class="im">from</span> sklearn.metrics <span class="im">import</span> confusion_matrix</span>
<span id="cb11-3"><a href="#cb11-3" aria-hidden="true" tabindex="-1"></a><span class="im">from</span> sklearn.metrics <span class="im">import</span> accuracy_score, precision_score, recall_score, f1_score, classification_report</span>
Expand Down
Loading

0 comments on commit 09acd56

Please sign in to comment.