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 09acd56 commit 8b46fa2
Show file tree
Hide file tree
Showing 5 changed files with 79 additions and 39 deletions.
2 changes: 1 addition & 1 deletion .nojekyll
Original file line number Diff line number Diff line change
@@ -1 +1 @@
4257870f
f1e7062a
43 changes: 36 additions & 7 deletions I-Accompagnement/3_Acculturation.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">

<meta name="author" content="équipe KALLM">
<meta name="dcterms.date" content="2024-06-07">
<meta name="dcterms.date" content="2024-11-07">

<title>PARTIE I. Accompagnement au changement – Guide d’installation des LLM</title>
<style>
Expand Down Expand Up @@ -254,7 +254,12 @@
<h2 id="toc-title">On this page</h2>

<ul>
<li><a href="#besoin-dacculturation-supports-johnny-hélène-camilleb-partie-à-replacer-en-1-avec-une-dimension-introduction-à-lia-de-manière-générale-les-llms-et-autres-dia" id="toc-besoin-dacculturation-supports-johnny-hélène-camilleb-partie-à-replacer-en-1-avec-une-dimension-introduction-à-lia-de-manière-générale-les-llms-et-autres-dia" class="nav-link active" data-scroll-target="#besoin-dacculturation-supports-johnny-hélène-camilleb-partie-à-replacer-en-1-avec-une-dimension-introduction-à-lia-de-manière-générale-les-llms-et-autres-dia">3. Besoin d’Acculturation (Supports!) (Johnny Hélène CamilleB) =&gt; Partie à replacer en 1 avec une dimension Introduction à l’IA de manière générale, les LLMs et autres d’IA</a></li>
<li><a href="#acculturation-à-lintelligence-artificielle" id="toc-acculturation-à-lintelligence-artificielle" class="nav-link active" data-scroll-target="#acculturation-à-lintelligence-artificielle">Acculturation à l’Intelligence Artificielle</a>
<ul class="collapse">
<li><a href="#module-dacculturation-de-lia" id="toc-module-dacculturation-de-lia" class="nav-link" data-scroll-target="#module-dacculturation-de-lia">Module d’acculturation de l’IA</a></li>
<li><a href="#les-réseaux-autour-de-lia" id="toc-les-réseaux-autour-de-lia" class="nav-link" data-scroll-target="#les-réseaux-autour-de-lia">Les réseaux autour de l’IA</a></li>
</ul></li>
<li><a href="#points-dattentions-autour-de-lia-générative" id="toc-points-dattentions-autour-de-lia-générative" class="nav-link" data-scroll-target="#points-dattentions-autour-de-lia-générative">Points d’attentions autour de l’IA générative</a></li>
</ul>
</nav>
</div>
Expand All @@ -280,7 +285,7 @@ <h1 class="title">PARTIE I. Accompagnement au changement</h1>
<div>
<div class="quarto-title-meta-heading">Published</div>
<div class="quarto-title-meta-contents">
<p class="date">June 7, 2024</p>
<p class="date">November 7, 2024</p>
</div>
</div>

Expand All @@ -292,10 +297,34 @@ <h1 class="title">PARTIE I. Accompagnement au changement</h1>
</header>


