mirror of
https://github.com/Ladebeze66/coffreobsidian.git
synced 2025-12-16 00:36:49 +01:00
Mise à jour rapide
This commit is contained in:
parent
5e0c1e70ca
commit
95c2406c39
11
.obsidian/graph.json
vendored
11
.obsidian/graph.json
vendored
@ -5,7 +5,7 @@
|
||||
"showAttachments": false,
|
||||
"hideUnresolved": false,
|
||||
"showOrphans": true,
|
||||
"collapse-color-groups": true,
|
||||
"collapse-color-groups": false,
|
||||
"colorGroups": [
|
||||
{
|
||||
"query": "path:Obsidian ",
|
||||
@ -41,6 +41,13 @@
|
||||
"a": 1,
|
||||
"rgb": 8091799
|
||||
}
|
||||
},
|
||||
{
|
||||
"query": "path:webdev ",
|
||||
"color": {
|
||||
"a": 1,
|
||||
"rgb": 14937586
|
||||
}
|
||||
}
|
||||
],
|
||||
"collapse-display": true,
|
||||
@ -53,6 +60,6 @@
|
||||
"repelStrength": 10,
|
||||
"linkStrength": 1,
|
||||
"linkDistance": 250,
|
||||
"scale": 1.0000000000000056,
|
||||
"scale": 0.5087618855792638,
|
||||
"close": true
|
||||
}
|
||||
456
.obsidian/workspace.json
vendored
456
.obsidian/workspace.json
vendored
@ -4,325 +4,38 @@
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "c2f4a1753293419f",
|
||||
"id": "d991961c29ad106d",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "68491419da144553",
|
||||
"id": "8cd31f588ec21296",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "Obsidian/Ouvrir un terminal dans Obsidian.md",
|
||||
"mode": "preview",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "Ouvrir un terminal dans Obsidian"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "6190bc947aeac61d",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "ollama/guide_ollama_complet.md",
|
||||
"file": "command_list/Ollama commands.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "guide_ollama_complet"
|
||||
"title": "Ollama commands"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "4a79ae9b5cf40685",
|
||||
"id": "97ca7aff179659c4",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "Serveur perso/Infrastructure Optimisée d'IA Locale.md",
|
||||
"mode": "preview",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "Infrastructure Optimisée d'IA Locale"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "c732e844eb2b7094",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "Serveur perso/Infrastructure Optimisée d'IA Locale (version 2).md",
|
||||
"file": "webdev/ROBO_MAT_Code_WLangage_Organise.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "Infrastructure Optimisée d'IA Locale (version 2)"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "c425e145aee8cd6a",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "Serveur perso/Agent LLM Classes recherches 1.md",
|
||||
"mode": "preview",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "Agent LLM Classes recherches 1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "9f01b54131d8ad11",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "Serveur perso/Agent LLM Classes recherches 1.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "Agent LLM Classes recherches 1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "b9670384c5347fe5",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "Serveur perso/LLM Obsidian.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "LLM Obsidian"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "3d7bf6b1be159bbe",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "Serveur perso/LLM Cursor.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "LLM Cursor"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "93feebe5d77bd0dc",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "ollama/Plan d'apprentissage détaillé sur Ollama.md",
|
||||
"mode": "preview",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "Plan d'apprentissage détaillé sur Ollama"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aab7b92f101ead65",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "inbox/StramDeck config.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "StramDeck config"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "bf4f5ca51a0e0dd8",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "Serveur perso/Optimisation bios serveur.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "Optimisation bios serveur"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "2bc8a1b7fd6d9af5",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "inbox/wild.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "wild"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "15f320992faf0688",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "Jour 5 notes support traitement ticket dev.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "Jour 5 notes support traitement ticket dev"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "b3459535494873e5",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "Obsidian/Obsidian CSS.md",
|
||||
"mode": "preview",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "Obsidian CSS"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "72aa54670d29b111",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "inbox/prompt.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "prompt"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "0e580d10b27a161e",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "inbox/prompt.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "prompt"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "5afdc6cb3fe20644",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "Serveur perso/Préversion IA locales personnelle.md",
|
||||
"mode": "preview",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "Préversion IA locales personnelle"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "4e69fedfd0d21df9",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "graph",
|
||||
"state": {},
|
||||
"icon": "lucide-git-fork",
|
||||
"title": "Vue graphique"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "48842f66b7e7e365",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "Obsidian/Liens dans obsidian.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "Liens dans obsidian"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "64922fb286281777",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "graph",
|
||||
"state": {},
|
||||
"icon": "lucide-git-fork",
|
||||
"title": "Vue graphique"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "4102dd91ee7179ea",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "inbox/Piste d'améliorations du projet IA locale.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "Piste d'améliorations du projet IA locale"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "ff79cd1085f74b83",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "Serveur perso/Création de classes agents pour LLM locaux avec Cursor et Ollama.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "Création de classes agents pour LLM locaux avec Cursor et Ollama"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "6d3c8a826a68010d",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "Obsidian/Ouvrir un terminal dans Obsidian.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "Ouvrir un terminal dans Obsidian"
|
||||
"title": "ROBO_MAT_Code_WLangage_Organise"
|
||||
}
|
||||
}
|
||||
],
|
||||
"currentTab": 11
|
||||
]
|
||||
}
|
||||
],
|
||||
"direction": "vertical"
|
||||
@ -455,8 +168,8 @@
|
||||
"state": {
|
||||
"type": "SC-custom-variables-view",
|
||||
"state": {},
|
||||
"icon": "code-glyph",
|
||||
"title": "Shell commands: Custom variables"
|
||||
"icon": "lucide-file",
|
||||
"title": "Le module complémentaire n'est plus actif."
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -465,8 +178,8 @@
|
||||
"state": {
|
||||
"type": "SC-custom-variables-view",
|
||||
"state": {},
|
||||
"icon": "code-glyph",
|
||||
"title": "Shell commands: Custom variables"
|
||||
"icon": "lucide-file",
|
||||
"title": "Le module complémentaire n'est plus actif."
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -475,8 +188,8 @@
|
||||
"state": {
|
||||
"type": "side-panel-control-view",
|
||||
"state": {},
|
||||
"icon": "viewIcon",
|
||||
"title": "Markdown-Autocomplete"
|
||||
"icon": "lucide-file",
|
||||
"title": "Le module complémentaire n'est plus actif."
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -485,8 +198,8 @@
|
||||
"state": {
|
||||
"type": "SC-custom-variables-view",
|
||||
"state": {},
|
||||
"icon": "code-glyph",
|
||||
"title": "Shell commands: Custom variables"
|
||||
"icon": "lucide-file",
|
||||
"title": "Le module complémentaire n'est plus actif."
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -495,8 +208,8 @@
|
||||
"state": {
|
||||
"type": "SC-custom-variables-view",
|
||||
"state": {},
|
||||
"icon": "code-glyph",
|
||||
"title": "Shell commands: Custom variables"
|
||||
"icon": "lucide-file",
|
||||
"title": "Le module complémentaire n'est plus actif."
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -505,8 +218,8 @@
|
||||
"state": {
|
||||
"type": "SC-custom-variables-view",
|
||||
"state": {},
|
||||
"icon": "code-glyph",
|
||||
"title": "Shell commands: Custom variables"
|
||||
"icon": "lucide-file",
|
||||
"title": "Le module complémentaire n'est plus actif."
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -515,8 +228,8 @@
|
||||
"state": {
|
||||
"type": "SC-custom-variables-view",
|
||||
"state": {},
|
||||
"icon": "code-glyph",
|
||||
"title": "Shell commands: Custom variables"
|
||||
"icon": "lucide-file",
|
||||
"title": "Le module complémentaire n'est plus actif."
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -525,8 +238,8 @@
|
||||
"state": {
|
||||
"type": "SC-custom-variables-view",
|
||||
"state": {},
|
||||
"icon": "code-glyph",
|
||||
"title": "Shell commands: Custom variables"
|
||||
"icon": "lucide-file",
|
||||
"title": "Le module complémentaire n'est plus actif."
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -535,8 +248,8 @@
|
||||
"state": {
|
||||
"type": "SC-custom-variables-view",
|
||||
"state": {},
|
||||
"icon": "code-glyph",
|
||||
"title": "Shell commands: Custom variables"
|
||||
"icon": "lucide-file",
|
||||
"title": "Le module complémentaire n'est plus actif."
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -545,8 +258,8 @@
|
||||
"state": {
|
||||
"type": "SC-custom-variables-view",
|
||||
"state": {},
|
||||
"icon": "code-glyph",
|
||||
"title": "Shell commands: Custom variables"
|
||||
"icon": "lucide-file",
|
||||
"title": "Le module complémentaire n'est plus actif."
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -555,8 +268,8 @@
|
||||
"state": {
|
||||
"type": "SC-custom-variables-view",
|
||||
"state": {},
|
||||
"icon": "code-glyph",
|
||||
"title": "Shell commands: Custom variables"
|
||||
"icon": "lucide-file",
|
||||
"title": "Le module complémentaire n'est plus actif."
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -565,8 +278,8 @@
|
||||
"state": {
|
||||
"type": "SC-custom-variables-view",
|
||||
"state": {},
|
||||
"icon": "code-glyph",
|
||||
"title": "Shell commands: Custom variables"
|
||||
"icon": "lucide-file",
|
||||
"title": "Le module complémentaire n'est plus actif."
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -575,8 +288,8 @@
|
||||
"state": {
|
||||
"type": "SC-custom-variables-view",
|
||||
"state": {},
|
||||
"icon": "code-glyph",
|
||||
"title": "Shell commands: Custom variables"
|
||||
"icon": "lucide-file",
|
||||
"title": "Le module complémentaire n'est plus actif."
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -585,8 +298,8 @@
|
||||
"state": {
|
||||
"type": "SC-custom-variables-view",
|
||||
"state": {},
|
||||
"icon": "code-glyph",
|
||||
"title": "Shell commands: Custom variables"
|
||||
"icon": "lucide-file",
|
||||
"title": "Le module complémentaire n'est plus actif."
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -595,8 +308,8 @@
|
||||
"state": {
|
||||
"type": "SC-custom-variables-view",
|
||||
"state": {},
|
||||
"icon": "code-glyph",
|
||||
"title": "Shell commands: Custom variables"
|
||||
"icon": "lucide-file",
|
||||
"title": "Le module complémentaire n'est plus actif."
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -605,8 +318,8 @@
|
||||
"state": {
|
||||
"type": "SC-custom-variables-view",
|
||||
"state": {},
|
||||
"icon": "code-glyph",
|
||||
"title": "Shell commands: Custom variables"
|
||||
"icon": "lucide-file",
|
||||
"title": "Le module complémentaire n'est plus actif."
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -615,8 +328,8 @@
|
||||
"state": {
|
||||
"type": "SC-custom-variables-view",
|
||||
"state": {},
|
||||
"icon": "code-glyph",
|
||||
"title": "Shell commands: Custom variables"
|
||||
"icon": "lucide-file",
|
||||
"title": "Le module complémentaire n'est plus actif."
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -625,8 +338,8 @@
|
||||
"state": {
|
||||
"type": "SC-custom-variables-view",
|
||||
"state": {},
|
||||
"icon": "code-glyph",
|
||||
"title": "Shell commands: Custom variables"
|
||||
"icon": "lucide-file",
|
||||
"title": "Le module complémentaire n'est plus actif."
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -635,8 +348,8 @@
|
||||
"state": {
|
||||
"type": "SC-custom-variables-view",
|
||||
"state": {},
|
||||
"icon": "code-glyph",
|
||||
"title": "Shell commands: Custom variables"
|
||||
"icon": "lucide-file",
|
||||
"title": "Le module complémentaire n'est plus actif."
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -645,8 +358,8 @@
|
||||
"state": {
|
||||
"type": "SC-custom-variables-view",
|
||||
"state": {},
|
||||
"icon": "code-glyph",
|
||||
"title": "Shell commands: Custom variables"
|
||||
"icon": "lucide-file",
|
||||
"title": "Le module complémentaire n'est plus actif."
|
||||
}
|
||||
}
|
||||
],
|
||||
@ -660,54 +373,56 @@
|
||||
"left-ribbon": {
|
||||
"hiddenItems": {
|
||||
"workspaces:Gérer les espaces de travail": false,
|
||||
"table-editor-obsidian:Advanced Tables Toolbar": false,
|
||||
"obsidian-markdown-formatting-assistant-plugin:Open Markdown Formatting Assistant": false,
|
||||
"switcher:Ouvrir le sélecteur rapide": false,
|
||||
"graph:Ouvrir la vue graphique": false,
|
||||
"canvas:Créer une nouvelle toile": false,
|
||||
"daily-notes:Ouvrir la note quotidienne": false,
|
||||
"templates:Insérer le modèle": false,
|
||||
"command-palette:Ouvrir la palette de commandes": false,
|
||||
"table-editor-obsidian:Advanced Tables Toolbar": false,
|
||||
"obsidian-markdown-formatting-assistant-plugin:Open Markdown Formatting Assistant": false,
|
||||
"obsidian-shellcommands:Shell commands: Custom variables": false,
|
||||
"templater-obsidian:Templater": false
|
||||
}
|
||||
},
|
||||
"active": "2bc8a1b7fd6d9af5",
|
||||
"active": "8cd31f588ec21296",
|
||||
"lastOpenFiles": [
|
||||
"Serveur perso/Optimisation bios serveur.md",
|
||||
"inbox/wild.md",
|
||||
"Serveur perso/Infrastructure Optimisée d'IA Locale (version 2).md",
|
||||
"Serveur perso/Infrastructure Optimisée d'IA Locale.md",
|
||||
"inbox/StramDeck config.md",
|
||||
"ollama/Plan d'apprentissage détaillé sur Ollama.md",
|
||||
"Streamdeck",
|
||||
"ollama/guide_ollama_complet.md",
|
||||
"Obsidian/Couleurs liens Obsidian.md",
|
||||
"Stage/20 mars réponses Karim.md",
|
||||
"Obsidian/Notes Obsidian.md",
|
||||
"Obsidian/Guide_Organisation.md",
|
||||
"Obsidian/Liens dans obsidian.md",
|
||||
"Serveur perso/Agent LLM Classes recherches 1.md",
|
||||
"Serveur perso/Création de classes agents pour LLM locaux avec Cursor et Ollama.md",
|
||||
"command_list/Ollama commands.md",
|
||||
"Serveur perso/automatiser-lancement-serveur-windows.md",
|
||||
"Serveur perso/LLM Obsidian.md",
|
||||
"Serveur perso/Piste d'améliorations du projet IA locale.md",
|
||||
"Serveur perso/Préversion IA locales personnelle.md",
|
||||
"webdev/ROBO_MAT_Analyse_clsMistral.md",
|
||||
"webdev/ROBO_MAT_Analyse_clsOllama.md",
|
||||
"webdev/Non confirmé 702528.crdownload",
|
||||
"webdev/ROBO_MAT_Analyse_Fonctionnelle.md",
|
||||
"webdev/Rappel de certaines notions WLangage et Classes.md",
|
||||
"inbox/Non confirmé 367059.crdownload",
|
||||
"webdev/ROBO_MAT_Code_WLangage_Organise.md",
|
||||
"webdev/PJ/wlangage_class_code.json",
|
||||
"webdev/Analyse_ROBO_MAT_Complete.md",
|
||||
"inbox/prompt.md",
|
||||
"inbox/Odoo.md",
|
||||
"inbox/Notes RAGFLOW.md",
|
||||
"inbox/Notes projet LLM.md",
|
||||
"Serveur perso/Agent LLM recherches 2.md",
|
||||
"Obsidian/Ouvrir un terminal dans Obsidian.md",
|
||||
"Obsidian/Obsidian CSS.md",
|
||||
"Serveur perso/Recherche modèles.md",
|
||||
"command_list",
|
||||
"Stage",
|
||||
"ollama",
|
||||
"Obsidian",
|
||||
"Serveur perso",
|
||||
"inbox/Node.js.md",
|
||||
"inbox/Fichier type json récupération odoo.md",
|
||||
"inbox/Arborescence du programme.md",
|
||||
"command_list/Git commands.md",
|
||||
"inbox/StramDeck config.md",
|
||||
"inbox/Scripts requêtes Odoo.md",
|
||||
"inbox/ROBO_MAT_Code_WLangage_Organise.json",
|
||||
"inbox/Non confirmé 873082.crdownload",
|
||||
"inbox/ROBO_MAT_Analyse_clsDeepl.md",
|
||||
"inbox/Non confirmé 727828.crdownload",
|
||||
"inbox/version épuée.md",
|
||||
"inbox/Sans titre.md",
|
||||
"webdev/ROBO_MAT_Analyse_Page_TEST_et_LLM.md",
|
||||
"inbox/Non confirmé 465885.crdownload",
|
||||
"webdev/structure_projet_robo_mat.md",
|
||||
"webdev/Application webdev (1).md",
|
||||
"inbox/Non confirmé 948241.crdownload",
|
||||
"inbox/Non confirmé 34515.crdownload",
|
||||
"inbox/Non confirmé 822614.crdownload",
|
||||
"inbox/ROBO_MAT_Analyse_Adaptation.md",
|
||||
"webdev/00_Template_Analyse_ROBO_MAT.md",
|
||||
"webdev/01_WLangage_Récupération_Projet_WebDev.md",
|
||||
"captures/signature.png",
|
||||
"inbox",
|
||||
"captures/Capture d'écran 2025-03-20 150304.png",
|
||||
"captures/Capture d'écran 2025-03-20 150213.png",
|
||||
"captures/Capture d'écran 2025-03-20 150023.png",
|
||||
@ -716,9 +431,6 @@
|
||||
"captures/Capture d'écran 2025-03-20 144343.png",
|
||||
"captures/Capture d'écran 2025-03-20 144317.png",
|
||||
"captures/Capture d'écran 2025-03-20 143039.png",
|
||||
"captures/Capture d'écran 2025-03-20 112035.png",
|
||||
"captures",
|
||||
"data/ticket_10995_raw.json",
|
||||
"data"
|
||||
"captures/Capture d'écran 2025-03-20 112035.png"
|
||||
]
|
||||
}
|
||||
@ -15,4 +15,5 @@
|
||||
- [ ] Voir efficacité de guider l'utilisateur pour récupérer les informations plus rapidement
|
||||
- [ ] Mise en place d'une interface locale? (Gradio ou autre) avec enregistrement des conversations pour tests et ajout des conversations au JSON pour regrouper es données concernant la demande
|
||||
|
||||
[[20 mars réponses Karim]]
|
||||
[[20 mars réponses Karim]]
|
||||
[[Résumé entretien 20 mars]]
|
||||
@ -49,4 +49,5 @@ documentation ollama API
|
||||
[Commencer \| DataCamp](https://www.datacamp.com/fr/users/sign_up?redirect=%2Ftracks%2Fai-fundamentals%2Fenroll) grascalvet.fernand@gmail.com Lestat66!
|
||||
|
||||
[[Agent]]
|
||||
[[guide_ollama_complet]]
|
||||
[[guide_ollama_complet]]
|
||||
[[Résumé entretien 20 mars]]
|
||||
@ -76,6 +76,7 @@ Pour effectuer des calculs sur des variables, le WLangage met à disposition les
|
||||
|
||||
D'autres opérateurs sont disponibles. Pour plus de détails sur les opérateurs, consultez [Liste des opérateurs](https://doc.pcsoft.fr/?1512010&name=liste_des_operateurs "Liste des opérateurs").
|
||||
|
||||
[[01_WLangage_Récupération_Projet_WebDev]]
|
||||
|
||||
|
||||
|
||||
|
||||
178
Stage/Résumé entretien 20 mars.md
Normal file
178
Stage/Résumé entretien 20 mars.md
Normal file
@ -0,0 +1,178 @@
|
||||
# Organisation des notes et questions
|
||||
|
||||
## ✅ Partie 1 : Liens entre Questions et Réponses
|
||||
|
||||
### 🔄 Correspondances identifiées
|
||||
|
||||
|Question|Réponse(s) correspondante(s)|
|
||||
|---|---|
|
||||
|Pipeline nodes vs FastAPI|❌ Non abordé clairement dans la réunion|
|
||||
|Validation format JSON|❌ Non abordé directement|
|
||||
|Mise en place de scripts|✅ Création de petits scripts + plus gros pour recherche + scripts autonomes|
|
||||
|Argument + script pour exécution|✅ Utilisation possible dans un cadre automatisé avec LLMs / agents|
|
||||
|Bibliothèque de scripts pour données|✅ Extraction depuis tickets / traitement dans scripts structurés / stockage JSON|
|
||||
|Création de base de données|✅ ElasticSearch pour structuration + consultation des tickets résolus|
|
||||
|Déplacement des données résolues|✅ Données déplacées après clôture ticket, nettoyées pour intégration finale|
|
||||
|Quel LLM pour scripts ?|✅ Plusieurs options : LLava, LangChain, LlamaIndex, Ollama, agents multiples|
|
||||
|Fine-tuning besoin ?|✅ Oui, prévu régulièrement (mensuel) avec LoRA après nettoyage + synthèse|
|
||||
|Interface locale ?|✅ Interface type Gradio, conversations sauvegardées et réinjectées dans JSON|
|
||||
|
||||
---
|
||||
|
||||
## 📑 Partie 2 : Résumé structuré de la réunion
|
||||
|
||||
### 📚 1. **Base de données et stockage des tickets**
|
||||
|
||||
- Utilisation d'**ElasticSearch** comme base centrale.
|
||||
- Contenu : fils de discussions clients/support + tickets clos.
|
||||
- Extraction automatique de paires Q/R dès qu'un ticket est considéré comme résolu.
|
||||
- Traitement des images : conversion en texte explicatif pour intégration dans la synthèse.
|
||||
|
||||
### ⚙️ 2. **Organisation des scripts d'automatisation**
|
||||
|
||||
- Mise en place d’une **bibliothèque de scripts** :
|
||||
- **Scripts courts** : tâches ciblées (extraction JSON, filtre, nettoyage)
|
||||
- **Scripts intermédiaires** : automatisation du tri, création des fichiers finaux
|
||||
- **Scripts lourds/autonomes** : exécutions régulières, recherche sur ensemble ElasticSearch
|
||||
- Une fois les tickets traités, génération d’un **JSON final** prêt à l’injection dans le LLM ou RAG.
|
||||
- Suppression automatique des fichiers temporaires obsolètes.
|
||||
|
||||
### 🤖 3. **Architecture LLMs et agents**
|
||||
|
||||
- Utilisation de **plusieurs agents spécialisés** :
|
||||
- Résumer la question
|
||||
- Résumer ou formuler la réponse
|
||||
- Ajouter du contexte ou détecter les problèmes récurrents
|
||||
- Analyse d’image (via LLaVA ou autre LLM vision)
|
||||
- Modèles suggérés :
|
||||
- **LLava / LLaMA-Vision** : traitement image + texte
|
||||
- **LangChain / LlamaIndex** : gestion du RAG
|
||||
- **Ollama** : LLM local, agents affectés à différentes tâches
|
||||
- Agents configurés dans **VSCode via API Ollama**, avec rôles assignés par prompt ou tag
|
||||
|
||||
### 🧠 4. **Stratégie hybride : RAG + Fine-tuning**
|
||||
|
||||
- Pipeline proposé :
|
||||
- RAG pour indexation / requêtes rapides sur base ElasticSearch
|
||||
- **Fine-tuning via LoRA** chaque mois pour apprentissage des nouveaux cas validés
|
||||
- Nettoyage systématique du dataset avant fine-tune
|
||||
- Possibilité de retraining ciblé en cas de réponse erronée ou incohérente
|
||||
- Système de signalement de cas récurrents à intégrer dans le flux de traitement
|
||||
|
||||
### 💬 5. **Interface utilisateur locale**
|
||||
|
||||
- Création d’une interface locale (**Gradio ou équivalent**) pour dialogue avec LLM
|
||||
- Conversation sauvegardée (logs)
|
||||
- Intégration de ces échanges dans JSON pour enrichissement automatique
|
||||
- Tests d’efficacité en comparant les réponses sur différents tickets ou variantes
|
||||
|
||||
### 🧪 6. **Intégration dans VSCode avec Ollama**
|
||||
|
||||
- Agents configurés directement dans **VSCode via Ollama API**
|
||||
- Exemple de cas :
|
||||
- Agent : “Convertis ce code WLangage en Python”
|
||||
- Action : détecte les fichiers concernés, applique une conversion
|
||||
- Permet de contextualiser le prompt selon la tâche
|
||||
- Lié à des scripts personnalisés : enrichissement automatique, tri, filtrage, injection
|
||||
|
||||
### 📊 7. **Sources de données / datasets**
|
||||
|
||||
- **HuggingFace** : datasets généraux pour LLMs
|
||||
- **Kaggle** : datasets spécialisés (math, domaine du béton)
|
||||
- **Postgres** : possibilité de structurer localement des jeux de données internes
|
||||
- Objectif : construire des datasets similaires pour entraînement/fine-tuning
|
||||
|
||||
---
|
||||
|
||||
## 📌 Synthèse et prochaines étapes
|
||||
|
||||
Ce résumé permet de :
|
||||
|
||||
- Poser une **roadmap technique** : LLMs, scripts, interface, collecte, injection
|
||||
- Créer une **structure de traitement des tickets** et extraction Q/R automatisée
|
||||
- Définir des **rôles pour chaque agent** (résumeur, nettoyeur, image, contrôleur, etc.)
|
||||
- Identifier les briques logicielles à mettre en place (VSCode, Ollama, RAG, Gradio)
|
||||
|
||||
Voici les éléments préparés pour t’aider à structurer ton suivi de projet dans Obsidian :
|
||||
|
||||
---
|
||||
|
||||
## 📄 Template de note par ticket
|
||||
|
||||
```markdown
|
||||
# 📝 Ticket #[ID] - [Objet de la demande]
|
||||
|
||||
## 🔎 Résumé
|
||||
- **Client** :
|
||||
- **Date** :
|
||||
- **Statut** : 🟡 En cours / ✅ Résolu / ⛔ À revoir
|
||||
|
||||
## ❓ Question / Problème
|
||||
- Description de la demande ou du bug :
|
||||
- Captures ou données associées :
|
||||
|
||||
## ✅ Réponse / Solution proposée
|
||||
- Résumé de la réponse apportée :
|
||||
- Étapes réalisées :
|
||||
- [ ] Analyse
|
||||
- [ ] Script exécuté : `[nom_script].py`
|
||||
- [ ] Vérification / test
|
||||
|
||||
## 📎 Fichiers liés
|
||||
- Script utilisé : `[lien vers script]`
|
||||
- JSON généré : `[nom_fichier].json`
|
||||
- Image(s) : `[capture1.png]`, `[capture2.jpg]`
|
||||
|
||||
## 🧠 À injecter dans :
|
||||
- [ ] Base RAG
|
||||
- [ ] Dataset fine-tuning
|
||||
- [ ] Non pertinent
|
||||
|
||||
---
|
||||
```
|
||||
|
||||
## 🧠 Dashboard d’actions (boutons avec Templater ou Shell Commands)
|
||||
|
||||
````markdown
|
||||
# 🧪 Dashboard - Automatisations Git/LLM
|
||||
|
||||
```button
|
||||
name Lancer traitement script
|
||||
action shell-commands:Run: Script Principal
|
||||
````
|
||||
|
||||
```button
|
||||
name Générer JSON final
|
||||
action shell-commands:Run: Générer JSON
|
||||
```
|
||||
|
||||
```button
|
||||
name Injecter dans LLM RAG
|
||||
action shell-commands:Run: Injecter RAG
|
||||
```
|
||||
|
||||
```button
|
||||
name Envoyer pour fine-tune
|
||||
action shell-commands:Run: Fine-Tune Export
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
➡️ À lier avec tes commandes Shell définies dans le plugin `Shell commands`
|
||||
|
||||
---
|
||||
|
||||
## 📁 Arborescence Obsidian recommandée pour ton projet
|
||||
|
||||
```
|
||||
|
||||
MonVault/ ├── tickets/ │ ├── ticket-001.md │ ├── ticket-002.md │ └── ticket-templates.md │ ├── scripts/ │ ├── script_cleaner.py │ └── extract_json.py │ ├── data/ │ ├── raw/ │ ├── processed/ │ └── outputs/ │ └── final_dataset.json │ ├── logs/ │ └── git-log.md │ ├── agents/ │ ├── résumé-agent.md │ ├── image-agent.md │ └── prompt-guides.md │ ├── dashboards/ │ └── llm-dashboard.md │ └── templates/ └── ticket-template.md
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
- 📄 Un **template de note de ticket** (titre, Q/R, images, statut, script lié)
|
||||
- 🧠 Un **dashboard d’actions** avec boutons (lancer script, exporter JSON, injecter dans LLM)
|
||||
- 📁 Un plan d’organisation de ton vault Obsidian pour ce projet ?
|
||||
|
||||
```
|
||||
@ -4,17 +4,23 @@
|
||||
---
|
||||
## 🧠 Tableau récapitulatif des commandes Git utiles
|
||||
|
||||
| Commande Git | Utilité |
|
||||
| --------------------------- | ------------------------------------------ |
|
||||
| `git status` | Affiche les fichiers modifiés |
|
||||
| `git add .` | Ajoute tous les fichiers à l’index |
|
||||
| `git commit -m "message"` | Enregistre les changements avec un message |
|
||||
| `git push` | Envoie les changements sur GitHub |
|
||||
| `git pull` | Récupère les derniers changements |
|
||||
| `git branch` | Liste les branches locales |
|
||||
| `git switch <branche>` | Change de branche |
|
||||
| `git checkout -b <branche>` | Crée et bascule sur une nouvelle branche |
|
||||
| `git log --oneline` | Historique rapide des commits |
|
||||
| `git stash` / `pop` | Sauvegarde temporaire de changements |
|
||||
| Commande Git | Utilité |
|
||||
| -------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
|
||||
| `git status` | Affiche les fichiers modifiés |
|
||||
| `git add .` | Ajoute tous les fichiers à l’index |
|
||||
| `git commit -m "message"` | Enregistre les changements avec un message |
|
||||
| `git push` | Envoie les changements sur GitHub |
|
||||
| `git pull` | Récupère les derniers changements |
|
||||
| `git branch` | Liste les branches locales |
|
||||
| `git switch <branche>` | Change de branche |
|
||||
| `git checkout -b <branche>` | Crée et bascule sur une nouvelle branche |
|
||||
| `git log --oneline` | Historique rapide des commits |
|
||||
| `git stash` / `pop` | Sauvegarde temporaire de changements |
|
||||
| git fetch origin<br>git reset --hard origin/nom_de_la_branche_distante` | Ecrase ta branche locale avec le contenu de la branche distante |
|
||||
| git checkout -b nouvelle_branche<br>git fetch origin<br>git reset --hard origin/stable-version<br> | nouvelle_branche identique à origin/stable-version |
|
||||
| git remote -v | URL du dépôt distant |
|
||||
| git fetch origin<br>git merge origin/nom_de_la_branche | Mettre à jour une branche locale depuis un dépôt distant |
|
||||
| git fetch origin<br>git reset --hard origin/nom_de_la_branche<br> | Mettre à jour en écrasant les modifications locales |
|
||||
| git fetch --prune | Nettoie les fichiers obsolètes |
|
||||
|
||||
---
|
||||
|
||||
6
inbox/ROBO_MAT_Code_WLangage_Organise.json
Normal file
6
inbox/ROBO_MAT_Code_WLangage_Organise.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"clsMistral": {},
|
||||
"clsDeepSeek": {},
|
||||
"clsRAG": {},
|
||||
"clsDeepl": {}
|
||||
}
|
||||
0
inbox/Sans titre.md
Normal file
0
inbox/Sans titre.md
Normal file
88
webdev/00_Template_Analyse_ROBO_MAT.md
Normal file
88
webdev/00_Template_Analyse_ROBO_MAT.md
Normal file
@ -0,0 +1,88 @@
|
||||
# 📦 Analyse complète du projet WebDev : ROBO_MAT
|
||||
|
||||
> Objectif : Répertorier et analyser **tout le code WLangage** du projet, de manière organisée, pour une future conversion en Python.
|
||||
|
||||
---
|
||||
|
||||
## 🗂️ Structure du projet
|
||||
|
||||
- Nom du projet : `robo_mat`
|
||||
- Source principale : `robo_mat.wdp`
|
||||
- Type : WebDev - Application Web
|
||||
- Structure récupérée depuis le système de fichiers
|
||||
|
||||
---
|
||||
|
||||
## ✅ Plan d’extraction du code
|
||||
|
||||
### 1. Pages (interface utilisateur)
|
||||
|
||||
| Page | Contenu détecté | Code extrait ? | Remarques |
|
||||
|------------|------------------|----------------|-----------|
|
||||
| PAGE_TEST | Boutons + Événements | 🔲 Non / 🔳 En cours / ✅ Oui | À vérifier |
|
||||
|
||||
---
|
||||
|
||||
### 2. Classes (fichiers .wdc)
|
||||
|
||||
| Classe | But supposé | Code extrait ? | Remarques |
|
||||
|---------------|---------------------|----------------|-----------|
|
||||
| clsMistral | Interaction avec modèle LLM | 🔲 | Peut contenir méthodes d’appel API |
|
||||
| clsOllama | Interaction avec Ollama local | 🔲 | Vérifier présence de prompt / réponse |
|
||||
| clsDeepSeek | LLM externe ? | 🔲 | Source d’intelligence contextuelle ? |
|
||||
| clsPerplexity | LLM externe ? | 🔲 | à creuser |
|
||||
| clsRAG | RAG orchestrateur ? | 🔲 | Peut contenir la logique du flow |
|
||||
| clsLLM | Classe commune ? | 🔲 | Factory ou interface commune ? |
|
||||
| clsDeepl | Traduction ? | 🔲 | Fonction d’appel d’API DeepL ? |
|
||||
|
||||
---
|
||||
|
||||
### 3. Procédures globales
|
||||
|
||||
| Nom du fichier | Fonctions incluses | Code extrait ? |
|
||||
|----------------|---------------------|----------------|
|
||||
| info_connexion.gds | Connexion utilisateur ? | 🔲 |
|
||||
|
||||
---
|
||||
|
||||
### 4. Code Projet (initialisation)
|
||||
|
||||
- 🔲 À vérifier via `Projet > Code du projet`
|
||||
|
||||
---
|
||||
|
||||
## 📌 Fichiers présents à analyser (non encore extraits)
|
||||
|
||||
- [x] `robo_mat.wdp` ✅ 2025-03-24
|
||||
- [x] `PAGE_TEST.wwh` ✅ 2025-03-24
|
||||
- [x] Tous les `.wdc` de `/LLM/` ✅ 2025-03-24
|
||||
- [x] `info_connexion.gds` ✅ 2025-03-24
|
||||
- [x] Classement et extraction du code via interface WebDev ✅ 2025-03-24
|
||||
- [x] Explorateur de gauche → tout élément en **gras** ✅ 2025-03-24
|
||||
- [x] Utilisation du menu `Code > Tous les codes` pour compléter l’inventaire ✅ 2025-03-24
|
||||
|
||||
---
|
||||
|
||||
## 🧰 Étapes recommandées
|
||||
|
||||
1. 📦 **Centraliser tous les éléments en gras** dans l’explorateur WebDev
|
||||
2. 🧠 **Ouvrir chaque classe (.wdc)** et copier le code de chaque méthode
|
||||
3. 📄 **Ouvrir PAGE_TEST.wwh** → bouton droit sur chaque champ > `Code`
|
||||
4. 📋 Documenter manuellement ce que fait chaque méthode ou événement
|
||||
5. 🗃️ Conserver un fichier `.md` par classe et par page
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Notes et observations
|
||||
|
||||
> À compléter au fur et à mesure de l’extraction et de l’analyse
|
||||
|
||||
- Exemple : La classe `clsMistral` contient une méthode `getResponse()` qui utilise une URL locale
|
||||
- Exemple : Le bouton "Envoyer" de `PAGE_TEST` appelle `clsMistral::getResponse()`
|
||||
|
||||
---
|
||||
|
||||
## 🧠 Finalité
|
||||
|
||||
L’objectif est d’obtenir une **photographie fidèle du code WLangage**, structurée par fonctionnalité, pour permettre ensuite une **refonte en Python** claire et cohérente.
|
||||
[[Analyse_ROBO_MAT_Complete]]
|
||||
115
webdev/01_WLangage_Récupération_Projet_WebDev.md
Normal file
115
webdev/01_WLangage_Récupération_Projet_WebDev.md
Normal file
@ -0,0 +1,115 @@
|
||||
# 📁 Étape 1 — Identifier & comprendre un projet WebDev
|
||||
|
||||
> 🧠 Objectif : Retrouver où est stocké ton projet WebDev, comprendre l’interface, et localiser les fichiers et sources de code WLangage à extraire.
|
||||
|
||||
---
|
||||
|
||||
## 🧭 1. Où se trouve le dossier de ton projet WebDev ?
|
||||
|
||||
### 🧩 Structure typique d’un projet WebDev :
|
||||
|
||||
Quand tu ouvres un projet WebDev, il est composé de plusieurs dossiers/fichiers sur ton disque, comme :
|
||||
|
||||
```
|
||||
MonProjet\
|
||||
├── MonProjet.WDP <- Fichier principal du projet
|
||||
├── MonProjet_WEBDEV\ <- Contient les sources (pages, procédures, etc.)
|
||||
│ ├── *.WDW <- Pages/fenêtres
|
||||
│ ├── *.WDG <- Procédures globales
|
||||
│ ├── *.WDM <- Analyse (base de données)
|
||||
├── AAAWEB\ <- Code HTML/CSS/JS généré
|
||||
├── EXE\ <- Résultat des générations
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🧑💻 2. Retrouver l’emplacement du projet **depuis WebDev**
|
||||
|
||||
> 💡 Si tu as déjà ton projet ouvert dans WebDev, voici comment trouver son emplacement exact :
|
||||
|
||||
### 🔹 Étape 1 : Ouvrir les **informations du projet**
|
||||
|
||||
1. En haut à gauche de WebDev :
|
||||
🖱️ Clique sur le **menu "Projet"** (dans la barre de menus principale).
|
||||
|
||||
2. Dans ce menu :
|
||||
🖱️ Clique sur `Informations sur le projet…`
|
||||
(_ou parfois juste `Projet > Propriétés du projet` selon ta version_)
|
||||
|
||||
3. Une fenêtre s’ouvre avec plusieurs onglets.
|
||||
|
||||
4. Dans l’onglet `Général`, tu verras :
|
||||
- **Nom du projet**
|
||||
- **Répertoire du projet** ← **copie ce chemin** !
|
||||
|
||||
> 📝 Note : Le fichier du projet principal se termine par `.WDP`. C’est lui que tu peux utiliser pour rouvrir le projet plus tard.
|
||||
|
||||
---
|
||||
|
||||
## 🖥️ 3. Structure de l’interface WebDev (vue développeur)
|
||||
|
||||
> 🧭 Voici les principales zones que tu dois repérer dans l’IDE WebDev :
|
||||
|
||||
| Zone | À quoi ça sert ? |
|
||||
|--------------------------|------------------|
|
||||
| **Explorateur de projet** | Liste tous les éléments : pages, classes, procédures, composants, etc. |
|
||||
| **Éditeur de code** | Permet d’écrire du WLangage pour les événements, procédures, classes, etc. |
|
||||
| **Éditeur de page** | Interface graphique pour créer des pages (drag & drop, CSS, JS, champs, etc.) |
|
||||
| **Panneau de propriétés** | Modifie les propriétés de l’élément actuellement sélectionné (nom, style, code, etc.) |
|
||||
|
||||
---
|
||||
|
||||
## 📌 4. Naviguer dans ton projet WebDev
|
||||
|
||||
Voici **les éléments de code à repérer** dans l'explorateur de projet :
|
||||
|
||||
### 🔹 a. Pages
|
||||
|
||||
1. Dans le volet de gauche (**Explorateur**), clique sur `Pages`.
|
||||
2. Double-clique sur une page pour l’ouvrir.
|
||||
3. Clique droit sur un champ ou bouton > `Code` → Tu vois les événements liés.
|
||||
|
||||
### 🔹 b. Procédures globales
|
||||
|
||||
1. Dans l’explorateur, repère un dossier nommé `Procédures globales`.
|
||||
2. Clique droit dessus > `Ouvrir` ou `Code`.
|
||||
3. Toutes les fonctions sont visibles et réutilisables dans tout le projet.
|
||||
|
||||
### 🔹 c. Procédures locales (dans une page)
|
||||
|
||||
1. Ouvre une page
|
||||
2. Dans la fenêtre, clique sur l’icône `Code` ou via clic droit > `Code`
|
||||
3. Les procédures locales sont affichées en haut ou dans un onglet
|
||||
|
||||
### 🔹 d. Classes
|
||||
|
||||
1. Explorateur > `Classes` (si ton projet en utilise)
|
||||
2. Clic droit > `Code` → Tu y vois la déclaration et les méthodes
|
||||
|
||||
---
|
||||
|
||||
## 💡 Astuce : Revenir rapidement sur ton projet
|
||||
|
||||
- Depuis WebDev :
|
||||
Menu `Fichier > Ouvrir un projet récent`
|
||||
|
||||
- Depuis ton disque :
|
||||
Double-clique sur le fichier `.WDP` du dossier projet
|
||||
|
||||
---
|
||||
|
||||
## ✅ À faire maintenant
|
||||
|
||||
- [x] Ouvre `Projet > Informations sur le projet` et note le chemin. ✅ 2025-03-24
|
||||
- [x] Explore l’explorateur WebDev et note les pages, procédures, classes disponibles. ✅ 2025-03-24
|
||||
- [x] Clique sur une page > bouton droit > `Code` → vérifie que tu peux lire les événements. ✅ 2025-03-24
|
||||
- [x] Idem pour une procédure globale ou une classe. ✅ 2025-03-24
|
||||
|
||||
---
|
||||
|
||||
## 📘 Prochaine étape (à venir)
|
||||
|
||||
👉 Extraire le code manuellement ou semi-automatiquement (copier/coller ou repérage des fichiers sources `.WDG`, `.WDW`, etc.).
|
||||
|
||||
---
|
||||
[[Application webdev (1)]]
|
||||
1511
webdev/Analyse_ROBO_MAT_Complete.md
Normal file
1511
webdev/Analyse_ROBO_MAT_Complete.md
Normal file
File diff suppressed because it is too large
Load Diff
135
webdev/Application webdev (1).md
Normal file
135
webdev/Application webdev (1).md
Normal file
@ -0,0 +1,135 @@
|
||||
|
||||
---
|
||||
## 2. Emplacement du projet
|
||||
|
||||
- Description du projet
|
||||
- Nom du projet: robo_mat
|
||||
- Répertoire du projet: C:\Mes Projets\robo_mat
|
||||
- Répertoire dans la liste des tâches: C:\Mes Projets\robo_mat\Taches
|
||||
- Fichier principal du projet: robo_mat.wpd
|
||||
- GDS:
|
||||
- Serveur: CS:\\10.103.0.3\GDS
|
||||
- Répertoire: GDS:\\Projets WebDev\robo_mat
|
||||
|
||||
Récupération arborescence du projet:
|
||||
```bash
|
||||
tree "C:\Mes Projets\robo_mat\" /F > "$env:USERPROFILE\Desktop\structure_projet_robo_mat.txt"
|
||||
|
||||
```
|
||||
|
||||
![[structure_projet_robo_mat.txt]]
|
||||
[[structure_projet_robo_mat]]
|
||||
|
||||
---
|
||||
|
||||
## 🧠 Ce que signifie le gras dans l’Explorateur WebDev :
|
||||
|
||||
|Élément|Signification|
|
||||
|---|---|
|
||||
|🔤 **Nom en gras**|Contient **du code WLangage actif** (ex : dans un événement, une procédure, un champ…) ou a été **modifié** depuis sa création.|
|
||||
|📄 Nom en normal|Pas encore modifié ou utilisé, aucun code associé pour l’instant.|
|
||||
|
||||
---
|
||||
|
||||
## ✅ Étapes rapides pour localiser **tout le code** dans ton projet
|
||||
|
||||
Je te propose cette méthode **manuelle rapide et fiable**, parfaite pour ton cas (petit projet en début de dev) :
|
||||
|
||||
---
|
||||
|
||||
### 🧭 Étape 1 : Ouvrir l’**Explorateur de projet** (gauche)
|
||||
|
||||
Regarde chaque **section** de l’arborescence :
|
||||
|
||||
- `Pages`
|
||||
- `Classes`
|
||||
- `Procédures globales`
|
||||
- `Composants internes`
|
||||
- `Projet`
|
||||
|
||||
🔍 **Repère ce qui est en gras** → cela indique **des éléments actifs** à explorer.
|
||||
|
||||
---
|
||||
|
||||
### 🧪 Étape 2 : Vérifie **chaque élément en gras**
|
||||
|
||||
#### ▶️ Pour une **Page** (ex. `PAGE_TEST`) :
|
||||
|
||||
1. Double-clique pour l’ouvrir
|
||||
2. Clique droit sur un champ ou bouton > `Code`
|
||||
3. Regarde les événements associés (clic, chargement, etc.)
|
||||
|
||||
#### ▶️ Pour une **Classe** :
|
||||
|
||||
1. Clique sur le nom de la classe (ex. `clsMistral`)
|
||||
2. Clique droit > `Code` → Tu verras les **méthodes WLangage** définies à l’intérieur
|
||||
|
||||
#### ▶️ Pour les **Procédures globales** :
|
||||
|
||||
1. Clique sur `Procédures` dans l’explorateur
|
||||
2. Ouvre les fichiers listés (souvent `.WDG`)
|
||||
3. Tu peux copier/coller chaque fonction
|
||||
|
||||
---
|
||||
|
||||
### 🧪 Étape 3 : Vérifie le **code projet** (initialisation)
|
||||
|
||||
- Menu `Projet > Code du projet`
|
||||
- Tu verras l’**initialisation**, la **fermeture** du projet, et éventuellement du code d’initialisation de session
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Résumé de la **stratégie optimale de récupération**
|
||||
|
||||
|Étape|Objectif|Action|
|
||||
|---|---|---|
|
||||
|1️⃣|Localiser visuellement le code|Utiliser l’explorateur de gauche, repérer les noms **en gras**|
|
||||
|2️⃣|Explorer chaque élément actif|Double-clique > bouton droit > `Code`|
|
||||
|3️⃣|Centraliser manuellement|Copier/coller le code dans un fichier `.md` par page / classe|
|
||||
|4️⃣|Organiser pour la suite|Classer les extraits pour les convertir en Python plus tard|
|
||||
|
||||
---
|
||||
## ✅ À quoi sert `Code > Tous les codes` dans WebDev ?
|
||||
|
||||
Cette option te permet d’**afficher dans une seule fenêtre** :
|
||||
|
||||
- Tout le code écrit dans les **événements** (pages, champs, boutons)
|
||||
- Les **procédures locales** et **globales**
|
||||
- Les **classes et leurs méthodes**
|
||||
- Le **code d'initialisation du projet**, et plus encore…
|
||||
|
||||
---
|
||||
|
||||
## 📦 Avantages concrets pour ta tâche
|
||||
|
||||
|Avantage|Description|
|
||||
|---|---|
|
||||
|🧠 Centralisation|Tu vois **tout le code WLangage du projet** sans ouvrir chaque objet un par un|
|
||||
|🔍 Recherche rapide|Tu peux faire des recherches globales (`Ctrl + F`) dans tous les fichiers|
|
||||
|🧾 Copier facilement|Tu peux sélectionner et **copier/coller** directement dans un `.md`|
|
||||
|📜 Vue claire|L’interface est souvent hiérarchisée par **pages**, **procédures**, **classes**, etc.|
|
||||
|
||||
---
|
||||
|
||||
## ✅ Étapes pour utiliser cette fonction
|
||||
|
||||
1. Dans WebDev :
|
||||
**Menu `Code` (en haut)** → `Tous les codes…`
|
||||
|
||||
2. Une nouvelle **fenêtre d’exploration de code** s’ouvre :
|
||||
|
||||
- Navigation à gauche : par **pages**, **procédures**, **classes**
|
||||
- Fenêtre centrale : tout le **code WLangage écrit**
|
||||
- Tu peux tout **copier/coller** en une fois ou par section
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Recommandation pour l’extraction
|
||||
|
||||
🛠️ Pour ton projet qui est au début, et d’après ce que tu m’as dit (1 page, plusieurs classes) :
|
||||
|
||||
- **Ouvre `Code > Tous les codes`**
|
||||
- Copie le code de chaque section (page, classes)
|
||||
- **Colle-les dans des fichiers `.md`** que je peux t’aider à structurer proprement
|
||||
|
||||
---
|
||||
BIN
webdev/PJ/structure_projet_robo_mat.txt
Normal file
BIN
webdev/PJ/structure_projet_robo_mat.txt
Normal file
Binary file not shown.
340
webdev/PJ/wlangage_class_code.json
Normal file
340
webdev/PJ/wlangage_class_code.json
Normal file
@ -0,0 +1,340 @@
|
||||
{
|
||||
"classes": {
|
||||
"clsMistral": {
|
||||
"heritage": "clsLLM",
|
||||
"attributs": {
|
||||
"maxToken": "entier",
|
||||
"seed": "entier",
|
||||
"presence_penalty": "réel",
|
||||
"frequency_penalty": "réel",
|
||||
"n": "entier",
|
||||
"prediction": "JSON",
|
||||
"safe_prompt": "booléen",
|
||||
"o_stop": "chaîne",
|
||||
"m_tabModels": "tableau de chaînes (PRIVÉ)"
|
||||
},
|
||||
"methodes": {
|
||||
"Constructeur": {
|
||||
"code": "PROCÉDURE Constructeur()\n\n//:Modele = \"open-mixtral-8x22b-2404\"\n:Modele = \"mistral-large-latest\"\n:o_temperature = 0.2\n:o_top_p = 1\n:maxToken = 1000\n:presence_penalty =\t0\n:frequency_penalty = 0\n:n=1\nprediction.type = \"content\"\nprediction.content = \"\"\nsafe_prompt = Faux\no_stop = \"string\""
|
||||
},
|
||||
"model_list": {
|
||||
"code": "PROCÉDURE PUBLIQUE model_list()\nhReponse\test une httpRéponse\nreqLLM\t\test une restRequête\nvReponse est un Variant\n\nSI TableauOccurrence(m_tabModels) > 1 ALORS\n\tRENVOYER (m_tabModels)\nFIN\n\nreqLLM.URL\t\t\t\t= :urlBase+\"models\"\nreqLLM.Méthode\t\t\t= httpGet\nSI :cleAPI <> \"\" ALORS\n\treqLLM.Entête[\"Authorization\"]\t= \"Bearer \" + cleAPI\nFIN\nreqLLM.Entête[\"Content-Type\"]\t= \"application/json\"\t\nhReponse\t\t\t\t= RESTEnvoie(reqLLM)\nSI hReponse.CodeEtat = 200 ALORS\n\tvReponse = JSONVersVariant(hReponse.Contenu)\n\tPOUR i = 1 _À_ TableauOccurrence(vReponse.data)\n\t\tTableauAjoute(m_tabModels,vReponse.data[i].id)\n\tFIN\nSINON\n\tTableauAjoute(m_tabModels,hReponse.Contenu)\nFIN\nRENVOYER(m_tabModels)"
|
||||
},
|
||||
"urlBase": {
|
||||
"code": "PROCÉDURE PUBLIQUE urlBase()\nRENVOYER(\"https://api.mistral.ai/v1/\")"
|
||||
},
|
||||
"cleAPI": {
|
||||
"code": "PROCÉDURE PUBLIQUE cleAPI()\n\nRENVOYER(\"2iGzTzE9csRQ9IoASoUjplHwEjA200Vh\")"
|
||||
},
|
||||
"urlFonction": {
|
||||
"code": "PROCÉDURE PUBLIQUE urlFonction()\n\nRENVOYER(\"chat/completions\")"
|
||||
},
|
||||
"Destructeur": {
|
||||
"code": "PROCÉDURE Destructeur()"
|
||||
},
|
||||
"interrogerRetourneReponse": {
|
||||
"code": "PROCÉDURE PROTÉGÉE interrogerRetourneReponse(LOCAL sReponse est une chaîne)\nsRetour est une chaîne\nvReponse est un Variant\nvReponse = JSONVersVariant(sReponse)\nsRetour = vReponse.choices[1].message.content\nRENVOYER(sRetour)"
|
||||
},
|
||||
"even_LLM_POST": {
|
||||
"code": "PROCÉDURE PROTÉGÉE even_LLM_POST(LOCAL sQuestion est une chaîne <utile>)\n\nContenu.messages[1].role\t= \"system\"\nContenu.messages[1].content\t= :prompt_system\nContenu.messages[2].role\t= \"user\"\nContenu.messages[2].content\t= sQuestion\nContenu.temperature = o_temperature\nContenu.top_p\t\t= o_top_p\nSI :maxToken <> 0 ALORS\n\tContenu.max_tokens = maxToken\nFIN\nSI :seed <> 0 ALORS\n\tContenu.random_seed = :seed\nFIN\nSI :format <> \"\" ALORS\n\tContenu.response_format = :format\nFIN\n// Contenu.tools A déterminer\n// Contenu.tool_choice A déterminer\nContenu.presence_penalty\t= presence_penalty\nContenu.frequency_penalty\t= frequency_penalty\nContenu.n = 1\nContenu.prediction = :prediction\nContenu.stop = o_stop"
|
||||
}
|
||||
}
|
||||
},
|
||||
"clsOllama": {
|
||||
"heritage": "clsLLM",
|
||||
"attributs": {
|
||||
"suffix": "chaîne",
|
||||
"images": "Buffer",
|
||||
"template": "chaîne",
|
||||
"raw": "booléen",
|
||||
"keep_alive": "Durée",
|
||||
"o_mirostat": "entier",
|
||||
"o_mirostat_eta": "réel",
|
||||
"o_mirostat_tau": "réel",
|
||||
"o_num_ctx": "entier",
|
||||
"o_repeat_last_n": "entier",
|
||||
"o_repeat_penalty": "réel",
|
||||
"o_seed": "entier",
|
||||
"o_stop": "JSON",
|
||||
"o_num_predict": "entier",
|
||||
"o_min_p": "réel"
|
||||
},
|
||||
"methodes": {
|
||||
"Constructeur": {
|
||||
"code": "PROCÉDURE Constructeur()\no_mirostat\t\t\t= 0\no_mirostat_eta\t\t= 0.1\no_mirostat_tau\t\t= 5\no_num_ctx\t\t\t= 2048\no_repeat_last_n\t\t= 64\no_repeat_penalty\t= 1.1\no_temperature\t\t= 0.8\no_seed\t\t\t\t= 0\no_stop\t\t\t\t= []\no_num_predict\t\t= -1\no_top_k\t\t\t\t= 40\no_top_p\t\t\t\t= 0.9\no_min_p\t\t\t\t= 0\n\n\nraw\t\t\t\t\t= False\nkeep_alive\t\t\t= 5min"
|
||||
},
|
||||
"urlBase": {
|
||||
"code": "PROCÉDURE PROTÉGÉE urlBase() : chaîne\nRENVOYER(\"http://217.182.105.173:11434/\")"
|
||||
},
|
||||
"cleAPI": {
|
||||
"code": "PROCÉDURE PROTÉGÉE cleAPI() : chaîne\nRENVOYER(\"\")"
|
||||
},
|
||||
"Destructeur": {
|
||||
"code": "PROCÉDURE Destructeur()"
|
||||
},
|
||||
"Interroger": {
|
||||
"code": "PROCÉDURE Interroger(LOCAL sQuestion est une chaîne <utile>)\nm_sUrlFonction = \"api/generate\"\nRENVOYER(LLM_POST(sQuestion))"
|
||||
},
|
||||
"even_LLM_POST": {
|
||||
"code": "PROCÉDURE PROTÉGÉ VIRTUELLE even_LLM_POST(LOCAL sQuestion est une chaîne)\nContenu.system\t\t= :prompt_system\nContenu.prompt\t\t= sQuestion\nContenu.stream\t\t= :stream\nContenu.suffix\t\t= :suffix\nContenu.format\t\t= :format\nContenu.raw\t\t\t= :raw\nContenu.keep_alive\t= :keep_alive\nSI :images <> \"\" ALORS\n\t// A traiter\nFIN\n\nContenu.options.mirostat\t\t\t= o_mirostat\nContenu.options.mirostat_eta\t\t= o_mirostat_eta\nContenu.options.mirostat_tau\t\t= o_mirostat_tau\nContenu.options.num_ctx\t\t\t\t= o_num_ctx\nContenu.options.repeat_last_n\t\t= o_repeat_last_n\nContenu.options.repeat_penalty\t\t= o_repeat_penalty\nContenu.options.temperature\t\t\t= o_temperature\nContenu.options.seed\t\t\t\t= o_seed\nContenu.options.stop\t\t\t\t= o_stop\nContenu.options.num_predict\t\t\t= o_num_predict\nContenu.options.top_k\t\t\t\t= o_top_k\nContenu.options.top_p\t\t\t\t= o_top_p\nContenu.options.min_p\t\t\t\t= o_min_p"
|
||||
},
|
||||
"interrogerRetourneReponse": {
|
||||
"code": "PROCÉDURE PROTÉGÉ VIRTUELLE interrogerRetourneReponse(LOCAL sReponse est une chaîne <utile>)\nvMaReponse\test un Variant\nvMaReponse\t\t\t\t= JSONVersVariant(sReponse)\nRENVOYER(vMaReponse.response)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"clsDeepSeek": {
|
||||
"heritage": "clsLLM",
|
||||
"attributs": {
|
||||
"frequency_penalty": "entier",
|
||||
"max_tokens": "entier",
|
||||
"presence_penalty": "entier",
|
||||
"logprobs": "booléen",
|
||||
"top_logprobs": "entier",
|
||||
"tool_choice": "chaîne"
|
||||
},
|
||||
"methodes": {
|
||||
"Constructeur": {
|
||||
"code": "PROCÉDURE Constructeur()\n\n:Modele = \"deepseek-chat\"\nfrequency_penalty = 0\nmax_tokens = 4096\npresence_penalty = 0\no_top_p\t= 1\nlogprobs = Faux\ntop_logprobs = 0\ntool_choice = \"\""
|
||||
},
|
||||
"cleAPI": {
|
||||
"code": "PROCÉDURE PROTÉGÉE cleAPI() : chaîne\n\nRENVOYER(\"sk-d359d9236ca84a5986f889631832d1e6\")"
|
||||
},
|
||||
"urlBase": {
|
||||
"code": "PROCÉDURE PROTÉGÉE urlBase() : chaîne\n\nRENVOYER(\"https://api.deepseek.com/\")"
|
||||
},
|
||||
"urlFonction": {
|
||||
"code": "PROCÉDURE urlFonction() : chaîne\n\nRENVOYER(\"chat/completions\")"
|
||||
},
|
||||
"model_list": {
|
||||
"code": "PROCÉDURE model_list() : tableau de chaînes\n\ntabRetour est un tableau de chaînes = [\"deepseek-chat\",\"deepseek-reasoner\"]\nRENVOYER(tabRetour)"
|
||||
},
|
||||
"Destructeur": {
|
||||
"code": "PROCÉDURE Destructeur()"
|
||||
},
|
||||
"even_LLM_POST": {
|
||||
"code": "PROCÉDURE PROTÉGÉ VIRTUELLE even_LLM_POST(LOCAL sQuestion est une chaîne <utile>)\n\nContenu.messages[1].role\t= \"system\"\nContenu.messages[1].content\t= :prompt_system\nContenu.messages[2].role\t= \"user\"\nContenu.messages[2].content\t= sQuestion\nContenu.stream\t\t= :stream\nContenu.frequency_penalty\t= :frequency_penalty\nContenu.max_tokens\t\t\t= :max_tokens\nContenu.presence_penalty\t= :presence_penalty\nSI :logprobs = Vrai ALORS\n\tContenu.logprobs\t\t\t= :logprobs\n\tContenu.top_logprobs\t\t= :top_logprobs\nFIN\nSI :tool_choice <> \"\" ALORS\n\tContenu.tool_choice\t\t\t= :tool_choice\nFIN"
|
||||
},
|
||||
"interrogerRetourneReponse": {
|
||||
"code": "PROCÉDURE PROTÉGÉ VIRTUELLE interrogerRetourneReponse(LOCAL sReponse est une chaîne)\nsRetour\t\test une chaîne\nvReponse\test un Variant\nvReponse\t= JSONVersVariant(sReponse)\nsRetour\t\t= vReponse.choices[1].message.content\nRENVOYER(sRetour)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"clsPerplexity": {
|
||||
"heritage": "clsLLM",
|
||||
"attributs": {
|
||||
"maxToken": "entier",
|
||||
"presence_penalty": "entier",
|
||||
"frequency_penaly": "entier",
|
||||
"search_recency_filter": "chaîne",
|
||||
"search_domain_filter": "tableau de chaîne"
|
||||
},
|
||||
"methodes": {
|
||||
"Constructeur": {
|
||||
"code": "PROCÉDURE Constructeur()\nmaxToken = 1000\no_temperature = 0.5\no_top_p = 0.8\no_top_k = 0\npresence_penalty = 0\nfrequency_penaly = 1\nsearch_recency_filter = \"all\" // year\nprompt_system = \"Soyez précis et concis. Répondez uniquement en français. Effectuez une recherche approfondie et fournissez des informations détaillées et à jour.\""
|
||||
},
|
||||
"cleAPI": {
|
||||
"code": "PROCÉDURE PROTÉGÉE cleAPI() : chaîne\nRENVOYER(\"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\")"
|
||||
},
|
||||
"urlBase": {
|
||||
"code": "PROCÉDURE PROTÉGÉE urlBase() : chaîne\nRENVOYER(\"https://api.perplexity.ai/chat/completions\")"
|
||||
},
|
||||
"Destructeur": {
|
||||
"code": "PROCÉDURE Destructeur()"
|
||||
},
|
||||
"Interroger": {
|
||||
"code": "PROCÉDURE Interroger(LOCAL sQuestion est une chaîne)\n:Modele = \"sonar\"\nRENVOYER(LLM_POST(sQuestion))"
|
||||
},
|
||||
"even_LLM_POST": {
|
||||
"code": "PROCÉDURE PROTÉGÉE even_LLM_POST(LOCAL sQuestion est une chaîne)\n\nContenu.messages[1].role = \"system\"\nContenu.messages[1].content = :prompt_system\nContenu.messages[2].role = \"user\"\nContenu.messages[2].content = sQuestion\nSI :maxToken <> 0 ALORS\n\tContenu.max_tokens = maxToken\nFIN\nContenu.temperature = o_temperature\nSI :format <> \"\" ALORS\n\tContenu.response_format = :format\nFIN\nContenu.top_p =o_top_p\nSI TableauOccurrence(search_domain_filter) <> 0 ALORS\n\t// [\"perplexity.ai\"]\n\tContenu.search_domain_filter = search_domain_filter\nFIN\nContenu.return_images = Faux\nContenu.return_related_questions = Faux\nSI search_recency_filter <> \"all\" ALORS\n\tContenu.search_recency_filter = search_recency_filter\nFIN\nContenu.top_k = o_top_k\nContenu.presence_penalty = presence_penalty\nContenu.frequency_penalty = frequency_penaly\nContenu.response_format = Null"
|
||||
},
|
||||
"interrogerRetourneReponse": {
|
||||
"code": "PROCÉDURE PROTÉGÉ VIRTUELLE interrogerRetourneReponse(LOCAL sReponse est une chaîne <utile>)\nvRepoonse est un Variant = JSONVersVariant(sReponse)\nsRetour est une chaîne\nsRetour = vRepoonse.choices[1].message.content\n\nRENVOYER(sRetour)"
|
||||
}
|
||||
}
|
||||
},
|
||||
"clsRAG": {
|
||||
"heritage": "",
|
||||
"attributs": {
|
||||
"sessionID": "chaîne (PUBLIQUE CONSTANT)",
|
||||
"reqRAG": "restRequête (PRIVÉ)",
|
||||
"taContenu": "tableau associatif de Variant (PRIVÉ)",
|
||||
"m_sChatID": "chaîne (PRIVÉ)",
|
||||
"mn_Question": "entier (PRIVÉ)"
|
||||
},
|
||||
"methodes": {
|
||||
"Constructeur": {
|
||||
"code": "PROCÉDURE Constructeur()\nreqRAG.Entête[\"Authorization\"]\t= \"Bearer \" + \"ragflow-c4YTNkMzcwZDM1ODExZWZiODA2MDI0Mm\"\nreqRAG.Entête[\"Content-Type\"]\t= \"application/json\"\t"
|
||||
},
|
||||
"urlBase": {
|
||||
"code": "PROCÉDURE PRIVÉE urlBase()\n\nRENVOYER(\"http://10.103.0.100/api/v1/chats/\")"
|
||||
},
|
||||
"chatID": {
|
||||
"code": "PROCÉDURE PRIVÉE chatID()\nSI m_sChatID <> \"\" ALORS \n\tRENVOYER(m_sChatID)\nSINON\n\tRENVOYER(\"ffb1058ed4b811ef8a900242ac120003\")\nFIN"
|
||||
},
|
||||
"setChatID": {
|
||||
"code": "PROCÉDURE PRIVÉ chatID(Valeur)\n\nm_sChatID = Valeur"
|
||||
},
|
||||
"Contenu": {
|
||||
"code": "PROCÉDURE PRIVÉE Contenu()\nbufContenu est un Buffer\nSérialise(taContenu,bufContenu,psdJSON)\nRENVOYER(bufContenu)"
|
||||
},
|
||||
"urlChat": {
|
||||
"code": "PROCÉDURE PRIVÉE urlChat()\n\nRENVOYER(:urlBase+chatID+\"/\")"
|
||||
},
|
||||
"Destructeur": {
|
||||
"code": "PROCÉDURE Destructeur()\n\nSI mn_Question = 0 OU EnModeTest() ALORS\n\tsupprimeSessionChat()\t\nFIN"
|
||||
},
|
||||
"creeSessionChat": {
|
||||
"code": "PROCÉDURE PRIVÉ creeSessionChat()\nvMaReponse est un Variant\nhReponse est une httpRéponse\nTableauSupprimeTout(taContenu)\nreqRAG.URL = :urlChat+\"sessions\"\nreqRAG.Méthode = httpPost\ntaContenu[\"name\"] = DateHeureVersChaîne(DateHeureSys,\"AAAAMMJJ_HHmmSS\")\nreqRAG.Contenu = :Contenu\n\nhReponse = RESTEnvoie(reqRAG)\nSI ErreurDétectée ALORS\n\tRENVOYER(Faux,TexteVersHTML(ErreurInfo()))\nSINON\n\tvMaReponse = JSONVersVariant(hReponse.Contenu)\n\tSI vMaReponse.code = 0\n\t\t:sessionID = vMaReponse.data.id\n\t\tRENVOYER(Vrai,:formateReponse(vMaReponse.data.messages[1].content))\n\tSINON\n\t\tRENVOYER(Faux,:formateReponse(vMaReponse.message))\n\tFIN\nFIN"
|
||||
},
|
||||
"Chat": {
|
||||
"code": "PROCÉDURE Chat(LOCAL sQuestion est une chaîne)\nbSessionCree est un booléen\nsReponse est une chaîne\nvMaReponse\test un Variant\nSI :sessionID = \"\" ALORS\n\t(bSessionCree,sReponse) = creeSessionChat()\n\tSI PAS bSessionCree ALORS\n\t\tRENVOYER(:formateReponse(sReponse))\n\tFIN\t\nFIN\n\nmn_Question++\nhReponse\test une httpRéponse\nTableauSupprimeTout(taContenu)\nreqRAG.URL\t\t\t= :urlChat+\"completions\"\nreqRAG.Méthode\t\t= httpPost\ntaContenu[\"question\"]\t\t= sQuestion\ntaContenu[\"stream\"]\t\t\t= False\ntaContenu[\"session_id\"]\t\t= :sessionID\nreqRAG.Contenu\t\t= :Contenu\n\nhReponse\t\t\t= RESTEnvoie(reqRAG)\nSI ErreurDétectée ALORS\n\tRENVOYER(TexteVersHTML(ErreurInfo()))\nSINON\n\tvMaReponse = JSONVersVariant(hReponse.Contenu)\n\tSI vMaReponse.code = 0 ALORS\n\t\tsReponse = vMaReponse.data.answer\n\t\tRENVOYER(:formateReponse(sReponse))\n\tSINON\n\t\tsReponse = vMaReponse.message\n\t\tRENVOYER(:formateReponse(sReponse))\n\tFIN\nFIN"
|
||||
},
|
||||
"formateReponse": {
|
||||
"code": "PROCÉDURE PUBLIQUE formateReponse(LOCAL sReponse est une chaîne)\nsRetour est une chaîne ANSI\nsRetour+=\"<div style=\"\"background-color: #e8f4ff; border: 1px solid #c2e0ff; border-radius: 10px; padding: 10px 15px; font-family: Arial, sans-serif; font-size: 14px; color: #000; display: inline-block;\"\">\"\nsRetour+=UnicodeVersAnsi(UTF8VersUnicode(MarkdownVersHTML(sReponse)))\nsRetour+=\"</div>\"\n//sRetourANSI = UnicodeVersAnsi(sRetourUnicode)\nRENVOYER(sRetour)"
|
||||
},
|
||||
"formateQuestion": {
|
||||
"code": "PROCÉDURE GLOBALE formateQuestion(LOCAL sQuestion est une chaîne)\nsRetour est une chaîne\nsRetour = \"<div style=\"\"text-align: right; font-family: Arial, sans-serif; font-size: 14px; color: #000; padding: 10px 15px;\"\">\"\nsRetour+= sQuestion\nsRetour+= \"</div>\"\nRENVOYER(sRetour)"
|
||||
},
|
||||
"supprimeSessionChat": {
|
||||
"code": "PROCÉDURE PRIVÉ supprimeSessionChat()\nvMaReponse\test un Variant\nsReponse\test une chaîne\nhReponse\test une httpRéponse\nTableauSupprimeTout(taContenu)\nreqRAG.URL\t\t\t\t\t= :urlChat+\"/sessions\"\nreqRAG.Méthode\t\t\t\t= httpDelete\ntaContenu[\"ids\"]\t\t\t= [sessionID]\nreqRAG.Contenu\t\t\t\t= :Contenu\n\nhReponse\t\t\t\t\t= RESTEnvoie(reqRAG)\nSI ErreurDétectée ALORS\n\tRENVOYER(TexteVersHTML(ErreurInfo()))\nSINON\n\tvMaReponse = JSONVersVariant(hReponse.Contenu)\n\tSI vMaReponse.code = 0 ALORS\n\t\tRENVOYER(\"OK\")\n\tSINON\n\t\tsReponse = vMaReponse.message\n\t\tRENVOYER(sReponse)\n\tFIN\nFIN"
|
||||
}
|
||||
}
|
||||
},
|
||||
"clsLLM": {
|
||||
"type": "abstraite",
|
||||
"attributs_publics": {
|
||||
"Modele": "chaîne",
|
||||
"prompt_system": "chaîne",
|
||||
"o_temperature": "réel",
|
||||
"o_top_k": "entier",
|
||||
"o_top_p": "réel"
|
||||
},
|
||||
"constantes_publiques": {
|
||||
"dureeTraitement": "Durée",
|
||||
"reponseErreur": "booléen"
|
||||
},
|
||||
"attributs_proteges": {
|
||||
"Contenu": "JSON",
|
||||
"m_sUrlFonction": "chaîne",
|
||||
"stream": "booléen",
|
||||
"m_sFormat": "chaîne",
|
||||
"heureDepart": "Heure",
|
||||
"heureFin": "Heure"
|
||||
},
|
||||
"methodes": {
|
||||
"Constructeur": {
|
||||
"type": "procédure",
|
||||
"code": "stream = Faux"
|
||||
},
|
||||
"urlBase": {
|
||||
"type": "procédure protégée abstraite",
|
||||
"retour": "chaîne"
|
||||
},
|
||||
"cleAPI": {
|
||||
"type": "procédure protégée abstraite",
|
||||
"retour": "chaîne"
|
||||
},
|
||||
"urlFonction": {
|
||||
"type": "procédure publique",
|
||||
"code": "RENVOYER(m_sUrlFonction)"
|
||||
},
|
||||
"format": {
|
||||
"type": "procédure publique",
|
||||
"code": "RENVOYER(m_sFormat)"
|
||||
},
|
||||
"model_list": {
|
||||
"type": "procédure publique",
|
||||
"retour": "tableau de chaînes",
|
||||
"code": "tabModels est un tableau de chaînes\nRENVOYER(tabModels)"
|
||||
},
|
||||
"commandeAutorisation": {
|
||||
"type": "procédure publique",
|
||||
"code": "RENVOYER(\"Bearer\")"
|
||||
},
|
||||
"Interroger": {
|
||||
"type": "procédure",
|
||||
"parametres": ["sQuestion est une chaîne"],
|
||||
"retour": "chaîne",
|
||||
"code": "sReponse est une chaîne\nsReponse = LLM_POST(sQuestion)\nRENVOYER(sReponse)"
|
||||
},
|
||||
"LLM_POST": {
|
||||
"type": "procédure protégée",
|
||||
"code": "// Code complet de la méthode LLM_POST"
|
||||
},
|
||||
"even_LLM_POST": {
|
||||
"type": "procédure protégée abstraite virtuelle",
|
||||
"parametres": ["sQuestion est une chaîne <utile>"]
|
||||
},
|
||||
"interrogerRetourneReponse": {
|
||||
"type": "procédure protégé abstraite virtuelle",
|
||||
"parametres": ["sReponse est une chaîne <utile>"],
|
||||
"retour": "chaîne"
|
||||
}
|
||||
}
|
||||
},
|
||||
"clsDeepl": {
|
||||
"herite_de": "clsLLM",
|
||||
"attributs": {
|
||||
"langueSource": "chaîne",
|
||||
"langueDesti": "chaîne",
|
||||
"context": "chaîne",
|
||||
"split_sentences": "chaîne",
|
||||
"preserve_formatting": "booléen",
|
||||
"formality": "chaîne",
|
||||
"show_billed_characters": "booléen",
|
||||
"tag_handling": "chaîne",
|
||||
"outline_detection": "booléen",
|
||||
"non_splitting_tags": "tableau de chaînes",
|
||||
"splitting_tags": "tableau de chaînes",
|
||||
"ignore_tags": "tableau de chaînes"
|
||||
},
|
||||
"constantes_publiques": {
|
||||
"glossaire_id": "tableau associatif (ccSansCasse) de chaînes",
|
||||
"m_tabGlossaireListePaire": "tableau de 0 par 2 chaînes"
|
||||
},
|
||||
"methodes": {
|
||||
"Constructeur": {
|
||||
"type": "procédure",
|
||||
"code": "// Initialisation des attributs par défaut"
|
||||
},
|
||||
"commandeAutorisation": {
|
||||
"type": "procédure publique",
|
||||
"code": "RENVOYER(\"DeepL-Auth-Key\")"
|
||||
},
|
||||
"cleAPI": {
|
||||
"type": "procédure protégée",
|
||||
"code": "RENVOYER(\"d42ee2f7-f4e6-d437-3237-fa40b4f45e65\")"
|
||||
},
|
||||
"urlBase": {
|
||||
"type": "procédure protégée",
|
||||
"code": "RENVOYER(\"https://api.deepl.com/v2/\")"
|
||||
},
|
||||
"model_list": {
|
||||
"type": "procédure",
|
||||
"code": "// Code qui retourne la liste des modèles disponibles"
|
||||
},
|
||||
"even_LLM_POST": {
|
||||
"type": "procédure protégée",
|
||||
"code": "// Code complet de gestion des paramètres DeepL"
|
||||
},
|
||||
"interrogerRetourneReponse": {
|
||||
"type": "procédure protégée",
|
||||
"code": "// Code de traitement de la réponse DeepL"
|
||||
},
|
||||
"glossaire_cree": {
|
||||
"type": "procédure",
|
||||
"code": "// Code de création d'un glossaire"
|
||||
},
|
||||
"glossaireRetrouveID": {
|
||||
"type": "procédure privée",
|
||||
"code": "// Code de récupération d'ID de glossaire"
|
||||
},
|
||||
"glossaireSupprime": {
|
||||
"type": "procédure privée",
|
||||
"code": "// Code de suppression d'un glossaire"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
64
webdev/ROBO_MAT_Analyse_Fonctionnelle.md
Normal file
64
webdev/ROBO_MAT_Analyse_Fonctionnelle.md
Normal file
@ -0,0 +1,64 @@
|
||||
# 🔍 Analyse fonctionnelle du projet ROBO_MAT
|
||||
|
||||
---
|
||||
|
||||
## 🧠 Partie 1 — À quoi sert le projet `ROBO_MAT` ?
|
||||
|
||||
### 📌 Hypothèse générale
|
||||
|
||||
Le projet `ROBO_MAT` semble être une **interface de test ou de démonstration de plusieurs modèles LLM (Large Language Models)** connectés via différentes classes, chacune représentant un moteur ou un fournisseur :
|
||||
|
||||
| Classe | Description fonctionnelle |
|
||||
|----------------|-----------------------------------------------------|
|
||||
| `clsMistral` | Dialogue avec le modèle Mistral (peut-être local) |
|
||||
| `clsOllama` | Dialogue avec Ollama (exécutable local ou API) |
|
||||
| `clsDeepSeek` | Dialogue avec un modèle nommé DeepSeek |
|
||||
| `clsPerplexity`| Dialogue avec l’API Perplexity |
|
||||
| `clsDeepl` | Appel au service de traduction DeepL |
|
||||
| `clsLLM` | Probable classe générique/base pour tous les LLM |
|
||||
| `clsRAG` | Fonction RAG (Retrieve & Generate) pour améliorer la pertinence des réponses |
|
||||
|
||||
Ces classes sont toutes **rassemblées dans un composant interne `LLM`**, ce qui laisse penser qu’il s’agit d’un **module central** dédié à l'interaction avec différents moteurs d'IA.
|
||||
|
||||
---
|
||||
|
||||
### 🧩 Page `PAGE_TEST`[[ROBO_MAT_Analyse_Page_TEST_et_LLM]]
|
||||
|
||||
Cette page semble être une **interface de test utilisateur** avec différents boutons.
|
||||
Chaque bouton appelle une méthode spécifique dans l’une des classes LLM, permettant :
|
||||
- de tester les réponses,
|
||||
- de comparer les modèles,
|
||||
- de valider les appels aux services distants.
|
||||
|
||||
**Aucune logique métier complexe n’est détectée** dans cette page. Elle sert probablement de démonstrateur technique.
|
||||
|
||||
---
|
||||
|
||||
## 🧭 Organisation technique
|
||||
|
||||
Voici l’ordre dans lequel les composants sont organisés :
|
||||
|
||||
- **PAGE_TEST** (interface de test)
|
||||
- **Composant interne `LLM`**
|
||||
- Contient 7 classes :
|
||||
- clsMistral [[ROBO_MAT_Analyse_clsMistral]]
|
||||
- clsOllama
|
||||
- clsDeepSeek
|
||||
- clsPerplexity
|
||||
- clsRAG
|
||||
- clsLLM
|
||||
- clsDeepl
|
||||
|
||||
Les classes sont **écrites en WLangage** avec des sections typiques : `Déclaration`, `Constructeur`, `Méthodes`, etc. Ce découpage est analogue à une classe Python mais plus segmenté dans l’interface.
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Conclusion
|
||||
|
||||
> Le projet `ROBO_MAT` est probablement une **boîte à outils de test LLMs** développée en WebDev. Il s’agit d’un prototype (ou brouillon) permettant de :
|
||||
- Centraliser l'appel à différents modèles,
|
||||
- Tester les interactions avec chacun,
|
||||
- Servir de base à un futur outil plus complet (ex : assistant IA, moteur de recherche interne, interface traducteur multilangue, etc.).
|
||||
|
||||
Je vais maintenant poursuivre avec l’analyse **détaillée de la page `PAGE_TEST`**, suivie des classes une par une.
|
||||
|
||||
195
webdev/ROBO_MAT_Analyse_Page_TEST_et_LLM.md
Normal file
195
webdev/ROBO_MAT_Analyse_Page_TEST_et_LLM.md
Normal file
@ -0,0 +1,195 @@
|
||||
# 📄 Analyse de la page PAGE_TEST & hypothèses d’appel LLM
|
||||
|
||||
---
|
||||
|
||||
## 🧩 PAGE_TEST — Interface de test
|
||||
|
||||
La page `PAGE_TEST` contient uniquement des éléments visuels (probablement des **boutons**), chacun **lié à une méthode spécifique** d’une des classes du composant interne `LLM`.
|
||||
|
||||
### 🔍 Objectif :
|
||||
Elle sert de **panneau de commande utilisateur** pour tester différents moteurs d’IA ou services via les classes :
|
||||
|
||||
- `clsMistral`
|
||||
- `clsOllama`
|
||||
- `clsDeepSeek`
|
||||
- `clsPerplexity`
|
||||
- `clsRAG`
|
||||
- `clsLLM`
|
||||
- `clsDeepl`
|
||||
|
||||
---
|
||||
|
||||
## 🔗 Hypothèses sur les appels aux modèles LLM
|
||||
|
||||
Voici les lignes de code extraites contenant des éléments pouvant être des **URLs ou endpoints d’API** :
|
||||
|
||||
```wlanguage
|
||||
- - [clsOllama](#clsOllama)
|
||||
- hReponse est une httpRéponse
|
||||
- reqLLM est une restRequête
|
||||
- reqLLM.URL = :urlBase+"models"
|
||||
- reqLLM.Méthode = httpGet
|
||||
- SI :cleAPI <> "" ALORS
|
||||
- reqLLM.Entête["Authorization"] = "Bearer " + cleAPI
|
||||
- #### Récupération de la propriété urlBase
|
||||
- PROCÉDURE PUBLIQUE urlBase()
|
||||
- RENVOYER("https://api.mistral.ai/v1/")
|
||||
- #### Affectation de la propriété urlBase
|
||||
- #### Récupération de la propriété cleAPI
|
||||
- PROCÉDURE PUBLIQUE cleAPI()
|
||||
- #### Affectation de la propriété cleAPI
|
||||
- #### Récupération de la propriété urlFonction
|
||||
- PROCÉDURE PUBLIQUE urlFonction()
|
||||
- #### Affectation de la propriété urlFonction
|
||||
- ID of the model to use. You can use the List Available Models API to see all of your available models, or see our Model overview for model descriptions.
|
||||
- ### 🧠 clsOllama
|
||||
- clsOllama est une Classe
|
||||
- raw est un booléen // si true, aucun formatage ne sera appliqué à l'invite. Vous pouvez choisir d'utiliser le paramètre raw si vous spécifiez une invite entièrement formatée dans votre demande à l'API.
|
||||
- o_min_p est un réel // Alternative au top_p, elle vise à assurer un équilibre entre la qualité et la variété. Le paramètre p représente la probabilité minimale pour qu'un jeton soit pris en considération, par rapport à la probabilité du jeton le plus probable. Par exemple, avec p=0,05 et le jeton le plus probable ayant une probabilité de 0,9, les logits ayant une valeur inférieure à 0,045 sont filtrés. (Valeur par défaut : 0,0)
|
||||
- Dans l'API d'Ollama, le paramètre template dans la fonction POST /api/generate permet de spécifier un modèle de prompt personnalisé qui remplace celui défini dans le fichier de modèle (Modelfile). Le modèle de prompt est utilisé pour structurer la manière dont le modèle générera sa réponse en fonction du prompt fourni.
|
||||
- Par défaut, chaque modèle Ollama est associé à un modèle de prompt prédéfini, tel que :
|
||||
- En utilisant le paramètre template, vous pouvez fournir un modèle de prompt spécifique pour une requête donnée, ce qui permet de personnaliser la structure de la réponse du modèle pour cette interaction particulière.
|
||||
- Par exemple, si vous souhaitez que le modèle réponde sous forme de liste numérotée, vous pouvez inclure le paramètre template dans votre requête comme suit
|
||||
- #### Terminaison de clsOllama
|
||||
- #### Récupération de la propriété urlBase
|
||||
- PROCÉDURE PROTÉGÉE urlBase() : chaîne
|
||||
- RENVOYER("http://217.182.105.173:11434/")
|
||||
- #### Affectation de la propriété urlBase
|
||||
- #### Récupération de la propriété cleAPI
|
||||
- PROCÉDURE PROTÉGÉE cleAPI() : chaîne
|
||||
- #### Affectation de la propriété cleAPI
|
||||
- m_sUrlFonction = "api/generate"
|
||||
- Récupération de la propriété cleAPI
|
||||
- PROCÉDURE PROTÉGÉE cleAPI() : chaîne
|
||||
- #### Affectation de la propriété cleAPI
|
||||
- #### Récupération de la propriété urlBase
|
||||
- PROCÉDURE PROTÉGÉE urlBase() : chaîne
|
||||
- RENVOYER("https://api.deepseek.com/")
|
||||
- #### Affectation de la propriété urlBase
|
||||
- #### Récupération de la propriété urlFonction
|
||||
- PROCÉDURE urlFonction() : chaîne
|
||||
- #### Affectation de la propiété urlFonction
|
||||
- PROCÉDURE urlFonction(Valeur est une chaîne)
|
||||
- #### Récupération de la propriété cleAPI
|
||||
- PROCÉDURE PROTÉGÉE cleAPI() : chaîne
|
||||
- #### Affectation de la propriété cleAPI
|
||||
- #### Récupération de la propriété urlBase
|
||||
- PROCÉDURE PROTÉGÉE urlBase() : chaîne
|
||||
- RENVOYER("https://api.perplexity.ai/chat/completions")
|
||||
- #### Affectation de la propriété urlBase
|
||||
- "https://www.youtube.com/watch?v=TOrph-vS_a8",
|
||||
- "https://www.teidebynight.com/how-many-stars-are-in-the-milky-way/"
|
||||
- reqRAG est une restRequête
|
||||
- #### Récupération de la propriété urlBase
|
||||
- PROCÉDURE PRIVÉE urlBase()
|
||||
- RENVOYER("http://10.103.0.100/api/v1/chats/")
|
||||
- #### Affectation de la propriété urlBase
|
||||
- #### Récupération de la propriété urlChat
|
||||
- PROCÉDURE PRIVÉE urlChat()
|
||||
- RENVOYER(:urlBase+chatID+"/")
|
||||
- #### Affectation de la propriété urlChat
|
||||
- hReponse est une httpRéponse
|
||||
- reqRAG.URL = :urlChat+"sessions"
|
||||
- reqRAG.Méthode = httpPost
|
||||
- hReponse est une httpRéponse
|
||||
- reqRAG.URL = :urlChat+"completions"
|
||||
- reqRAG.Méthode = httpPost
|
||||
- hReponse est une httpRéponse
|
||||
- reqRAG.URL = :urlChat+"/sessions"
|
||||
- reqRAG.Méthode = httpDelete
|
||||
- // https://github.com/ollama/ollama/blob/main/docs/modelfile.md#format
|
||||
- m_sUrlFonction est une chaîne
|
||||
- #### Récupération de la propriété urlBase
|
||||
- PROCÉDURE PROTÉGÉ ABSTRAITE urlBase() : chaîne
|
||||
- #### Affectation de la propriété urlBase
|
||||
- #### Récupération de la propriété cleAPI
|
||||
- PROCÉDURE PROTÉGÉ ABSTRAITE cleAPI() :chaîne
|
||||
- #### Affectation de la propriété cleAPI
|
||||
- #### Récupération de la propriété urlFonction
|
||||
- PROCÉDURE PUBLIQUE urlFonction()
|
||||
- RENVOYER(m_sUrlFonction)
|
||||
- #### Affectation de la propriété urlFonction
|
||||
- PROCÉDURE PUBLIQUE urlFonction(Valeur)
|
||||
- m_sUrlFonction = Valeur
|
||||
- hReponse est une httpRéponse
|
||||
- reqLLM est une restRequête
|
||||
- reqLLM.URL = :urlBase+urlFonction
|
||||
- reqLLM.Méthode = httpPost
|
||||
- SI :cleAPI <> "" ALORS
|
||||
- reqLLM.Entête["Authorization"] = :commandeAutorisation+ " " + :cleAPI
|
||||
- #### Récupération de la propriété cleAPI
|
||||
- PROCÉDURE PROTÉGÉE cleAPI() : chaîne
|
||||
- #### Affectation de la propriété cleAPI
|
||||
- #### Récupération de la propriété urlBase
|
||||
- PROCÉDURE PROTÉGÉE urlBase() : chaîne
|
||||
- RENVOYER("https://api.deepl.com/v2/")
|
||||
- #### Affectation de la propriété urlBase
|
||||
- #### Récupération de la propriété urlFonction
|
||||
- PROCÉDURE urlFonction() : chaîne
|
||||
- #### Affectation de la propriété urlFonction
|
||||
- PROCÉDURE urlFonction(Valeur est une chaîne)
|
||||
- hReponse est une httpRéponse
|
||||
- reqLLM est une restRequête
|
||||
- reqLLM.URL = :urlBase+"glossary-language-pairs"
|
||||
- reqLLM.Méthode = httpGet
|
||||
- SI :cleAPI <> "" ALORS
|
||||
- reqLLM.Entête["Authorization"] = :commandeAutorisation + " " + cleAPI
|
||||
- POUR i = 1 _À_ TableauOccurrence(vReponse.supported_languages)
|
||||
- TableauAjouteLigne(m_tabGlossaireListePaire,vReponse.supported_languages[i].source_lang,vReponse.supported_languages[i].target_lang)
|
||||
- Voir https://developers.deepl.com/docs/api-reference/translate
|
||||
- Text to be translated. Only UTF-8-encoded plain text is supported. The parameter may be specified multiple times and translations are returned in the same order as they are requested. Each of the parameter values may contain multiple sentences. Up to 50 texts can be sent for translation in one request.
|
||||
- Language of the text to be translated. If omitted, the API will attempt to detect the language of the text and translate it. You can find supported source languages here.
|
||||
- The language into which the text should be translated. You can find supported target languages here.
|
||||
- Specifies which DeepL model should be used for translation. The quality_optimized value is supported only in the Pro v2 API at this time (https://api.deepl.com/v2/translate).
|
||||
- latency_optimized (uses lower latency “classic” translation models, which support all language pairs; default value)
|
||||
- quality_optimized (uses higher latency, improved quality “next-gen” translation models, which support only a subset of language pairs; if a language pair that is not supported by next-gen models is included in the request, it will fail. Consider using prefer_quality_optimized instead.)
|
||||
- prefer_quality_optimized (prioritizes use of higher latency, improved quality “next-gen” translation models, which support only a subset of DeepL languages; if a request includes a language pair not supported by next-gen models, the request will fall back to latency_optimized classic models)
|
||||
- Language pairs supported by DeepL’s next-gen models are documented below.
|
||||
- Sets whether the translated text should lean towards formal or informal language. This feature currently only works for target languages DE (German), FR (French), IT (Italian), ES (Spanish), NL (Dutch), PL (Polish), PT-BR and PT-PT (Portuguese), JA (Japanese), and RU (Russian). Learn more about the plain/polite feature for Japanese here.
|
||||
- Setting this parameter with a target language that does not support formality will fail, unless one of the prefer_... options are used. Possible options are:
|
||||
- Important: This requires the source_lang parameter to be set and the language pair of the glossary has to match the language pair of the request.
|
||||
- Note: At some point in the future, we intend to include billed_characters in the API response by default, at which point it will be necessary to set show_billed_characters to false in order to for an API response not to include billed_characters. We will notify users in advance of making this change.
|
||||
- hReponse est une httpRéponse
|
||||
- reqLLM est une restRequête
|
||||
- reqLLM.URL = :urlBase+"glossaries"
|
||||
- reqLLM.Méthode = httpPost
|
||||
- SI :cleAPI <> "" ALORS
|
||||
- reqLLM.Entête["Authorization"] = :commandeAutorisation + " " + cleAPI
|
||||
- hReponse est une httpRéponse
|
||||
- reqLLM est une restRequête
|
||||
- reqLLM.URL = :urlBase+"glossaries"
|
||||
- reqLLM.Méthode = httpGet
|
||||
- SI :cleAPI <> "" ALORS
|
||||
- reqLLM.Entête["Authorization"] = :commandeAutorisation + " " + cleAPI
|
||||
- hReponse est une httpRéponse
|
||||
- reqLLM est une restRequête
|
||||
- reqLLM.URL = :urlBase+"glossaries/"+sID
|
||||
- reqLLM.Méthode = httpDelete
|
||||
- SI :cleAPI <> "" ALORS
|
||||
- reqLLM.Entête["Authorization"] = :commandeAutorisation + " " + cleAPI
|
||||
- - Les dépendances vers des APIs
|
||||
```
|
||||
|
||||
### 🔧 Interprétation & Hypothèses :
|
||||
|
||||
| Élément détecté | Hypothèse |
|
||||
|----------------------------------------|---------------------------------------------------------------------------|
|
||||
| `localhost:11434` | Serveur Ollama local en écoute sur le port par défaut (`11434`) |
|
||||
| `http://` ou `https://` avec `/api/` | Appel à une API REST distante (ex: DeepL, Perplexity) |
|
||||
| `127.0.0.1` | Appels test en local, donc modèles exécutés sur la machine de dev |
|
||||
| `clsRAG`, `clsLLM`, `clsDeepl` | Probables wrappers d’appel à des APIs locales ou distantes |
|
||||
|
||||
### 📎 Probabilité d’implémentation actuelle :
|
||||
✔️ **Modèles locaux** (Ollama, Mistral) → via `localhost`, probablement exécutés via Ollama CLI/API.
|
||||
✔️ **Modèles distants** (DeepL, Perplexity) → via API REST, avec ou sans clé API (non visible ici).
|
||||
|
||||
---
|
||||
|
||||
## 📌 Conclusion intermédiaire
|
||||
|
||||
> La page `PAGE_TEST` joue le rôle d’un **tableau de bord de test multi-LLM**, avec des **appels dirigés vers des APIs locales ou distantes** selon les classes.
|
||||
Elle est **simple**, mais très utile pour tester rapidement les réponses des différents moteurs IA via un clic utilisateur.
|
||||
|
||||
---
|
||||
|
||||
👉 Je suis prêt à continuer avec l’analyse **classe par classe**, en commençant par `clsMistral` si cela te convient.
|
||||
1512
webdev/ROBO_MAT_Code_WLangage_Organise.md
Normal file
1512
webdev/ROBO_MAT_Code_WLangage_Organise.md
Normal file
File diff suppressed because it is too large
Load Diff
75
webdev/Rappel de certaines notions WLangage et Classes.md
Normal file
75
webdev/Rappel de certaines notions WLangage et Classes.md
Normal file
@ -0,0 +1,75 @@
|
||||
|
||||
---
|
||||
Merci pour ce JSON très bien structuré, il va grandement faciliter l'analyse. Voici ce que nous allons faire étape par étape, comme demandé :
|
||||
|
||||
---
|
||||
|
||||
## 🧠 1. Rappel des notions « Récupération / Affectation » en WLangage
|
||||
|
||||
|Terme simplifié|Nom WLangage réel|Description|
|
||||
|---|---|---|
|
||||
|Récupération|`RENVOYER(...)`|Renvoie une valeur depuis une fonction / méthode, équivalent au `return` Python.|
|
||||
|Affectation|`variable = valeur`|Affectation d'une valeur à une variable, comme en Python (`var = value`).|
|
||||
|Accès attribut|`:attribut`|Accès à l’attribut de l’objet courant (`self.attribut` en Python).|
|
||||
|Paramètre|`LOCAL nom est un type`|Déclaration de paramètres, équivalent à `def f(nom: type)` en Python.|
|
||||
|
||||
Exemples :
|
||||
|
||||
```wlanguage
|
||||
PROCÉDURE maFonction()
|
||||
sTexte est une chaîne = "Bonjour"
|
||||
RENVOYER(sTexte)
|
||||
```
|
||||
|
||||
```python
|
||||
def maFonction():
|
||||
sTexte = "Bonjour"
|
||||
return sTexte
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🧱 2. Rappel complet des concepts de **classes** en WLangage
|
||||
|
||||
Le système objet de WLangage est inspiré d'autres langages objets, mais avec quelques spécificités :
|
||||
|
||||
|Élément|En WLangage|Équivalent Python|Remarques|
|
||||
|---|---|---|---|
|
||||
|Déclaration de classe|`CLASSE MaClasse`|`class MaClasse:`|Identique|
|
||||
|Héritage|`CLASSE MaClasse HÉRITE MaBase`|`class MaClasse(MaBase):`|Identique|
|
||||
|Attribut privé|`x est un entier (PRIVÉ)`|`self._x: int` ou `__x`|Respect de l'encapsulation|
|
||||
|Attribut protégé|`x (PROTÉGÉ)`|`self._x`|Convention|
|
||||
|Attribut public|`x` ou `x (PUBLIC)`|`self.x`|Accès libre|
|
||||
|Constructeur|`PROCÉDURE Constructeur()`|`def __init__(self):`|Spécifique|
|
||||
|Destructeur|`PROCÉDURE Destructeur()`|`def __del__(self):`|Rarement utile en Python|
|
||||
|Méthode virtuelle|`PROCÉDURE VIRTUELLE ...`|Méthode définie mais appelée dans une classe dérivée||
|
||||
|Méthode abstraite|`PROCÉDURE ABSTRAITE ...`|`@abstractmethod` (via `abc` en Python)|Pas d’implémentation ici|
|
||||
|
||||
---
|
||||
|
||||
### Exemple WLangage :
|
||||
|
||||
```wlanguage
|
||||
CLASSE MaClasse
|
||||
x est un entier (PROTÉGÉ)
|
||||
|
||||
PROCÉDURE Constructeur()
|
||||
x = 5
|
||||
|
||||
PROCÉDURE getX() : entier
|
||||
RENVOYER(x)
|
||||
FIN
|
||||
```
|
||||
|
||||
### Équivalent Python :
|
||||
|
||||
```python
|
||||
class MaClasse:
|
||||
def __init__(self):
|
||||
self._x = 5
|
||||
|
||||
def get_x(self) -> int:
|
||||
return self._x
|
||||
```
|
||||
|
||||
---
|
||||
23
webdev/structure_projet_robo_mat.md
Normal file
23
webdev/structure_projet_robo_mat.md
Normal file
@ -0,0 +1,23 @@
|
||||
# 🗂️ Structure du projet WebDev : ROBO_MAT
|
||||
|
||||
> Voici une version Markdown de la structure du dossier principal pour documenter ton projet dans Obsidian.
|
||||
|
||||
```
|
||||
C:\MES PROJETS\ROBO_MAT
|
||||
├── robo_mat.wdp <- Fichier principal du projet
|
||||
├── robo_mat.env, .wws <- Fichiers de configuration
|
||||
├── PAGE_TEST.wwh <- Page test (interface)
|
||||
├── 210 Material Design\ <- Thèmes, icônes, SVG, WPC, WAMB
|
||||
├── Exe\ <- Fichiers générés
|
||||
├── LLM\ <- Contient les classes WDC liées aux LLM (Ollama, Mistral, etc.)
|
||||
├── robo_mat.cpl\FERNAND\ <- Cache utilisateur local (.wbc, .wrc, etc.)
|
||||
├── ROBO_MAT_WEB\ <- Génération Web : CSS, JS, ressources graphiques
|
||||
```
|
||||
|
||||
> 🔍 Fichiers de code à explorer en priorité :
|
||||
- `.wwh` → Pages Web
|
||||
- `.wdc` → Classes (peuvent contenir du code WLangage)
|
||||
- `.wdg`, `.wpg`, `.wpr`, `.wdm` (si présents)
|
||||
- Dossier `FERNAND\00000000\` → fichiers compilés mais nommés selon les objets sources
|
||||
|
||||
[[00_Template_Analyse_ROBO_MAT]]
|
||||
Loading…
x
Reference in New Issue
Block a user