# Guide : Intégration et Utilisation des LLM avec Agents Dynamiques dans Obsidian

---

## Objectif du guide

- Installer et configurer les LLM localement avec Ollama
- Intégrer ces modèles dans Obsidian grâce à des agents dynamiques
- Utiliser tes notes comme base de données intelligente
- Créer plusieurs agents spécialisés pour enrichir ton workflow de prise de notes

Le tout en restant simple, modulaire, réutilisable.

---

## I. Prérequis

### 1. Systèmes compatibles

- Windows 10/11 (avec WSL recommandé) ou Linux

### 2. Logiciels à installer

- [Ollama](https://ollama.com/) (pour exécuter les LLM en local)
- Python 3.10+
- Obsidian (avec le plugin "Templater" ou "Custom Plugins" activé)

---

## II. Installer et tester les modèles LLM avec Ollama

### 1. Installation d’Ollama

```bash
# Linux/WSL
curl -fsSL https://ollama.com/install.sh | sh

# macOS (brew)
brew install ollama
```

### 2. Lancer un modèle (exemple : mistral)

```bash
ollama run mistral
```

Pour télécharger un autre modèle :

```bash
ollama pull codellama:13b-python
```

Liste des modèles : [https://ollama.com/library](https://ollama.com/library)

### 3. Vérification API locale

```bash
curl http://localhost:11434
```

---

## III. Créer des agents dynamiques spécialisés pour Obsidian

### Structure minimale d’un agent

```python
from base_agent import BaseAgent

agent = BaseAgent("RestructurationObsidian", model="mistral")
agent.set_role("Tu restructures les notes Markdown pour les rendre lisibles et organisées.")

note = "cette note est en désordre. elle n’a pas de titres, ni de sections."
print(agent.process(note))
```

### Exemples d’agents à créer

|Nom de l’agent|Rôle assigné|
|---|---|
|AnalyseurStructure|Analyse la structure de la note|
|CorrecteurMarkdown|Corrige orthographe + mise en page|
|SuggestionTagsLiens|Propose des tags internes et liens|
|OptimiseurObsidian|Propose des améliorations visuelles (CSS/templating)|
|ClasseurNotes|Classe la note dans un dossier pertinent|

### Organisation recommandée dans Obsidian

- Dossier `scripts/agents/`
- Fichier `agents_runner.py` exécutable via script shell ou Templater

```bash
python agents/agents_runner.py "notes/ma_note.md"
```

### Exemple via plugin Templater

Crée un template qui appelle un script :

```markdown
<% tp.system.run('python3 agents/agents_runner.py "' + tp.file.path(true) + '"') %>
```

---

## IV. Exploitation avancée avec AgentChain

Tu peux enchaîner plusieurs agents pour automatiser un traitement complet :

```python
from agent_chain import AgentChain

a1 = BaseAgent("analyse", model="mistral")
a2 = BaseAgent("structure", model="mistral")
a3 = BaseAgent("correction", model="mistral")

a1.set_role("Analyse le contenu de la note.")
a2.set_role("Restructure la note.")
a3.set_role("Corrige l’orthographe.")

chain = AgentChain(chain_mode=True)
chain.add(a1)
chain.add(a2)
chain.add(a3)

with open("notes/ma_note.md") as f:
    print(chain.run(f.read()))
```

---

## V. Astuces pratiques

- Utilise le tag YAML `#traitement_ai` dans tes notes à traiter automatiquement
- Stocke les retours d’agent dans un champ frontmatter YAML ou un fichier à part
- Utilise le modèle `phi` pour les agents rapides, `mistral` pour polyvalence, `codellama` uniquement si tu traites du code Markdown

---

## VI. À suivre

Tu peux combiner cette configuration avec un système de base de données vectorielle RAG plus tard pour l’indexation des notes.