<section id="besoin-dacculturation-supports-johnny-hélène-camilleb-partie-à-replacer-en-1-avec-une-dimension-introduction-à-lia-de-manière-générale-les-llms-et-autres-dia" class="level2">
<h2 class="anchored" data-anchor-id="besoin-dacculturation-supports-johnny-hélène-camilleb-partie-à-replacer-en-1-avec-une-dimension-introduction-à-lia-de-manière-générale-les-llms-et-autres-dia">3. Besoin d’Acculturation (Supports!) (Johnny Hélène CamilleB) =&gt; Partie à replacer en 1 avec une dimension Introduction à l’IA de manière générale, les LLMs et autres d’IA</h2>
<pre><code>Comment embarquer les métiers/personnels moins techniques
Points d'attention à partager sur l'utilisation de tels outils</code></pre>
<section id="acculturation-à-lintelligence-artificielle" class="level2">
<h2 class="anchored" data-anchor-id="acculturation-à-lintelligence-artificielle">Acculturation à l’Intelligence Artificielle</h2>
<p>L’Intelligence Artificielle offre une multitude de solutions à diverses besoins des administrations, recensées dans la partie précédente. Dans un premier temps, il est essentiel de maîtriser <em>a minima</em> les outils, techniques et technologies employés pour répondre à ces besoins. Egalement, démystifier l’IA est tout aussi central dans la réussite des projets IA, pour réajuster les attentes des parties prenantes. Dès lors, se pose la question de comment communiquer de manière efficace autour de l’IA ? Cette question prend davantage sens avec des acteurs moins techniques et décisionnaires stratégiques.</p>
<section id="module-dacculturation-de-lia" class="level3">
<h3 class="anchored" data-anchor-id="module-dacculturation-de-lia">Module d’acculturation de l’IA</h3>
<p>Pour communiquer sur l’IA de manière efficace avec des non-initiés, il est nécessaire de :</p>
<ul>
<li>Définir les termes (IA, LLM)</li>
<li>Définir les concepts et les mécanismes</li>
<li>Définir ce que les modèles font et ne font pas</li>
<li>D’avertir sur les hallucinations dans le cas des LLM et d’en évaluer la performance</li>
<li>D’avertir sur le coût complet d’une solution IA</li>
</ul>
<p>Pour mieux embarquer les non-initiés, quelques administrations ont mis en place des Lunch-and-Learn autour de l’IA générative, que ce soit sous forme de présentation ou sous forme de quiz.</p>
</section>
<section id="les-réseaux-autour-de-lia" class="level3">
<h3 class="anchored" data-anchor-id="les-réseaux-autour-de-lia">Les réseaux autour de l’IA</h3>
<p>Pour mieux comprendre l’IA ou faire comprendre auprès des parties prenantes, les réseaux autour de l’IA représentent une opportunité. Par exemple, le réseau du <a href="https://www.10pourcent.etalab.gouv.fr/">programme 10%</a> et le réseau du <a href="https://ssphub.netlify.app/">SSPHub</a> mettent en relation des experts autour de la data et de l’IA, permettent d’échanger sur des sujets techniques mais aussi sont ouverts aux non-initiés. Des événements pour un public plus large que les experts sont organisés chaque année comme les <a href="https://10pct.datascience.etalab.studio/les-actualites/le-programme-10-est-de-retour/">journées 10%</a> ou la <a href="https://ssphub.netlify.app/talk/2024-10-14-network-day/">journée du SSPHub</a></p>
</section>
</section>
<section id="points-dattentions-autour-de-lia-générative" class="level2">
<h2 class="anchored" data-anchor-id="points-dattentions-autour-de-lia-générative">Points d’attentions autour de l’IA générative</h2>
<p>Il y a quelques points supplémentaires à bien faire comprendre auprès des parties prenantes quant à l’usage d’IA générative, il s’agit de :</p>
<ul>
<li>Démystifier les promesses faites et d’objectiver les performances des solutions d’IA générative</li>
<li>Bien expliquer son fonctionnement, ce qu’il génère et comment il génère. De mettre en exergue notamment sa nature probabiliste pour formuler une réponse.</li>
<li>Bien définir le besoin, le modèle utilisé, les raisons de son choix et pourquoi une solution non IA générative n’est pas viable.</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="50e4633a" class="cell" data-execution_count="1">
<div id="332edfb8" 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="fbafa6c9" class="cell" data-execution_count="2">
<div id="e51c3c30" 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="15daab57" class="cell" data-execution_count="3">
<div id="5bab0767" 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="f4c595d9" class="cell" data-execution_count="4">
<div id="034395fa" 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="5cdf9ec1" class="cell" data-execution_count="5">
<div id="87686ce8" 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="2eedcb25" class="cell" data-execution_count="6">
<div id="8d4c785f" 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="fbac7034" class="cell" data-execution_count="7">
<div id="dae50f88" 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="12a29cfe" class="cell" data-execution_count="8">
<div id="a0b3e232" 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 8b46fa2

Please sign in to comment.