mirror of
https://github.com/Ladebeze66/AI_agent.git
synced 2025-12-16 00:06:56 +01:00
180 lines
4.5 KiB
Markdown
180 lines
4.5 KiB
Markdown
# Système d'Agents Ollama
|
|
|
|
Ce projet fournit un framework pour créer et gérer des agents d'IA basés sur les modèles Ollama. Il permet d'utiliser facilement différents types de modèles (texte, code, vision, embeddings) et de paramétrer leur comportement.
|
|
|
|
## Fonctionnalités
|
|
|
|
- Utilisation de l'API Ollama pour interagir avec les modèles locaux
|
|
- Classes spécialisées pour différents types de modèles :
|
|
- Génération de texte (TextGenerationModel)
|
|
- Multimodal avec support d'images (MultiModalModel)
|
|
- Embeddings (EmbeddingModel)
|
|
- Système de gestion d'agents pour organiser plusieurs modèles
|
|
- Contrôle précis des paramètres de génération (température, top_p, top_k, etc.)
|
|
- Support du streaming pour des réponses progressives
|
|
- Support de l'API chat pour des conversations contextuelles
|
|
|
|
## Prérequis
|
|
|
|
- Python 3.8+
|
|
- [Ollama](https://ollama.ai/) installé et en cours d'exécution
|
|
- Modèles Ollama téléchargés (voir [ollama.ai/library](https://ollama.ai/library))
|
|
- Module `requests` de Python
|
|
|
|
## Installation
|
|
|
|
1. Clonez ce dépôt :
|
|
```
|
|
git clone <url-du-depot>
|
|
cd AIagent
|
|
```
|
|
|
|
2. Installez les dépendances :
|
|
```
|
|
pip install requests
|
|
```
|
|
|
|
3. Assurez-vous qu'Ollama est en cours d'exécution sur votre serveur.
|
|
|
|
## Structure du projet
|
|
|
|
```
|
|
AIagent/
|
|
├── src/
|
|
│ ├── ollama_models.py # Classes de base et spécialisées pour les modèles
|
|
│ └── exemple_usage.py # Exemples d'utilisation
|
|
└── README.md
|
|
```
|
|
|
|
## Utilisation
|
|
|
|
### Configuration de base
|
|
|
|
```python
|
|
from src.ollama_models import AgentSystem, create_text_agent
|
|
|
|
# Créer le système d'agents
|
|
system = AgentSystem()
|
|
|
|
# Ajouter un agent de génération de texte
|
|
create_text_agent(
|
|
agent_id="assistant",
|
|
model_name="llama3.3:70b-instruct-q8_0",
|
|
system=system,
|
|
temperature=0.7,
|
|
top_p=0.9
|
|
)
|
|
|
|
# Récupérer l'agent et l'utiliser
|
|
agent = system.get_agent("assistant")
|
|
response = agent.generate("Explique-moi le fonctionnement des grands modèles de langage.")
|
|
```
|
|
|
|
### Génération de texte
|
|
|
|
```python
|
|
# Créer directement un modèle sans système d'agents
|
|
from src.ollama_models import TextGenerationModel
|
|
|
|
model = TextGenerationModel(
|
|
model_name="llama3.3:70b-instruct-q8_0",
|
|
temperature=0.7
|
|
)
|
|
|
|
# Générer du texte
|
|
response = model.generate("Écris un poème sur l'intelligence artificielle.")
|
|
```
|
|
|
|
### Chat conversationnel
|
|
|
|
```python
|
|
# Utiliser l'API chat
|
|
messages = [
|
|
{"role": "system", "content": "Tu es un assistant IA serviable et concis."},
|
|
{"role": "user", "content": "Quels sont les avantages des modèles Ollama?"}
|
|
]
|
|
|
|
response = model.chat(messages)
|
|
|
|
# Continuer la conversation
|
|
messages.append({"role": "assistant", "content": response})
|
|
messages.append({"role": "user", "content": "Et quels sont les inconvénients?"})
|
|
|
|
response = model.chat(messages)
|
|
```
|
|
|
|
### Utilisation de modèles multimodaux
|
|
|
|
```python
|
|
from src.ollama_models import MultiModalModel
|
|
|
|
vision_model = MultiModalModel(
|
|
model_name="llava:34b-v1.6-fp16",
|
|
temperature=0.8
|
|
)
|
|
|
|
# Analyser une image
|
|
response = vision_model.analyze_image(
|
|
prompt="Décris cette image en détail.",
|
|
image_path="chemin/vers/image.jpg"
|
|
)
|
|
```
|
|
|
|
### Génération d'embeddings
|
|
|
|
```python
|
|
from src.ollama_models import EmbeddingModel
|
|
|
|
embedding_model = EmbeddingModel(
|
|
model_name="nomic-embed-text:137m-v1.5-fp16"
|
|
)
|
|
|
|
# Obtenir des embeddings
|
|
embeddings = embedding_model.get_embeddings([
|
|
"Premier texte à encoder",
|
|
"Second texte à encoder"
|
|
])
|
|
```
|
|
|
|
## Paramètres des modèles
|
|
|
|
Voici les principaux paramètres que vous pouvez ajuster :
|
|
|
|
- `temperature` (0.0-1.0) : Contrôle la créativité/aléatoire du modèle
|
|
- `top_p` (0.0-1.0) : Échantillonnage du nucleus, affecte la diversité
|
|
- `top_k` (1-100) : Limite les tokens considérés aux k plus probables
|
|
- `num_ctx` (int) : Taille du contexte en tokens
|
|
- `num_predict` (int) : Nombre maximum de tokens à générer
|
|
- `repeat_penalty` (float) : Pénalité pour les répétitions
|
|
|
|
Pour mettre à jour les paramètres d'un modèle :
|
|
|
|
```python
|
|
model.update_options(
|
|
temperature=0.2,
|
|
top_p=0.8,
|
|
num_predict=500
|
|
)
|
|
```
|
|
|
|
## Exemple complet
|
|
|
|
Consultez le fichier `src/exemple_usage.py` pour un exemple complet d'utilisation.
|
|
|
|
Pour exécuter l'exemple :
|
|
|
|
```
|
|
python src/exemple_usage.py
|
|
```
|
|
|
|
## Modèles supportés
|
|
|
|
Ce système prend en charge tous les modèles disponibles via Ollama. Voici quelques exemples :
|
|
|
|
- Modèles de texte : llama3.3, qwen2.5, etc.
|
|
- Modèles de vision : llava, llama3.2-vision, etc.
|
|
- Modèles d'embeddings : nomic-embed-text, etc.
|
|
|
|
## Licence
|
|
|
|
[MIT](LICENSE) |