mirror of
https://github.com/Ladebeze66/coffreobsidian.git
synced 2025-12-16 09:37:43 +01:00
Mise à jour rapide
This commit is contained in:
parent
602a9055e2
commit
30bcfd2bf3
472
.obsidian/workspace.json
vendored
472
.obsidian/workspace.json
vendored
@ -4,367 +4,67 @@
|
|||||||
"type": "split",
|
"type": "split",
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"id": "c2f4a1753293419f",
|
"id": "d991961c29ad106d",
|
||||||
"type": "tabs",
|
"type": "tabs",
|
||||||
"children": [
|
"children": [
|
||||||
{
|
{
|
||||||
"id": "68491419da144553",
|
"id": "8cd31f588ec21296",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "markdown",
|
"type": "markdown",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "Obsidian/Ouvrir un terminal dans Obsidian.md",
|
"file": "Serveur perso/Installation LLM +++.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",
|
|
||||||
"mode": "source",
|
"mode": "source",
|
||||||
"source": false
|
"source": false
|
||||||
},
|
},
|
||||||
"icon": "lucide-file",
|
"icon": "lucide-file",
|
||||||
"title": "guide_ollama_complet"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "4a79ae9b5cf40685",
|
|
||||||
"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",
|
|
||||||
"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": "Serveur perso/Infrastructure Optimisée d'IA Locale.md",
|
|
||||||
"mode": "source",
|
|
||||||
"source": false
|
|
||||||
},
|
|
||||||
"icon": "lucide-file",
|
|
||||||
"title": "Infrastructure Optimisée d'IA Locale"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "a152b360c324fb6f",
|
|
||||||
"type": "leaf",
|
|
||||||
"state": {
|
|
||||||
"type": "markdown",
|
|
||||||
"state": {
|
|
||||||
"file": "Serveur perso/LLM Cursor version2.md",
|
|
||||||
"mode": "preview",
|
|
||||||
"source": false
|
|
||||||
},
|
|
||||||
"icon": "lucide-file",
|
|
||||||
"title": "LLM Cursor version2"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "1da03f7485bb0fef",
|
|
||||||
"type": "leaf",
|
|
||||||
"state": {
|
|
||||||
"type": "markdown",
|
|
||||||
"state": {
|
|
||||||
"file": "Serveur perso/Recherche modèles.md",
|
|
||||||
"mode": "source",
|
|
||||||
"source": false
|
|
||||||
},
|
|
||||||
"icon": "lucide-file",
|
|
||||||
"title": "Recherche modèles"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "a3ac048cd068ef21",
|
|
||||||
"type": "leaf",
|
|
||||||
"state": {
|
|
||||||
"type": "markdown",
|
|
||||||
"state": {
|
|
||||||
"file": "inbox/Installation LLM +++.md",
|
|
||||||
"mode": "preview",
|
|
||||||
"source": false
|
|
||||||
},
|
|
||||||
"icon": "lucide-file",
|
|
||||||
"title": "Installation LLM +++"
|
"title": "Installation LLM +++"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "15f320992faf0688",
|
"id": "41d5f8a8d932e337",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "markdown",
|
"type": "markdown",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "Jour 5 notes support traitement ticket dev.md",
|
"file": "inbox/Test Cline.md",
|
||||||
"mode": "source",
|
"mode": "source",
|
||||||
"source": false
|
"source": false
|
||||||
},
|
},
|
||||||
"icon": "lucide-file",
|
"icon": "lucide-file",
|
||||||
"title": "Jour 5 notes support traitement ticket dev"
|
"title": "Test Cline"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "b3459535494873e5",
|
"id": "dd8810de0aecde96",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "markdown",
|
"type": "markdown",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "Obsidian/Obsidian CSS.md",
|
"file": "inbox/Résumé LLM-lab.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",
|
"mode": "source",
|
||||||
"source": false
|
"source": false
|
||||||
},
|
},
|
||||||
"icon": "lucide-file",
|
"icon": "lucide-file",
|
||||||
"title": "prompt"
|
"title": "Résumé LLM-lab"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "0e580d10b27a161e",
|
"id": "97ca7aff179659c4",
|
||||||
"type": "leaf",
|
"type": "leaf",
|
||||||
"state": {
|
"state": {
|
||||||
"type": "markdown",
|
"type": "markdown",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "inbox/prompt.md",
|
"file": "webdev/ROBO_MAT_Code_WLangage_Organise.md",
|
||||||
"mode": "source",
|
"mode": "source",
|
||||||
"source": false
|
"source": false
|
||||||
},
|
},
|
||||||
"icon": "lucide-file",
|
"icon": "lucide-file",
|
||||||
"title": "prompt"
|
"title": "ROBO_MAT_Code_WLangage_Organise"
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"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"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"currentTab": 14
|
"currentTab": 2
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"direction": "vertical"
|
"direction": "vertical"
|
||||||
@ -421,7 +121,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"direction": "horizontal",
|
"direction": "horizontal",
|
||||||
"width": 200
|
"width": 300
|
||||||
},
|
},
|
||||||
"right": {
|
"right": {
|
||||||
"id": "ad0ed0087b43302d",
|
"id": "ad0ed0087b43302d",
|
||||||
@ -497,8 +197,8 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "SC-custom-variables-view",
|
"type": "SC-custom-variables-view",
|
||||||
"state": {},
|
"state": {},
|
||||||
"icon": "code-glyph",
|
"icon": "lucide-file",
|
||||||
"title": "Shell commands: Custom variables"
|
"title": "Le module complémentaire n'est plus actif."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -507,8 +207,8 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "SC-custom-variables-view",
|
"type": "SC-custom-variables-view",
|
||||||
"state": {},
|
"state": {},
|
||||||
"icon": "code-glyph",
|
"icon": "lucide-file",
|
||||||
"title": "Shell commands: Custom variables"
|
"title": "Le module complémentaire n'est plus actif."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -517,8 +217,8 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "side-panel-control-view",
|
"type": "side-panel-control-view",
|
||||||
"state": {},
|
"state": {},
|
||||||
"icon": "viewIcon",
|
"icon": "lucide-file",
|
||||||
"title": "Markdown-Autocomplete"
|
"title": "Le module complémentaire n'est plus actif."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -527,8 +227,8 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "SC-custom-variables-view",
|
"type": "SC-custom-variables-view",
|
||||||
"state": {},
|
"state": {},
|
||||||
"icon": "code-glyph",
|
"icon": "lucide-file",
|
||||||
"title": "Shell commands: Custom variables"
|
"title": "Le module complémentaire n'est plus actif."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -537,8 +237,8 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "SC-custom-variables-view",
|
"type": "SC-custom-variables-view",
|
||||||
"state": {},
|
"state": {},
|
||||||
"icon": "code-glyph",
|
"icon": "lucide-file",
|
||||||
"title": "Shell commands: Custom variables"
|
"title": "Le module complémentaire n'est plus actif."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -547,8 +247,8 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "SC-custom-variables-view",
|
"type": "SC-custom-variables-view",
|
||||||
"state": {},
|
"state": {},
|
||||||
"icon": "code-glyph",
|
"icon": "lucide-file",
|
||||||
"title": "Shell commands: Custom variables"
|
"title": "Le module complémentaire n'est plus actif."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -557,8 +257,8 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "SC-custom-variables-view",
|
"type": "SC-custom-variables-view",
|
||||||
"state": {},
|
"state": {},
|
||||||
"icon": "code-glyph",
|
"icon": "lucide-file",
|
||||||
"title": "Shell commands: Custom variables"
|
"title": "Le module complémentaire n'est plus actif."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -567,8 +267,8 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "SC-custom-variables-view",
|
"type": "SC-custom-variables-view",
|
||||||
"state": {},
|
"state": {},
|
||||||
"icon": "code-glyph",
|
"icon": "lucide-file",
|
||||||
"title": "Shell commands: Custom variables"
|
"title": "Le module complémentaire n'est plus actif."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -577,8 +277,8 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "SC-custom-variables-view",
|
"type": "SC-custom-variables-view",
|
||||||
"state": {},
|
"state": {},
|
||||||
"icon": "code-glyph",
|
"icon": "lucide-file",
|
||||||
"title": "Shell commands: Custom variables"
|
"title": "Le module complémentaire n'est plus actif."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -587,8 +287,8 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "SC-custom-variables-view",
|
"type": "SC-custom-variables-view",
|
||||||
"state": {},
|
"state": {},
|
||||||
"icon": "code-glyph",
|
"icon": "lucide-file",
|
||||||
"title": "Shell commands: Custom variables"
|
"title": "Le module complémentaire n'est plus actif."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -597,8 +297,8 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "SC-custom-variables-view",
|
"type": "SC-custom-variables-view",
|
||||||
"state": {},
|
"state": {},
|
||||||
"icon": "code-glyph",
|
"icon": "lucide-file",
|
||||||
"title": "Shell commands: Custom variables"
|
"title": "Le module complémentaire n'est plus actif."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -607,8 +307,8 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "SC-custom-variables-view",
|
"type": "SC-custom-variables-view",
|
||||||
"state": {},
|
"state": {},
|
||||||
"icon": "code-glyph",
|
"icon": "lucide-file",
|
||||||
"title": "Shell commands: Custom variables"
|
"title": "Le module complémentaire n'est plus actif."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -617,8 +317,8 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "SC-custom-variables-view",
|
"type": "SC-custom-variables-view",
|
||||||
"state": {},
|
"state": {},
|
||||||
"icon": "code-glyph",
|
"icon": "lucide-file",
|
||||||
"title": "Shell commands: Custom variables"
|
"title": "Le module complémentaire n'est plus actif."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -627,8 +327,8 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "SC-custom-variables-view",
|
"type": "SC-custom-variables-view",
|
||||||
"state": {},
|
"state": {},
|
||||||
"icon": "code-glyph",
|
"icon": "lucide-file",
|
||||||
"title": "Shell commands: Custom variables"
|
"title": "Le module complémentaire n'est plus actif."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -637,8 +337,8 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "SC-custom-variables-view",
|
"type": "SC-custom-variables-view",
|
||||||
"state": {},
|
"state": {},
|
||||||
"icon": "code-glyph",
|
"icon": "lucide-file",
|
||||||
"title": "Shell commands: Custom variables"
|
"title": "Le module complémentaire n'est plus actif."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -647,8 +347,8 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "SC-custom-variables-view",
|
"type": "SC-custom-variables-view",
|
||||||
"state": {},
|
"state": {},
|
||||||
"icon": "code-glyph",
|
"icon": "lucide-file",
|
||||||
"title": "Shell commands: Custom variables"
|
"title": "Le module complémentaire n'est plus actif."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -657,8 +357,8 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "SC-custom-variables-view",
|
"type": "SC-custom-variables-view",
|
||||||
"state": {},
|
"state": {},
|
||||||
"icon": "code-glyph",
|
"icon": "lucide-file",
|
||||||
"title": "Shell commands: Custom variables"
|
"title": "Le module complémentaire n'est plus actif."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -667,8 +367,8 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "SC-custom-variables-view",
|
"type": "SC-custom-variables-view",
|
||||||
"state": {},
|
"state": {},
|
||||||
"icon": "code-glyph",
|
"icon": "lucide-file",
|
||||||
"title": "Shell commands: Custom variables"
|
"title": "Le module complémentaire n'est plus actif."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -677,8 +377,8 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "SC-custom-variables-view",
|
"type": "SC-custom-variables-view",
|
||||||
"state": {},
|
"state": {},
|
||||||
"icon": "code-glyph",
|
"icon": "lucide-file",
|
||||||
"title": "Shell commands: Custom variables"
|
"title": "Le module complémentaire n'est plus actif."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -687,8 +387,8 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "SC-custom-variables-view",
|
"type": "SC-custom-variables-view",
|
||||||
"state": {},
|
"state": {},
|
||||||
"icon": "code-glyph",
|
"icon": "lucide-file",
|
||||||
"title": "Shell commands: Custom variables"
|
"title": "Le module complémentaire n'est plus actif."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@ -702,56 +402,56 @@
|
|||||||
"left-ribbon": {
|
"left-ribbon": {
|
||||||
"hiddenItems": {
|
"hiddenItems": {
|
||||||
"workspaces:Gérer les espaces de travail": false,
|
"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,
|
"switcher:Ouvrir le sélecteur rapide": false,
|
||||||
"graph:Ouvrir la vue graphique": false,
|
"graph:Ouvrir la vue graphique": false,
|
||||||
"canvas:Créer une nouvelle toile": false,
|
"canvas:Créer une nouvelle toile": false,
|
||||||
"daily-notes:Ouvrir la note quotidienne": false,
|
"daily-notes:Ouvrir la note quotidienne": false,
|
||||||
"templates:Insérer le modèle": false,
|
"templates:Insérer le modèle": false,
|
||||||
"command-palette:Ouvrir la palette de commandes": 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,
|
"obsidian-shellcommands:Shell commands: Custom variables": false,
|
||||||
"templater-obsidian:Templater": false
|
"templater-obsidian:Templater": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"active": "a3ac048cd068ef21",
|
"active": "dd8810de0aecde96",
|
||||||
"lastOpenFiles": [
|
"lastOpenFiles": [
|
||||||
"Serveur perso/Recherche modèles.md",
|
"inbox/Test Cline.md",
|
||||||
"inbox/Installation LLM +++.md",
|
"inbox/Résumé LLM-lab.md",
|
||||||
|
"Serveur perso/Installation LLM +++.md",
|
||||||
"Serveur perso/Installation LLM dans Cursor.md",
|
"Serveur perso/Installation LLM dans Cursor.md",
|
||||||
"Serveur perso/LLM Cursor.md",
|
|
||||||
"Serveur perso/LLM Cursor version2.md",
|
|
||||||
"command_list/Ollama commands.md",
|
|
||||||
"Serveur perso/Infrastructure Optimisée d'IA Locale.md",
|
"Serveur perso/Infrastructure Optimisée d'IA Locale.md",
|
||||||
"Serveur perso/Création de classes agents pour LLM locaux avec Cursor et Ollama.md",
|
"Serveur perso/Création de classes agents pour LLM locaux avec Cursor et Ollama.md",
|
||||||
"Serveur perso/automatiser-lancement-serveur-windows.md",
|
"command_list/Git commands.md",
|
||||||
"Serveur perso/Agent LLM recherches 2.md",
|
|
||||||
"Serveur perso/Agent LLM Classes recherches 1.md",
|
|
||||||
"ollama/Plan d'apprentissage détaillé sur Ollama.md",
|
|
||||||
"ollama/guide_ollama_complet.md",
|
|
||||||
"command_list/Commandes Nvidia.md",
|
"command_list/Commandes Nvidia.md",
|
||||||
"Serveur perso/LLM Obsidian.md",
|
"command_list/Ollama commands.md",
|
||||||
"Serveur perso/Préversion IA locales personnelle.md",
|
"webdev/ROBO_MAT_Analyse_clsMistral.md",
|
||||||
"Serveur perso/Infrastructure Optimisée d'IA Locale (version 2).md",
|
"webdev/ROBO_MAT_Analyse_clsOllama.md",
|
||||||
"Serveur perso/Piste d'améliorations du projet IA locale.md",
|
"webdev/Non confirmé 702528.crdownload",
|
||||||
"inbox/wild.md",
|
|
||||||
"webdev/PJ/wlangage_class_code.json",
|
|
||||||
"webdev/PJ/structure_projet_robo_mat.txt",
|
|
||||||
"webdev/structure_projet_robo_mat.md",
|
|
||||||
"webdev/ROBO_MAT_Code_WLangage_Organise.md",
|
|
||||||
"webdev/ROBO_MAT_Analyse_Page_TEST_et_LLM.md",
|
|
||||||
"webdev/Rappel de certaines notions WLangage et Classes.md",
|
|
||||||
"webdev/ROBO_MAT_Analyse_Fonctionnelle.md",
|
"webdev/ROBO_MAT_Analyse_Fonctionnelle.md",
|
||||||
"webdev/PJ",
|
"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",
|
"webdev/Analyse_ROBO_MAT_Complete.md",
|
||||||
"webdev/Application webdev (1).md",
|
"inbox/prompt.md",
|
||||||
"webdev",
|
"inbox/Odoo.md",
|
||||||
|
"inbox/Notes RAGFLOW.md",
|
||||||
|
"inbox/Notes projet LLM.md",
|
||||||
|
"inbox/Node.js.md",
|
||||||
|
"inbox/Fichier type json récupération odoo.md",
|
||||||
|
"inbox/Arborescence du programme.md",
|
||||||
|
"inbox/StreamDeck config.md",
|
||||||
|
"inbox/Scripts requêtes Odoo.md",
|
||||||
"inbox/ROBO_MAT_Code_WLangage_Organise.json",
|
"inbox/ROBO_MAT_Code_WLangage_Organise.json",
|
||||||
"Streamdeck",
|
"inbox/Non confirmé 873082.crdownload",
|
||||||
"command_list",
|
"inbox/ROBO_MAT_Analyse_clsDeepl.md",
|
||||||
"Stage",
|
"inbox/Non confirmé 727828.crdownload",
|
||||||
"ollama",
|
"inbox/version épuée.md",
|
||||||
"Obsidian",
|
"inbox/Non confirmé 465885.crdownload",
|
||||||
|
"inbox/Non confirmé 948241.crdownload",
|
||||||
|
"inbox/Non confirmé 34515.crdownload",
|
||||||
|
"inbox/Non confirmé 822614.crdownload",
|
||||||
"captures/signature.png",
|
"captures/signature.png",
|
||||||
"captures/Capture d'écran 2025-03-20 150304.png",
|
"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 150213.png",
|
||||||
|
|||||||
155
inbox/Résumé LLM-lab.md
Normal file
155
inbox/Résumé LLM-lab.md
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 📄 `docs/journal_developpement_llm_2025-03-26.md`
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# 🧠 Journal de développement - Infrastructure LLM
|
||||||
|
📅 **Date** : 2025-03-26
|
||||||
|
🎯 **Objectif** : Structurer un système modulaire pour gérer, tester et affiner plusieurs modèles LLM via une architecture orientée objet.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Étapes réalisées
|
||||||
|
|
||||||
|
### 1. 📦 Mise en place d’une architecture modulaire
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
llm_lab/ ├── core/ # Classes des modèles │ ├── base_llm.py # Classe abstraite BaseLLM │ ├── mistral7b.py # Modèle spécifique Mistral 7B │ ├── factory.py # Générateur dynamique de modèles ├── agents/ # Rôles d'agents (prompts système + paramètres) │ └── roles.py ├── utils/ # Scripts de test automatisé │ └── parameter_tester.py ├── tests/ # Scripts de test individuels ├── logs/ # Logs Markdown générés automatiquement ├── outputs/ # Exports futurs (JSON, CSV) ├── config/ # Paramètres modèles (future extensibilité) └── log_index.md # Index central des logs
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. 🧱 Construction des composants
|
||||||
|
|
||||||
|
#### 🔹 `BaseLLM` (abstraite)
|
||||||
|
- Gère les prompts, rôles, paramètres
|
||||||
|
- Centralise le logging (`.md` + index)
|
||||||
|
|
||||||
|
#### 🔹 `Mistral7B`
|
||||||
|
- Hérite de `BaseLLM`
|
||||||
|
- Intègre les paramètres valides pour Ollama
|
||||||
|
- Appelle l'API Ollama en local
|
||||||
|
|
||||||
|
#### 🔹 `factory.py`
|
||||||
|
- Permet de créer un modèle à partir de son nom :
|
||||||
|
```python
|
||||||
|
model = LLMFactory.create("mistral:latest")
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. 🎭 Système de rôles (`agents/roles.py`)
|
||||||
|
|
||||||
|
Chaque rôle contient :
|
||||||
|
|
||||||
|
- un `system_prompt` (décrit l’identité de l’agent)
|
||||||
|
|
||||||
|
- des `params` personnalisés (optionnels)
|
||||||
|
|
||||||
|
|
||||||
|
Exemples :
|
||||||
|
|
||||||
|
```python
|
||||||
|
AGENTS = {
|
||||||
|
"formateur": {
|
||||||
|
"system_prompt": "...",
|
||||||
|
"params": { "temperature": 0.6 }
|
||||||
|
},
|
||||||
|
...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 4. 🧪 Automatisation de tests de paramètres (`utils/parameter_tester.py`)
|
||||||
|
|
||||||
|
Fonction :
|
||||||
|
|
||||||
|
```python
|
||||||
|
test_agents_on_prompt(
|
||||||
|
model_class, prompt, agents, param_grid, fixed_params
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
➡️ Permet de :
|
||||||
|
|
||||||
|
- Lancer plusieurs agents sur un même prompt
|
||||||
|
|
||||||
|
- Faire varier les paramètres automatiquement
|
||||||
|
|
||||||
|
- Logger chaque test séparément
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 5. 📝 Système de logs
|
||||||
|
|
||||||
|
- Chaque appel génère un fichier `.md` dans `logs/`
|
||||||
|
|
||||||
|
- Contient :
|
||||||
|
|
||||||
|
- UID, modèle, moteur, agent
|
||||||
|
|
||||||
|
- paramètres complets
|
||||||
|
|
||||||
|
- réponse générée
|
||||||
|
|
||||||
|
- L’index central est mis à jour (`log_index.md`)
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 💡 Stratégie recommandée de test
|
||||||
|
|
||||||
|
### Étape 1 : tester plusieurs agents avec les mêmes paramètres
|
||||||
|
|
||||||
|
→ Valider que leur comportement reflète bien leur rôle
|
||||||
|
|
||||||
|
### Étape 2 : faire varier les paramètres sur chaque agent
|
||||||
|
|
||||||
|
→ Identifier les réglages les plus pertinents agent par agent
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚠️ Bonnes pratiques pour exécuter les tests
|
||||||
|
|
||||||
|
### ✔️ Depuis la racine du projet :
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python -m tests.test_single_agent
|
||||||
|
```
|
||||||
|
|
||||||
|
### ✔️ Ou ajouter ceci au début des fichiers `tests/` :
|
||||||
|
|
||||||
|
```python
|
||||||
|
import sys, os
|
||||||
|
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔜 Prochaines étapes possibles
|
||||||
|
|
||||||
|
- Ajouter des modèles supplémentaires (`llama2`, `mixtral`, etc.)
|
||||||
|
|
||||||
|
- Gérer les tests en parallèle (`ThreadPoolExecutor`)
|
||||||
|
|
||||||
|
- Ajouter des dashboards CSV/JSON dans `outputs/`
|
||||||
|
|
||||||
|
- Générer des rapports automatiques
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
🧠 _Tu disposes désormais d’une architecture solide pour explorer, comparer, améliorer et documenter le comportement de n’importe quel LLM à travers des rôles et des réglages variés._
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Souhaites-tu que je te livre ce fichier `.md` à télécharger directement dans un `.zip` avec l’arborescence minimale ?
|
||||||
|
```
|
||||||
394
inbox/Test Cline.md
Normal file
394
inbox/Test Cline.md
Normal file
@ -0,0 +1,394 @@
|
|||||||
|
|
||||||
|
---
|
||||||
|
Premier tests sur cline depuis serveur distant OVH
|
||||||
|
- Attention dans le code de bien définir le nom du modèle ici nous allons commencer des tests léger sur "mistral : latest"
|
||||||
|
- Adresse OLLAMA_URL = "http://217.182.105.173:11434/api/generate"
|
||||||
|
- Attention pour réception des réponses "stream" : False ou True par défaut sur True ce qui signifie:
|
||||||
|
- Il envoie les tokens un par un en flux (streaming)
|
||||||
|
- Chaque ligne de réponse est un objet JSON séparé
|
||||||
|
- [x] Création d'un script python avec prompt simple : réponse attendue ✅ 2025-03-25
|
||||||
|
- [ ]
|
||||||
|
##Création d'un logger de réponse Mistral (Ollama)
|
||||||
|
###Objectif
|
||||||
|
- [x] Ce script envoie au modèle Mistral 7b via Ollama, avec des paramètres configurables. Il enregistre la réponse en .md ✅ 2025-03-25
|
||||||
|
|
||||||
|
## 🛠️ Paramètres disponibles
|
||||||
|
|
||||||
|
- `model` : nom exact du modèle (`mistral:latest`)
|
||||||
|
- `temperature` : contrôle la créativité (0.1 = déterministe, 1.0 = créatif)
|
||||||
|
- `top_p` : échantillonnage nucleus
|
||||||
|
- `top_k` : nombre max de tokens à considérer
|
||||||
|
- `repeat_penalty` : pénalise les répétitions
|
||||||
|
- `num_predict` : nombre max de tokens générés
|
||||||
|
- `stop` : mot/char de coupure manuelle
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📄 Exemple de sortie `.md` générée
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# 🧾 Résultat génération Mistral
|
||||||
|
|
||||||
|
**🗓️ Date :** 2025-03-25 16:42
|
||||||
|
**🧠 Modèle :** mistral:latest
|
||||||
|
**💬 Prompt :** Explique-moi simplement ce qu'est l'intelligence artificielle.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚙️ Paramètres utilisés
|
||||||
|
|
||||||
|
- Temperature : 0.7
|
||||||
|
- Top P : 0.9
|
||||||
|
- Top K : 50
|
||||||
|
- Repeat Penalty : 1.1
|
||||||
|
- Max Tokens (num_predict) : 512
|
||||||
|
- Stop : *Aucun*
|
||||||
|
|
||||||
|
---```
|
||||||
|
|
||||||
|
---
|
||||||
|
## ⚖️ Comparatif `stream: True` vs `stream: False`
|
||||||
|
|
||||||
|
| Paramètre | `stream: True` | `stream: False` |
|
||||||
|
| --------------------- | ------------------------------------ | ------------------------------------------ |
|
||||||
|
| 🧠 Fonctionnement | Réception **progressive** des tokens | Réception **d’un seul bloc** à la fin |
|
||||||
|
| ⏱️ Vitesse perçue | **Immédiate** (1er token direct) | **Plus lente** (attend que tout soit prêt) |
|
||||||
|
| 📈 Performance réelle | Quasiment équivalente | Légèrement plus rapide si réponse courte |
|
||||||
|
| 🧩 Intégration | Utile en **interface temps réel** | Mieux pour **log** ou traitement global |
|
||||||
|
| 🛠️ Complexité | Traitement ligne à ligne | Plus simple (`response.json()`) |
|
||||||
|
| 📤 Poids réseau | Petites requêtes multiples | Une seule grosse réponse |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ **Quand utiliser `stream: True`**
|
||||||
|
|
||||||
|
- Tu veux afficher la réponse **en temps réel dans un terminal ou une interface**.
|
||||||
|
|
||||||
|
- Tu fais un chatbot et veux **rendre l’UI plus réactive**.
|
||||||
|
|
||||||
|
- Tu veux **interrompre** la génération à la volée.
|
||||||
|
|
||||||
|
|
||||||
|
### ⚠️ Nécessite :
|
||||||
|
|
||||||
|
```python
|
||||||
|
for line in response.iter_lines():
|
||||||
|
data = json.loads(line)
|
||||||
|
print(data["response"], end="", flush=True)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ **Quand utiliser `stream: False`**
|
||||||
|
|
||||||
|
- Tu fais de l’analyse, du **logging** ou de la **comparaison de générations**.
|
||||||
|
|
||||||
|
- Tu veux une réponse **complète, simple à traiter**.
|
||||||
|
|
||||||
|
- Tu veux **enregistrer ou archiver** les prompts + réponses sans complexité.
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🔁 Résumé express
|
||||||
|
|
||||||
|
- **stream: True** → dynamique, pour interface interactive (chatbot, terminal live)
|
||||||
|
|
||||||
|
- **stream: False** → simple, pour logs, scripts, tests comparatifs (ton cas actuel)
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
## 🔜 **Objectifs à venir**
|
||||||
|
|
||||||
|
Voici ce qui est **prévu ensuite** (dis-moi si on ajuste la priorité) :
|
||||||
|
|
||||||
|
### 🧩 1. **Étendre les logs pour mieux suivre les variations**
|
||||||
|
|
||||||
|
- [x] Ajouter un identifiant unique par test ✅ 2025-03-25
|
||||||
|
|
||||||
|
- [x] Historiser les prompts / réglages dans un index central (genre `log_index.md`) ✅ 2025-03-25
|
||||||
|
|
||||||
|
|
||||||
|
### 🧪 2. **Faire varier les paramètres automatiquement**
|
||||||
|
|
||||||
|
- [x] Générer plusieurs réponses à partir d’un même prompt avec différentes températures, top_p, etc. ✅ 2025-03-25
|
||||||
|
|
||||||
|
|
||||||
|
### 🧠 3. **Passer à l'intégration avec Cline (dans Cursor)**
|
||||||
|
|
||||||
|
- [ ] Utiliser le modèle directement depuis l'interface Cline (client local)
|
||||||
|
|
||||||
|
- [ ] Voir si la connexion à distance fonctionne via API d’Ollama
|
||||||
|
|
||||||
|
- [ ] Créer un `cline.config.json` plus tard si utile
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧠 **1. Dans notre contexte, les scripts bien cadrés sont la base**
|
||||||
|
|
||||||
|
Tu as entièrement raison : si ton but est de :
|
||||||
|
|
||||||
|
- 🧪 Faire des **tests structurés sur les LLM**
|
||||||
|
|
||||||
|
- 🔁 Comparer les **effets de réglages**
|
||||||
|
|
||||||
|
- 📊 Récupérer des **logs propres pour analyse**
|
||||||
|
|
||||||
|
- 🔧 Envisager des **améliorations par RAG ou fine-tuning**
|
||||||
|
|
||||||
|
|
||||||
|
Alors **le cœur de ton infrastructure doit être : des scripts robustes, versionnés, traçables, testables.**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔍 **2. L’intérêt d’avoir des “classes d’agents” par modèle et par tâche**
|
||||||
|
|
||||||
|
C’est une **approche d’ingénierie avancée** et **très scalable** :
|
||||||
|
|
||||||
|
- Tu définis des **profils d'agents** :
|
||||||
|
|
||||||
|
- ✨ Agent RAG pour recherche technique
|
||||||
|
|
||||||
|
- 📑 Agent résumé juridique
|
||||||
|
|
||||||
|
- 🔧 Agent support technique
|
||||||
|
|
||||||
|
- 🧠 Agent pour test de comportement (prompt sensitivity, hallucinations, etc.)
|
||||||
|
|
||||||
|
- Et tu **lances ces agents via des scripts** avec :
|
||||||
|
|
||||||
|
- un modèle précis (`mistral`, `llama2`, etc.)
|
||||||
|
|
||||||
|
- des prompts types
|
||||||
|
|
||||||
|
- des paramètres contrôlés
|
||||||
|
|
||||||
|
- des logs traçables
|
||||||
|
|
||||||
|
|
||||||
|
Cette approche te permet ensuite de :
|
||||||
|
|
||||||
|
- Réentraîner des modèles avec les bons exemples
|
||||||
|
|
||||||
|
- Affiner le comportement de chaque "rôle"
|
||||||
|
|
||||||
|
- Prioriser les modèles à adapter ou remplacer
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🤖 **3. Alors… est-ce que Cline est indispensable ?**
|
||||||
|
|
||||||
|
> **Non. Cline n’est pas indispensable.**
|
||||||
|
> Mais il peut être **très utile selon tes usages secondaires.**
|
||||||
|
|
||||||
|
### ✅ Ce pour quoi Cline _est_ utile :
|
||||||
|
|
||||||
|
- 👨💻 **Exploration interactive** d’un modèle
|
||||||
|
|
||||||
|
- 📋 Rapidité pour **tester un prompt** ou une idée
|
||||||
|
|
||||||
|
- 💡 Travailler dans **Cursor ou VSCode** pour explorer le comportement d’un modèle sur des fichiers
|
||||||
|
|
||||||
|
|
||||||
|
### ❌ Ce pour quoi **tu n’as pas besoin de Cline** :
|
||||||
|
|
||||||
|
- ❎ Campagnes de test automatisées
|
||||||
|
|
||||||
|
- ❎ Analyse de résultats
|
||||||
|
|
||||||
|
- ❎ Suivi fin des comportements ou génération de logs
|
||||||
|
|
||||||
|
- ❎ Entraînement, fine-tuning, adaptation par LoRA ou supervision
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📦 En résumé
|
||||||
|
|
||||||
|
| Usage | Cline | Scripts personnalisés |
|
||||||
|
| ----------------------------------- | ----- | --------------------- |
|
||||||
|
| Prompt rapide / test manuel | ✅ | ✅ |
|
||||||
|
| Campagne de test (variation params) | ❌ | ✅ |
|
||||||
|
| Logging / Récupération fine | ❌ | ✅ |
|
||||||
|
| Comparaison multi-modèles | ❌ | ✅ |
|
||||||
|
| Préparation fine-tuning / LoRA | ❌ | ✅ |
|
||||||
|
| Workflow typé (agent/task/model) | ❌ | ✅ |
|
||||||
|
| Dev exploratoire dans Cursor | ✅ | ✅ (moins fluide) |
|
||||||
|
|
||||||
|
---
|
||||||
|
### Créer une classe abstraite globale** (comme `BaseLLM`) est **fortement recommandé** si tu comptes :
|
||||||
|
|
||||||
|
- Gérer plusieurs modèles (Mistral, LLaMA2, Mixtral, etc.)
|
||||||
|
|
||||||
|
- Réutiliser des comportements communs (log, rôle, configuration)
|
||||||
|
|
||||||
|
- Faciliter l’évolution, la maintenance et l’extension de ton code
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ **Pourquoi créer une classe abstraite `BaseLLM` ?**
|
||||||
|
|
||||||
|
### 🔁 1. **Mutualiser les fonctionnalités communes**
|
||||||
|
|
||||||
|
Tu n’auras pas à réécrire :
|
||||||
|
|
||||||
|
- La gestion des rôles
|
||||||
|
|
||||||
|
- Le logging Markdown
|
||||||
|
|
||||||
|
- L’enregistrement dans l’index
|
||||||
|
|
||||||
|
- La structure des paramètres
|
||||||
|
|
||||||
|
|
||||||
|
➡️ Tu définis ça **une seule fois dans `BaseLLM`**, et tes classes comme `Mistral7B` n’ont plus qu’à se concentrer sur les **spécificités du modèle**.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🧱 2. **Faciliter l’ajout d’autres classes**
|
||||||
|
|
||||||
|
Tu pourras ensuite créer rapidement :
|
||||||
|
|
||||||
|
```python
|
||||||
|
class LLaMA2(BaseLLM): ...
|
||||||
|
class Mixtral8x7B(BaseLLM): ...
|
||||||
|
class Phi3(BaseLLM): ...
|
||||||
|
```
|
||||||
|
|
||||||
|
Et chacune ne définira que ce qui change : l’URL, le nom du modèle, le système de requête, etc.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🔄 3. **Permettre l’interopérabilité**
|
||||||
|
|
||||||
|
Tu peux créer un **système générique** qui accepte **n’importe quelle instance de modèle** :
|
||||||
|
|
||||||
|
```python
|
||||||
|
def test_model(agent_name, prompt, model: BaseLLM):
|
||||||
|
model.set_role(agent_name)
|
||||||
|
return model.generate(prompt)
|
||||||
|
```
|
||||||
|
|
||||||
|
➡️ Cela permet d’évaluer **plusieurs modèles avec la même interface** !
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ En résumé
|
||||||
|
|
||||||
|
| Avantage | Sans classe abstraite | Avec `BaseLLM` |
|
||||||
|
| ---------------------------------- | ----------------------- | -------------- |
|
||||||
|
| Réutilisation du code | ❌ Faible | ✅ Très forte |
|
||||||
|
| Facilité à ajouter un nouveau LLM | ❌ Long | ✅ Très rapide |
|
||||||
|
| Uniformité d'appel (`.generate()`) | ❌ Différente par modèle | ✅ Identique |
|
||||||
|
| Structure propre & maintenable | ❌ Complexité croissante | ✅ Solide |
|
||||||
|
| Interopérabilité / abstraction | ❌ Difficile | ✅ Naturelle |
|
||||||
|
|
||||||
|
---
|
||||||
|
## 🧠 1. Les **paramètres de configuration** varient selon les modèles
|
||||||
|
|
||||||
|
### ✅ Ce que **tous** les modèles acceptent via Ollama :
|
||||||
|
|
||||||
|
|Paramètre|Description|
|
||||||
|
|---|---|
|
||||||
|
|`temperature`|Contrôle la créativité|
|
||||||
|
|`top_p`|Nucleus sampling|
|
||||||
|
|`repeat_penalty`|Pénalise les répétitions|
|
||||||
|
|`num_predict`|Nombre de tokens générés|
|
||||||
|
|`stop`|Mots ou séquences d'arrêt|
|
||||||
|
|`seed`|Graine pour reproductibilité|
|
||||||
|
|`stream`|Réponse en streaming|
|
||||||
|
|`prompt`|(obligatoire) le texte utilisateur|
|
||||||
|
|`model`|(obligatoire) le nom du modèle|
|
||||||
|
|
||||||
|
### ⚠️ Ce qui est **optionnel ou spécifique** selon les modèles :
|
||||||
|
|
||||||
|
|Paramètre|Cas spécifique|
|
||||||
|
|---|---|
|
||||||
|
|`top_k`|Non supporté par tous|
|
||||||
|
|`frequency_penalty`, `presence_penalty`|Valides surtout sur API OpenAI-like|
|
||||||
|
|`max_tokens`|Peut ne pas être utilisé|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Conséquence sur `BaseLLM`
|
||||||
|
|
||||||
|
Ta classe abstraite doit :
|
||||||
|
|
||||||
|
- Accepter un dictionnaire `params` initial personnalisé par modèle
|
||||||
|
|
||||||
|
- Avoir une méthode de validation ou un filtre des paramètres
|
||||||
|
|
||||||
|
- Enregistrer dans les logs **uniquement les paramètres actifs**
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ 2. Les logs doivent **identifier clairement le modèle utilisé**
|
||||||
|
|
||||||
|
Déjà prévu dans `BaseLLM._log_result()` :
|
||||||
|
|
||||||
|
```python
|
||||||
|
f.write(f"**🧠 Modèle :** {self.model}\n")
|
||||||
|
```
|
||||||
|
|
||||||
|
Mais on peut améliorer avec une ligne en plus dans le `log_index.md` :
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
🧠 `mistral:latest` (via Ollama)
|
||||||
|
```
|
||||||
|
|
||||||
|
Et pourquoi pas ajouter :
|
||||||
|
|
||||||
|
```python
|
||||||
|
self.engine = "Ollama"
|
||||||
|
```
|
||||||
|
|
||||||
|
dans les classes filles pour différencier un jour `Ollama`, `vLLM`, `HF Transformers`, etc.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📂 Arborescence recommandée de ton projet
|
||||||
|
|
||||||
|
Voici une arborescence professionnelle et modulaire :
|
||||||
|
|
||||||
|
```
|
||||||
|
llm_lab/ ← Racine de ton projet
|
||||||
|
├── agents/ ← Définition des rôles d'agents
|
||||||
|
│ └── roles.py ← Dictionnaire AGENTS
|
||||||
|
│
|
||||||
|
├── core/ ← Coeur du système LLM
|
||||||
|
│ ├── base_llm.py ← Classe abstraite BaseLLM
|
||||||
|
│ ├── mistral7b.py ← Classe héritée Mistral7B
|
||||||
|
│ ├── llama2.py ← (futur)
|
||||||
|
│ └── factory.py ← Instanciation dynamique
|
||||||
|
│
|
||||||
|
├── logs/ ← Réponses générées
|
||||||
|
│ ├── mistral_2025-03-25_XXXX.md
|
||||||
|
│
|
||||||
|
├── log_index.md ← Index global des tests
|
||||||
|
│
|
||||||
|
├── tests/ ← Scripts de test
|
||||||
|
│ └── test_mistral7b.py ← Exemple d’usage
|
||||||
|
│
|
||||||
|
├── prompts/ ← Templates ou scénarios de tests
|
||||||
|
│ └── test_prompt1.txt
|
||||||
|
│
|
||||||
|
├── data/ ← Données utilisées (optionnel)
|
||||||
|
│
|
||||||
|
└── README.md ← Explication générale du projet
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
- `utils/` pour fonctions génériques (formatage, parsers)
|
||||||
|
|
||||||
|
- `config/` si tu charges des réglages depuis YAML/JSON
|
||||||
|
|
||||||
|
- `outputs/` pour stocker les tests ou réponses groupées (JSON/CSV)
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user