2025-03-24 22:19:57 +01:00

215 lines
5.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Guide Complet : Intégration des Agents LLM Dynamiques dans Cursor avec Cline
---
## Objectif
- Lancer des modèles localement (codellama, mistral, etc.)
- Créer des **agents dynamiques spécialisés** pour coder, expliquer, corriger
- Utiliser et configurer **Cline** pour interagir visuellement avec tes agents
---
## I. Prérequis
- Avoir installé **Cursor** : [https://cursor.so](https://cursor.so/)
- Avoir installé **Ollama** : [[https://ollama.com](https://ollama.com/))
- Avoir Python 3.10+ installé
[[Installation LLM dans Cursor]]
### Installer un modèle avec Ollama :
```bash
ollama pull codellama:13b-python
ollama pull mistral
```
Teste le bon fonctionnement :
```bash
ollama run mistral
```
---
## II. Intégrer Ollama à Cursor via `cursor-agent.json`
Crée ce fichier à la racine du projet :
```json
{
"name": "LLM Local Agent",
"entry": "main.py",
"llm": {
"provider": "custom",
"completion_url": "http://localhost:11434/api/generate",
"method": "POST",
"headers": { "Content-Type": "application/json" },
"input_key": "prompt",
"output_key": "response"
}
}
```
> Ce fichier connecte Cursor à ton modèle local via API HTTP.
---
## III. Cline dans Cursor : installation, configuration et usage
### Qu'est-ce que **Cline** ?
Cline est la **barre latérale interactive** dans Cursor. Elle te permet de :
- Créer des agents avec rôles personnalisés
- Interagir avec ton code sélectionné ou tout le fichier
- Voir la réponse du modèle directement à droite
- Ajouter des prompts, des messages système ou modifier des paramètres
### Comment lactiver ?
1. Sélectionne du code
2. Tape `//` pour activer un prompt (comme un commentaire)
3. Cline souvre automatiquement à droite
4. Tu peux :
- Choisir ton modèle (`cursor-agent.json` doit être actif)
- Envoyer un prompt
- Lire et copier la réponse
### Pourquoi cest utile ?
Cline est **idéal pour le développement assisté par LLM**, car tu peux :
- Corriger le code sélectionné
- Générer automatiquement du code ou des tests
- Interagir avec différents agents en parallèle
- Comparer les retours selon les rôles
---
## IV. Créer un agent dynamique personnalisé (main.py)
```python
from base_agent import BaseAgent
agent = BaseAgent("CodeExplainer", model="mistral")
agent.set_role("Tu es un assistant Python expert. Tu expliques de manière claire le fonctionnement dun code donné.")
prompt = input("Prompt utilisateur : ")
print(agent.process(prompt))
```
---
## V. Exemple de rôles dagents Cursor
```python
explainer = BaseAgent("Explainer", model="mistral")
optimizer = BaseAgent("Optimizer", model="codellama:13b-python")
refactor = BaseAgent("Refactor", model="codellama:13b-python")
explainer.set_role("Explique ce que fait le code avec précision.")
optimizer.set_role("Optimise ce code Python pour la performance.")
refactor.set_role("Refactore le code pour quil soit plus lisible.")
code = '''
def process(x): return [i*2 for i in x if i > 0]'''
print(explainer.process(code))
```
---
## VI. Support multi-machine : Agents locaux ou distants (serveur)
Tu peux travailler avec un **Ollama local sur ton PC principal** ou utiliser un **serveur distant** qui héberge un modèle (par ex. Mistral 7B déjà actif sur ton site).
### 1. Classe RemoteLLMInterface
```python
import requests
class RemoteLLMInterface:
def __init__(self, model, host="http://192.168.1.150:11434", **params):
self.model = model
self.api_url = f"{host}/api/generate"
self.params = params
def generate(self, prompt):
payload = {"model": self.model, "prompt": prompt, **self.params}
response = requests.post(self.api_url, json=payload)
return response.json().get("response", "")
```
### 2. Créer un agent distant :
```python
from remote_llm_interface import RemoteLLMInterface
class RemoteAgent:
def __init__(self, name, model="mistral", host="http://192.168.1.150:11434", **params):
self.name = name
self.interface = RemoteLLMInterface(model, host, **params)
self.system_prompt = ""
def set_role(self, prompt):
self.system_prompt = prompt.strip()
def process(self, user_input):
full_prompt = f"{self.system_prompt}\n\n{user_input}" if self.system_prompt else user_input
return self.interface.generate(full_prompt)
```
> Tu peux ainsi appeler le modèle Mistral 7B de ton site **depuis Cursor**, sans le réinstaller localement.
---
## VII. Changer dagent facilement (CLI rapide)
```python
from base_agent import BaseAgent
name = input("Nom de lagent : ")
model = input("Modèle Ollama (ex: mistral) : ")
role = input("Quel est le rôle de lagent ? : ")
prompt = input("Quel est le prompt ? : ")
agent = BaseAgent(name=name, model=model)
agent.set_role(role)
print(agent.process(prompt))
```
---
## VIII. Exemples d'agents à utiliser dans Cursor
|Nom Agent|Modèle|Rôle assigné|
|---|---|---|
|`Optimizer`|`codellama:13b-python`|Optimise le code|
|`Explainer`|`mistral`|Explique le code|
|`BugFinder`|`codellama:13b-python`|Trouve des erreurs|
|`DocGen`|`mistral`|Génère des docstrings|
|`Formatter`|`codellama`|Reformate proprement le code|
---
## IX. Bonnes pratiques avec Cursor et Cline
- Utilise `//` pour poser des questions précises à ton agent
- Crée plusieurs agents avec des rôles spécialisés : rapide à réutiliser
- Utilise des raccourcis clavier pour alterner entre agents dans Cline
- Sauvegarde tes rôles les plus utiles dans un fichier JSON ou via script
- Combine les agents dans une chaîne pour effectuer plusieurs actions à la suite
---
## Conclusion
Tu maîtrises maintenant :
- Linstallation dOllama et des modèles
- La configuration de Cursor et lutilisation de `cursor-agent.json`
- Linteraction avancée avec Cline (prompts, agents multiples, feedback instantané)
- La création dagents dynamiques **locaux ou distants**, selon ton architecture
[[LLM Cursor version2]]