<?xml
version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>Mon site SPIP</title>
	<link>https://ia.whatiswhat.cloud/</link>
	
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://ia.whatiswhat.cloud/spip.php?page=backend" rel="self" type="application/rss+xml" />




<item xml:lang="fr">
		<title>WsgiChatBot</title>
		<link>https://ia.whatiswhat.cloud/spip.php?article5</link>
		<guid isPermaLink="true">https://ia.whatiswhat.cloud/spip.php?article5</guid>
		<dc:date>2025-04-10T15:21:30Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		



		<description>
&lt;p&gt;Cette application est un serveur HTTP au standard WSGI. Il est statique (restfull) : pour r&#233;aliser une conversation, ceci impose de g&#233;rer l'historique des &#233;changes au niveau de l'application appelante. Loin d'&#234;tre une contrainte, c'est au contraire une facilit&#233; permettant de g&#233;rer finement le contexte dans lequel sera analys&#233;e la question. &lt;br class='autobr' /&gt;
Tester WsgiChatBot (retour JSON)
&lt;br class='autobr' /&gt;
Tester WsgiChatBot (r&#233;ponse textuelle) Routes &lt;br class='autobr' /&gt;
WsgiChatBot est un web service au standard WSGI (Web Server Gateway (&#8230;)&lt;/p&gt;


-
&lt;a href="https://ia.whatiswhat.cloud/spip.php?rubrique1" rel="directory"&gt;Outils d'IA textuels&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Cette application est un serveur HTTP au standard WSGI. Il est statique (restfull) : pour r&#233;aliser une conversation, ceci impose de g&#233;rer l'historique des &#233;changes au niveau de l'application appelante. Loin d'&#234;tre une contrainte, c'est au contraire une facilit&#233; permettant de g&#233;rer finement le contexte dans lequel sera analys&#233;e la question.&lt;/p&gt;
&lt;p&gt;&lt;a href=&#034;https://ia.whatiswhat.cloud/?page=test_wsgi_chatbot_1&#034;&gt;Tester WsgiChatBot (retour JSON)&lt;/a&gt;&lt;br class='autobr' /&gt;
&lt;a href=&#034;https://ia.whatiswhat.cloud/?page=test_wsgi_chatbot_2&#034;&gt;Tester WsgiChatBot (r&#233;ponse textuelle)&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Routes&lt;/h2&gt;
&lt;p&gt;WsgiChatBot est un web service au standard WSGI (Web Server Gateway Interface) r&#233;pondant en JSON &#224; chaque question qui lui est pos&#233;e par HTTP.&lt;/p&gt;
&lt;p&gt;Les routes comprennent principalement :&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;GET /api/&lt;/td&gt;
&lt;td&gt;Message d'accueil&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;GET /api/version/&lt;/td&gt;
&lt;td&gt;Version du service&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;GET /api/ping&lt;/td&gt;
&lt;td&gt;Test fonctionnel. Retourne le temps d'ex&#233;cution (ms) ou 0 en cas d'erreur&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;GET /api/themes/&lt;/td&gt;
&lt;td&gt;Liste les th&#232;mes (ensemble de donn&#233;es d'une entit&#233;) disponibles.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;GET /api/details/&lt;/td&gt;
&lt;td&gt;Liste les diff&#233;rents niveaux d'&#233;laboration de la r&#233;ponse.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;POST /api/post/&lt;/td&gt;
&lt;td&gt;Ex&#233;cute la requ&#234;te pass&#233;e par POST. param&#232;tres du post : voir ci-dessous.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;h2 class=&#034;spip&#034;&gt;POST, action = 'query'&lt;/h2&gt;
&lt;p&gt;Tous les param&#232;tres du post sont du type String.&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;Param&#232;tre&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Description&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;action&lt;/td&gt;
&lt;td&gt;obligatoire&lt;/td&gt;
&lt;td&gt;'query' : La seule action dans l'&#233;tat actuel du d&#233;veloppement.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;theme&lt;/td&gt;
&lt;td&gt;obligatoire&lt;/td&gt;
&lt;td&gt;Espace de donn&#233;es (un r&#233;pertoire sur le serveur).&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;prompt&lt;/td&gt;
&lt;td&gt;obligatoire&lt;/td&gt;
&lt;td&gt;La requ&#234;te de l'utilisateur&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;detail&lt;/td&gt;
&lt;td&gt;option&lt;/td&gt;
&lt;td&gt;Niveau de d&#233;tail de la r&#233;ponse (voir la route 'details').&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td&gt;context&lt;/td&gt;
&lt;td&gt;option&lt;/td&gt;
&lt;td&gt;Contexte (ou historique) dans lequel la question est analys&#233;e.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td&gt;language&lt;/td&gt;
&lt;td&gt;option&lt;/td&gt;
&lt;td&gt;Langage impos&#233; pour la r&#233;ponse.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;La &lt;strong&gt;r&#233;ponse&lt;/strong&gt; au format JSON est un tableau de deux &#233;l&#233;ments : &lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; response : une cha&#238;ne au format MarkDown,
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; ws_error : une chaine d&#233;crivant une &#233;ventuelle erreur.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Exemple d'appel (PHP)&lt;/h2&gt;&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class=&#034;php&#034;&gt;&lt;code&gt;$data = array( 'action' =&gt; 'query', 'theme' =&gt; $theme, // Theme du chat 'prompt' =&gt; $prompt, // Qu'est-ce que OAuthSD ? 'detail' =&gt; 'Normal', 'context' =&gt; $context, 'language' =&gt; &#034;Fran&#231;ais&#034; ); $h = curl_init(&#034;localhost:5002/api/post&#034;); # local curl_setopt($h, CURLOPT_POST, 1); curl_setopt($h, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($h, CURLOPT_RETURNTRANSFER, 1); curl_setopt($h, CURLOPT_TIMEOUT, 100); // 100 secondes $result = curl_exec($h);&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div &lt;div class='rss_ps'&gt;&lt;h2 class=&#034;spip&#034;&gt;Lancement du serveur WSGI en ligne de commande&lt;/h2&gt;
&lt;p&gt;Le &lt;strong&gt;script wsgi_chatbot.sh&lt;/strong&gt; permet de lancer le serveur tout en s'assurant qu'il n'y a qu'un seul process en route :&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class=&#034;bash&#034;&gt;&lt;code&gt;#!/usr/bin/env bash # contourner l'erreur &#034;ImportError: /lib64/libstdc++.so.6: cannot allocate memory in static TLS block&#034; export LD_PRELOAD=/lib64/libstdc++.so.6 # stop any process running on port 5002 /usr/sbin/fuser -k 5002/tcp; # change to virtual python env cd /home/iadnc/domains/chat.ia.dnc.global/PythonApp source PythonAppVenv/bin/activate; # run nohup /home/iadnc/domains/chat.ia.dnc.global/PythonApp/wsgi_chatbot.py # pour debugger : pas de nohup &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il est important d'utiliser ce script pour &#233;viter l'accumulation de process et la saturation de la m&#233;moire du serveur.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Quelques d&#233;tails du code&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Lancement de l'application Flask comme serveur WSGI s&#233;curis&#233; et local &lt;/strong&gt;&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class=&#034;python&#034;&gt;&lt;code&gt;if __name__ == '__main__': # Connection behind a local proxy # @see: https://flask.palletsprojects.com/en/2.3.x/deploying/proxy_fix/ from werkzeug.middleware.proxy_fix import ProxyFix app.wsgi_app = ProxyFix( app.wsgi_app, x_for=1, # Header to determine the originating IP of the client. x_proto=1, # Trust the header for knowing whether the client used HTTP or HTTPS. x_host=1, # Trust the header for the original request's host value. x_prefix=1 # Trust the header for URL prefix adjustments. ) # Allow cross-origin requests, restrict to local clients. CORS(app, resources={r&#034;/api/*&#034;: {&#034;origins&#034;: [&#034;http://localhost&#034;, &#034;http://127.0.0.1&#034;], &#034;methods&#034;: [&#034;GET&#034;, &#034;POST&#034;]}}) # Serve on localhost http_server = WSGIServer(('localhost', PORT_SERVER), app) try: http_server.serve_forever() # continuously listen for incoming requests. except Exception as e: # Handle server-level exceptions gracefully trace(f&#034;Server error: {str(e)}&#034;) &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ce bloc de code :
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; Configure l'application Flask pour fonctionner derri&#232;re un &#233;ventuel proxy tout en ajustant les attributs des requ&#234;tes.
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; Autorise uniquement les clients locaux &#224; effectuer des requ&#234;tes via les r&#232;gles 'CORS'.
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; D&#233;marre un serveur WSGI s&#233;curis&#233; et local pour servir l'application.
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; Intercepte toute exception pour ne pas stopper le serveur. Les erreurs sont inscrites dans Syslog.&lt;/p&gt;
&lt;p&gt;Notes &#224; propos de la s&#233;curit&#233; :
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; Bien qu'il s'agisse d'une connexion locale, la r&#232;gle 'CORS' est n&#233;cessaire ; elle permet de plus de pr&#233;ciser les origines et les m&#233;thodes.
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; Sans proxy inverse, ce serveur ne peut &#234;tre interrog&#233; que depuis 'localhost'. S'il existe un proxy inverse ouvert sur le WAN, celui-ci ne peut qu'&#234;tre local et on peut lui faire confiance, d'o&#249; les attributs de requ&#234;tes na&#239;fs. Il revient au proxy inverse d'assurer la s&#233;curit&#233; de l'acc&#232;s depuis le WAN.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Gestion de l'historique : param&#232;tre 'context'&lt;/h2&gt;
&lt;p&gt;Ainsi qu'il est mentionn&#233; dans l'introduction, le service est statique. Pour donner l'illusion d'une conversation, l'application appelante doit passer par le param&#232;tre 'context' une cha&#238;ne repr&#233;sentative de l'historique des &#233;changes. Cette cha&#238;ne est stock&#233;e dans la session de l'utilisateur.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Elaboration de l'historique&lt;/strong&gt;&lt;br class='autobr' /&gt;
L'exp&#233;rience montre que, si on passe tout l'historique (depuis le lancement ou depuis le dernier Reset), il y a un 'effet d'entonnoir' : les question successives &#233;tant noy&#233;es dans l'historique, les r&#233;ponses deviennent courtes et tendent &#224; &#234;tre identiques.&lt;br class='autobr' /&gt;
Diff&#233;rents proc&#233;d&#233;s peuvent &#234;tre appliqu&#233;s :
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; n'inclure dans l'historique que le dernier &#233;change,
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; inclure la premi&#232;re question et le dernier &#233;change.
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; cumuler les questions et les &#233;changes,&lt;br class='autobr' /&gt;
etc.&lt;/p&gt;
&lt;p&gt;Les questions et r&#233;ponses doivent &#234;tre balis&#233;es respectivement par les titres &#034;User : &#034; et &#034;Assistant : &#034;&lt;/p&gt;
&lt;p&gt;Dans tous les cas, le volume de chaque &#233;change doit &#234;tre limit&#233;. Limiter la r&#233;ponse de l'assistant &#224; la premi&#232;re phrase peut s'av&#233;rer suffisant.&lt;/p&gt;
&lt;p&gt;Exemple de construction d'un historique tr&#232;s simple :&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;' class=&#034;php&#034;&gt;&lt;code&gt; // Cumul des &#233;changes, r&#233;ponses r&#233;duites &#224; la premi&#232;re phrase $short = strip_tags($reponse); $short = substr($short, 0, strpos($short, &#034;.&#034;)) . &#034;.&#034;; $newcontext = &#034;User: &#034; . $prompt . &#034;\n Assistant: &#034; . $short . &#034;\n&#034;; $newcontext = $context . &#034;\n &#034; . $newcontext; // cumul des Q/R session_set('context', $newcontext);&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;'Reset' de l'historique&lt;/strong&gt;&lt;br class='autobr' /&gt;
Puisque le service n'a pas de m&#233;moire des &#233;changes et que l'historique doit &#234;tre g&#233;r&#233; par l'application appelante, le 'Reset' de l'historique est g&#233;r&#233; par cette derni&#232;re. Cela peut se r&#233;sumer &#224; l'effacement du contexte dans la session de l'utilisateur.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Ingestion RAG : le script ingestcmd.py</title>
		<link>https://ia.whatiswhat.cloud/spip.php?article4</link>
		<guid isPermaLink="true">https://ia.whatiswhat.cloud/spip.php?article4</guid>
		<dc:date>2024-12-28T17:32:05Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		



		<description>
&lt;p&gt;Le script ingestcmd.py est une commande interne utilis&#233;e par l'application SmartIngest pour effectuer les ajouts et les retraits de documents ou de pages Web. Les index des th&#232;mes concern&#233;s sont mis &#224; jour &#224; la suite de ces mouvements. &lt;br class='autobr' /&gt; En savoir plus sur le script ingestcmd.py : https://ia.dnc.global/documentation/aspects-techniques/Ingestion-RAG-le-script-ingestcmd-py Documents sources &lt;br class='autobr' /&gt;
Les documents sources peuvent &#234;tre :
&lt;br class='autobr' /&gt;
&#8211; un site Web [1],
&lt;br class='autobr' /&gt;
&#8211; un document HTML (mime type 'text/html'), (&#8230;)&lt;/p&gt;


-
&lt;a href="https://ia.whatiswhat.cloud/spip.php?rubrique1" rel="directory"&gt;Outils d'IA textuels&lt;/a&gt;


		</description>


 <content:encoded>&lt;img src='https://ia.whatiswhat.cloud/IMG/logo/main-touchant-ecran-numerique_s.jpg?1735403601' class='spip_logo spip_logo_right' width='150' height='100' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;Le script ingestcmd.py est une commande interne utilis&#233;e par l'application SmartIngest pour effectuer les ajouts et les retraits de documents ou de pages Web. Les index des th&#232;mes concern&#233;s sont mis &#224; jour &#224; la suite de ces mouvements.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;En savoir plus sur le script ingestcmd.py : &lt;a href=&#034;https://ia.dnc.global/documentation/aspects-techniques/Ingestion-RAG-le-script-ingestcmd-py&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://ia.dnc.global/documentation/aspects-techniques/Ingestion-RAG-le-script-ingestcmd-py&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Documents sources&lt;/h2&gt;
&lt;p&gt;Les documents sources peuvent &#234;tre :
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; un site Web&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb2-1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Dans l'&#233;tat actuel du d&#233;veloppement, seuls les sites statiques (sans (&#8230;)&#034; id=&#034;nh2-1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt;,
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; un document HTML (mime type 'text/html'),
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; un dossier local,
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; un fichier local.&lt;/p&gt;
&lt;p&gt;S'agissant de fichiers locaux (ou du contenu d'un dossier local), les types possibles sont, par leur extension : .csv, .docx, .epub, .mbox, .md&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb2-2&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Ainsi que : .md , .markdown , .mkd , .mdown , .mdtxt , .mdtext&#034; id=&#034;nh2-2&#034;&gt;2&lt;/a&gt;]&lt;/span&gt;, .mp3, .pdf, .ppt ...&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb2-3&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;.json en cours de d&#233;veloppement.&#034; id=&#034;nh2-3&#034;&gt;3&lt;/a&gt;]&lt;/span&gt;. Un simple fichier .txt peut &#233;galement &#234;tre trait&#233; mais, &#224; format &#233;l&#233;mentaire, rendu &#233;l&#233;mentaire.&lt;/p&gt;
&lt;p&gt;Le format Markdown est pr&#233;f&#233;rentiel, sous le format d&#233;crit ici : &lt;a href=&#034;https://www.markdownguide.org/basic-syntax/&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://www.markdownguide.org/basic-syntax/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Notez le fonctionnement diff&#233;rent selon la source : &lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; dans le cas d'un site Web, les documents extraits du site sont import&#233;s dans le dossier .../data/&lt;i&gt;theme&lt;/i&gt;,
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; dans tous les autres cas, les fichiers doivent se trouver dans le dossier .../data/&lt;i&gt;theme&lt;/i&gt; : il n'y a pas d'importation.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Ing&#233;rer des documents&lt;/h2&gt;
&lt;p&gt;Usage :&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;'&gt;&lt;code&gt;.../ingestcmd.py &lt;theme&gt; --source {dir, file,url} [--recurse] [--all] [--forwards]&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Param&#232;tres :&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th id='id4d3f_c0'&gt;Argument&lt;/th&gt;&lt;th id='id4d3f_c1'&gt; &lt;/th&gt;&lt;th id='id4d3f_c2'&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id4d3f_c0'&gt;theme&lt;/td&gt;
&lt;td headers='id4d3f_c1'&gt;Requis en premi&#232;re position&lt;/td&gt;
&lt;td headers='id4d3f_c2'&gt;Th&#232;me : espace de donn&#233;es sp&#233;cifique. Un nom court, en minuscules, form&#233; des caract&#232;res 'a-z', '-' et '_' , sans espace. D&#233;faut : itego.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td headers='id4d3f_c0'&gt;&#8212;source&lt;/td&gt;
&lt;td headers='id4d3f_c1'&gt;Requis/Optionnel&lt;/td&gt;
&lt;td headers='id4d3f_c2'&gt;R&#233;pertoire, fichier ou URL. Ce doit &#234;tre des adresses absolues. Cet argument est requis pour toute autre action que &#8212;delete_document_by_filename.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id4d3f_c0'&gt;&#8212;dynamic&lt;/td&gt;
&lt;td headers='id4d3f_c1'&gt;Optionnel&lt;/td&gt;
&lt;td headers='id4d3f_c2'&gt;Indique que le site est dynamique et que les scripts doivent &#234;tre ex&#233;cut&#233;s au chargement de la page.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td headers='id4d3f_c0'&gt;&#8212;recurse&lt;/td&gt;
&lt;td headers='id4d3f_c1'&gt;Optionnel&lt;/td&gt;
&lt;td headers='id4d3f_c2'&gt;Ne s'applique que si la source est un r&#233;pertoire. Indique que les sous-r&#233;pertoires doivent &#234;tre parcourus.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id4d3f_c0'&gt;&#8212;all&lt;/td&gt;
&lt;td headers='id4d3f_c1'&gt;Optionnel&lt;/td&gt;
&lt;td headers='id4d3f_c2'&gt;Indique que tout les fichier doivent &#234;tre trait&#233;s ind&#233;pendamment de leur &#226;ge, qu'ils aient &#233;t&#233; modifi&#233;s ou non.&lt;br class='autobr' /&gt;
Attention : le param&#232;tre &#8212;all est requis pour une premi&#232;re ingestion.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td headers='id4d3f_c0'&gt;&#8212;forwards&lt;/td&gt;
&lt;td headers='id4d3f_c1'&gt;Optionnel&lt;/td&gt;
&lt;td headers='id4d3f_c2'&gt;Ne s'applique que si la source est un site Web. Indique de ne pas remonter vers la racine des documents. Par exemple, si l'URL est &lt;a href=&#034;https://monsite.com/fr&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://monsite.com/fr&lt;/a&gt;, le chemin /en ne sera pas parcouru. Voir &#233;galement : &lt;a href='https://ia.whatiswhat.cloud/spip.php?article13#urlsarborescentes'&gt;article 13&lt;/a&gt; .&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id4d3f_c0'&gt;&#8212;levels&lt;/td&gt;
&lt;td headers='id4d3f_c1'&gt;Optionnel&lt;/td&gt;
&lt;td headers='id4d3f_c2'&gt;S'applique si la source est un site Web ou un r&#233;pertoire. Nombre de niveaux &#224; parcourir.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;R&#233;ponse :&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th id='ide171_c0'&gt;R&#233;ponse&lt;/th&gt;&lt;th id='ide171_c1'&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='ide171_c0'&gt;Fatal error : &lt;i&gt;N&lt;/i&gt; : &lt;i&gt;erreur&lt;/i&gt;&lt;/td&gt;
&lt;td headers='ide171_c1'&gt;L'ex&#233;cution du script s'arr&#234;te sur l'erreur indiqu&#233;e.&lt;/td&gt;&lt;/tr&gt;
&lt;tr class='row_even even'&gt;
&lt;td headers='ide171_c0'&gt;End, count : &lt;i&gt;compte&lt;/i&gt;&lt;/td&gt;
&lt;td headers='ide171_c1'&gt;L'ex&#233;cution du script s'est termin&#233;e avec succ&#232;s, le nombre de documents trait&#233;s est indiqu&#233; par &lt;i&gt;count&lt;/i&gt;.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;h2 class=&#034;spip&#034;&gt;Supprimer un document&lt;/h2&gt;
&lt;p&gt;Usage :&lt;/p&gt;
&lt;div class='precode'&gt;&lt;pre dir='ltr' style='text-align: left;'&gt;&lt;code&gt;.../ingestcmd.py &lt;theme&gt; --delete_document_by_filename {filename'}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Param&#232;tres :&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th id='id011b_c0'&gt;Argument&lt;/th&gt;&lt;th id='id011b_c1'&gt; &lt;/th&gt;&lt;th id='id011b_c2'&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='id011b_c0'&gt;&#8212;delete_document_by_filename&lt;/td&gt;
&lt;td headers='id011b_c1'&gt;Optionnel&lt;/td&gt;
&lt;td headers='id011b_c2'&gt;Supprime le document ayant le nom de fichier indiqu&#233; (tel que dans le dossier data du th&#232;me) et met &#224; jour les index. Doit &#234;tre utilis&#233; sans autre argument que &#8212;source.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;R&#233;ponse :&lt;/p&gt;
&lt;table class=&#034;table spip&#034;&gt;
&lt;thead&gt;&lt;tr class='row_first'&gt;&lt;th id='ided97_c0'&gt;R&#233;ponse&lt;/th&gt;&lt;th id='ided97_c1'&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr class='row_odd odd'&gt;
&lt;td headers='ided97_c0'&gt;End, count : &lt;i&gt;compte&lt;/i&gt;&lt;/td&gt;
&lt;td headers='ided97_c1'&gt;L'ex&#233;cution du script s'est termin&#233;e, &lt;i&gt;count&lt;/i&gt;. = 1 indique le succ&#232;s. En cas d'erreur, plus d'information dans le fichier nohup.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb2-1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh2-1&#034; class=&#034;spip_note&#034; title=&#034;Notes 2-1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;Dans l'&#233;tat actuel du d&#233;veloppement, seuls les sites statiques (sans ex&#233;cution de Javascript pour la g&#233;n&#233;ration du contenu) sont trait&#233;s. Pour les sites et pages dynamiques, le d&#233;veloppement est en cours.&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#034;nb2-2&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh2-2&#034; class=&#034;spip_note&#034; title=&#034;Notes 2-2&#034; rev=&#034;appendix&#034;&gt;2&lt;/a&gt;] &lt;/span&gt;Ainsi que : .md , .markdown , .mkd , .mdown , .mdtxt , .mdtext&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#034;nb2-3&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh2-3&#034; class=&#034;spip_note&#034; title=&#034;Notes 2-3&#034; rev=&#034;appendix&#034;&gt;3&lt;/a&gt;] &lt;/span&gt;.json en cours de d&#233;veloppement.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>ChattyWS</title>
		<link>https://ia.whatiswhat.cloud/spip.php?article2</link>
		<guid isPermaLink="true">https://ia.whatiswhat.cloud/spip.php?article2</guid>
		<dc:date>2024-12-27T18:55:10Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		



		<description>
&lt;p&gt;ChattyWS est le d&#233;monstrateur d'un service web d'IA g&#233;n&#233;rative con&#231;u pour &#234;tre int&#233;gr&#233; &#224; une application textuelle. Par exemple, il peut r&#233;pondre aux questions, apporter automatiquement des corrections aux textes fournis et s'opposer aux contenus inappropri&#233;s. Et beaucoup plus encore ... &lt;br class='autobr' /&gt; En savoir plus sur ChattyWS : https://ia.dnc.global/documentation/Outils-d-IA-textuels/ChattyWS &lt;br class='autobr' /&gt;
Les Th&#232;mes et les Modes permettent de configurer ChattyWS afin d'effectuer toutes t&#226;ches d'IA g&#233;n&#233;rative (&#8230;)&lt;/p&gt;


-
&lt;a href="https://ia.whatiswhat.cloud/spip.php?rubrique1" rel="directory"&gt;Outils d'IA textuels&lt;/a&gt;


		</description>


 <content:encoded>&lt;img src='https://ia.whatiswhat.cloud/IMG/logo/watchbot_240.png?1735379344' class='spip_logo spip_logo_right' width='150' height='118' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;ChattyWS est le d&#233;monstrateur d'un service web d'IA g&#233;n&#233;rative con&#231;u pour &#234;tre int&#233;gr&#233; &#224; une application textuelle. Par exemple, il peut r&#233;pondre aux questions, apporter automatiquement des corrections aux textes fournis et s'opposer aux contenus inappropri&#233;s. Et beaucoup plus encore ...&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;En savoir plus sur ChattyWS : &lt;a href=&#034;https://ia.dnc.global/documentation/Outils-d-IA-textuels/ChattyWS&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://ia.dnc.global/documentation/Outils-d-IA-textuels/ChattyWS&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Les &lt;strong&gt;Th&#232;mes &lt;/strong&gt; et les &lt;strong&gt;Modes &lt;/strong&gt; permettent de configurer ChattyWS afin d'effectuer toutes t&#226;ches d'IA g&#233;n&#233;rative sur les donn&#233;es de diff&#233;rentes entit&#233;s.&lt;/p&gt;
&lt;p&gt;Le d&#233;monstrateur est plus particuli&#232;rement configur&#233; pour appliquer automatiquement des corrections au texte fourni et s'opposer aux contenus inappropri&#233;s. &lt;br class='autobr' /&gt;
Ceci en fait un composant id&#233;al pour, par exemple :
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; assurer la qualit&#233; de r&#233;daction d'un site Web,
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; assurer automatiquement la mod&#233;ration d'un forum, &lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; r&#233;pondre &#224; une question dans le cas d'une FAQ etc.&lt;/p&gt;
&lt;p&gt;&lt;a id=&#034;themes&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Th&#232;mes&lt;/h2&gt;
&lt;p&gt;ChattyBot et ChattyWS utilisent les m&#234;mes donn&#233;es mat&#233;rialis&#233;s sur le serveur par un r&#233;pertoire portant le nom du th&#232;me : &lt;br class='autobr' /&gt;
/home/iawiw/public_html/data/&lt;i&gt;theme&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;a id=&#034;modes&#034;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Modes&lt;/h2&gt;
&lt;p&gt;ChattyWS est hautement configurable afin de &lt;strong&gt;r&#233;pondre aux objectifs particuliers d'une application donn&#233;e&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Dans le cadre de ce d&#233;monstrateur&lt;/i&gt;, ChattyWS a permis de configurer les &lt;strong&gt;modes&lt;/strong&gt; suivants :&lt;br class='autobr' /&gt; - &lt;strong&gt;answer&lt;/strong&gt; : L'assistant doit fournir une r&#233;ponse &#224; la question pos&#233;e.&lt;br class='autobr' /&gt; - &lt;strong&gt;summarize&lt;/strong&gt; : L'assistant doit r&#233;sumer et corriger un texte donn&#233;.&lt;br class='autobr' /&gt; - &lt;strong&gt;correct&lt;/strong&gt; : L'assistant doit corriger l'orthographe et la grammaire d'un texte.&lt;br class='autobr' /&gt; - &lt;strong&gt;improve&lt;/strong&gt; : L'assistant doit am&#233;liorer un texte en &#233;liminant les r&#233;p&#233;titions.&lt;br class='autobr' /&gt; - &lt;strong&gt;complete&lt;/strong&gt; : L'assistant doit compl&#233;ter une question en se basant sur un contexte donn&#233;.&lt;br class='autobr' /&gt; - &lt;strong&gt;extend&lt;/strong&gt; : L'assistant doit d&#233;velopper un texte en d&#233;taillant chaque phrase.&lt;/p&gt;
&lt;p&gt;Tous les modes s'opposent &#224; une question inappropri&#233;e (vulgarit&#233;, racisme, sexisme, conflictualit&#233; etc.) en g&#233;n&#233;rant un message d'erreur.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Tester ChattyWS : R&#233;ponse au format JSON &#224; un POST&lt;/h2&gt;
&lt;p&gt;La page &lt;a href=&#034;https://ia.whatiswhat.cloud/?page=test_wsgi_1&#034;&gt;Test ChattyWS 1&lt;/a&gt; pr&#233;sente un formulaire qui permet d'adresser une requ&#234;te HTTP POST au web service.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Tester ChattyWS : mod&#233;ration et traduction&lt;/h2&gt;
&lt;p&gt;La page &lt;a href=&#034;https://ia.whatiswhat.cloud/?page=test_wsgi_2&#034;&gt;Test ChattyWS 2&lt;/a&gt; pr&#233;sente un formulaire qui permet d'effectuer un traitement de mod&#233;ration et de traduction sur les donn&#233;es du th&#232;me 'securite'.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>ChattyBot</title>
		<link>https://ia.whatiswhat.cloud/spip.php?article1</link>
		<guid isPermaLink="true">https://ia.whatiswhat.cloud/spip.php?article1</guid>
		<dc:date>2024-12-27T18:46:13Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		



		<description>
&lt;p&gt;ChattyBot est un robot conversationnel. C'est une application Web autonome qui traite des donn&#233;es sanctuaris&#233;es dans un espace priv&#233;. &lt;br class='autobr' /&gt; En savoir plus sur ChattyBot : https://ia.dnc.global/documentation/Outils-d-IA-textuels/ChattyBot &lt;br class='autobr' /&gt;
Th&#232;mes &lt;br class='autobr' /&gt;
ChattyBot est capable de s&#233;curiser les donn&#233;es de plusieurs entit&#233;s en les isolant dans des espaces de donn&#233;es sp&#233;cifiques, mat&#233;rialis&#233;s sur le serveur par un r&#233;pertoire portant le nom du th&#232;me. &lt;br class='autobr' /&gt;
Les th&#232;mes disponibles dans le prototype comprennent (&#8230;)&lt;/p&gt;


-
&lt;a href="https://ia.whatiswhat.cloud/spip.php?rubrique1" rel="directory"&gt;Outils d'IA textuels&lt;/a&gt;


		</description>


 <content:encoded>&lt;img src='https://ia.whatiswhat.cloud/IMG/logo/chattybot_smartphone_100.png?1735379547' class='spip_logo spip_logo_right' width='75' height='150' alt=&#034;&#034; /&gt;
		&lt;div class='rss_chapo'&gt;&lt;p&gt;ChattyBot est un robot conversationnel. C'est une application Web autonome qui traite des donn&#233;es sanctuaris&#233;es dans un espace priv&#233;.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;En savoir plus sur ChattyBot : &lt;a href=&#034;https://ia.dnc.global/documentation/Outils-d-IA-textuels/ChattyBot&#034; class=&#034;spip_url spip_out auto&#034; rel=&#034;nofollow external&#034;&gt;https://ia.dnc.global/documentation/Outils-d-IA-textuels/ChattyBot&lt;/a&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Th&#232;mes&lt;/h2&gt;
&lt;p&gt;ChattyBot est capable de &lt;strong&gt;s&#233;curiser les donn&#233;es de plusieurs entit&#233;s en les isolant dans des espaces de donn&#233;es sp&#233;cifiques&lt;/strong&gt;, mat&#233;rialis&#233;s sur le serveur par un r&#233;pertoire portant le nom du th&#232;me.&lt;/p&gt;
&lt;p&gt;Les th&#232;mes disponibles dans le prototype comprennent actuellement (2024/12) : &lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; itego : (th&#232;me par d&#233;faut) int&#232;gre la totalit&#233; des donn&#233;es d'i-Tego diffus&#233;es sur le Web (plus de 500 pages A4). &lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; securite : Le contenu du site trankilis.com et des documents normatifs portant sur la s&#233;curit&#233; du travail dans l'industrie et les contr&#244;les techniques.
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; thewiw-corporate : le contenu du &lt;a href=&#034;https://thewiw.com/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;site web de What is What&lt;/a&gt;
&lt;br /&gt;&lt;span class=&#034;spip-puce ltr&#034;&gt;&lt;b&gt;&#8211;&lt;/b&gt;&lt;/span&gt; thewiw-help : le contenu de l'aide en ligne (contenu p&#233;rim&#233;).&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;TesterChattyBot&lt;/h2&gt;
&lt;p&gt;Un d&#233;monstrateur de ChattyBot est sur le Web &#224; l'adresse : &lt;br class='autobr' /&gt; &lt;a href=&#034;https://chat.ia.whatiswhat.cloud/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;https://chat.ia.whatiswhat.cloud/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Le th&#232;me par d&#233;faut est &#034;thewiw-help&#034;. ChattyBot peut &#234;tre lanc&#233; sur un autre th&#232;me, par exemple &#034;thewiw-corporate&#034; :&lt;br class='autobr' /&gt; &lt;a href=&#034;https://chat.ia.whatiswhat.cloud/?theme=thewiw-corporate&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;https://chat.ia.whatiswhat.cloud/?theme=thewiw-corporate&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
