Recréer Guide-IA avec corrections HTTP et bon sub_url

2026-09-08 19:43:01 +02:00
parent 597b897f91
commit df78dcc755

156
Guide-IA.-.md Normal file

@@ -0,0 +1,156 @@
# Guide-IA
## Introduction
L'IA dans **pronote-sync** permet de générer des **synthèses automatiques** à partir des données récupérées depuis Pronote (cours, devoirs, notes, etc.). Cette fonctionnalité est **optionnelle** et **désactivée par défaut** (`AI_ENABLED=false`). Elle n'est pas requise pour la synchronisation CalDAV ou XMPP.
Pour une référence complète des variables de configuration, consultez le [tableau des variables dans la page Configuration](Configuration).
---
## Fournisseurs supportés
Le projet supporte trois types de fournisseurs IA :
- **`openai`** : API officielle d'OpenAI.
- **`litellm`** : Proxy LiteLLM, qui permet d'unifier plusieurs fournisseurs derrière une seule API compatible OpenAI.
- **`openai-compatible`** : Toute API compatible OpenAI (OpenRouter, Ollama, vLLM, etc.) avec une URL de base personnalisée.
---
## OpenAI
### Obtenir une clé API
1. Rendez-vous sur [platform.openai.com](https://platform.openai.com).
2. Connectez-vous ou créez un compte.
3. Allez dans **Dashboard****API keys**.
4. Cliquez sur **Create new secret key**.
5. Copiez la clé générée (elle commence par `sk-...`).
### Configuration
- **URL de base** : `https://api.openai.com/v1`
- **Modèles recommandés** : `gpt-4o`, `gpt-4o-mini`, `o3-mini`, etc.
### Exemple de configuration
```ini
AI_ENABLED=true
AI_PROVIDER=openai
AI_API_KEY=sk-votre-cle-api
AI_MODEL=gpt-4o-mini
```
---
## OpenRouter
OpenRouter est un service qui agrège plusieurs fournisseurs IA (OpenAI, Anthropic, DeepSeek, Meta, etc.) sous une seule API compatible OpenAI.
### Obtenir une clé API
1. Rendez-vous sur [openrouter.ai/keys](https://openrouter.ai/keys).
2. Connectez-vous ou créez un compte.
3. Cliquez sur **Create Key**.
4. Copiez la clé générée.
### Configuration
- **Fournisseur** : `openai-compatible`
- **URL de base** : `https://openrouter.ai/api/v1`
- **Modèles** : Format `fournisseur/modele`, par exemple :
- `openai/gpt-4o`
- `anthropic/claude-3.5-sonnet`
- `deepseek/deepseek-chat`
- `meta-llama/llama-3.3-70b-instruct`
### Exemple de configuration
```ini
AI_ENABLED=true
AI_PROVIDER=openai-compatible
AI_BASE_URL=https://openrouter.ai/api/v1
AI_API_KEY=votre-cle-openrouter
AI_MODEL=openai/gpt-4o-mini
AI_ALLOW_INSECURE_HTTP=false
```
---
## Ollama (local)
Ollama permet d'exécuter des modèles IA localement. **pronote-sync** peut s'y connecter via l'endpoint de compatibilité OpenAI.
### Prérequis
- Ollama installé et fonctionnel sur votre machine.
- Un modèle téléchargé (ex. `llama3.2`, `mistral`, `qwen2.5`).
### Configuration
- **URL de base** : `http://127.0.0.1:11434/v1` (endpoint de compatibilité OpenAI d'Ollama).
- **Clé API** : Ollama n'exige pas de clé API, mais la configuration attend une valeur non vide. Utilisez une valeur arbitraire comme `local-not-required`.
- **Modèles** : Utilisez le nom du modèle téléchargé (ex. `llama3.2`).
### Lister les modèles disponibles
```bash
ollama list
```
### Exemple de configuration
```ini
AI_ENABLED=true
AI_PROVIDER=openai-compatible
AI_BASE_URL=http://127.0.0.1:11434/v1
AI_API_KEY=local-not-required
AI_MODEL=llama3.2
AI_ALLOW_INSECURE_HTTP=true
```
---
## LiteLLM (proxy)
[LiteLLM](https://litellm.ai/) est un proxy open-source qui expose une API unifiée compatible OpenAI pour plusieurs fournisseurs (OpenAI, Anthropic, Azure, etc.).
### Configuration
- **Fournisseur** : `litellm`
- **URL de base** : Par défaut, `http://localhost:4000/v1` (si LiteLLM est exécuté localement).
- **Clé API** : Configurez une clé maîtresse dans le `config.yaml` de LiteLLM ou utilisez celle générée au démarrage.
### Exemple de configuration
```ini
AI_ENABLED=true
AI_PROVIDER=litellm
AI_BASE_URL=http://localhost:4000/v1
AI_API_KEY=sk-litellm-master-key
AI_MODEL=gpt-4o-mini
```
---
## Sécurité
### HTTPS obligatoire par défaut
- Par défaut, seules les URL en **HTTPS** sont acceptées pour `AI_BASE_URL`. Les URL en HTTP sont rejetées.
### Autoriser HTTP avec `AI_ALLOW_INSECURE_HTTP`
- Lorsque `AI_ALLOW_INSECURE_HTTP=true`, les URL en **HTTP sont acceptées pour n'importe quel hôte** (pas seulement localhost).
- ⚠️ **Avertissement** : Cette option désactive la protection HTTPS pour toutes les URL du provider `openai-compatible`. Ne l'utilisez que pour des connexions locales (ex. Ollama sur `127.0.0.1`) ou dans un environnement de confiance. En production, utilisez toujours HTTPS.
- Exemple : `http://127.0.0.1:11434/v1` (Ollama local).
### Clé API
- **Jamais dans l'URL** : Les credentials dans l'URL (ex. `user:pass@host`) sont **rejetés**.
- **Pas de paramètres sensibles dans la query string** : Les paramètres comme `?token` ou `?api_key=...` sont **rejetés**, même sans valeur.
- **Stockage sécurisé** : `AI_API_KEY` est stockée en `SecretStr` et masquée dans les logs.
### URL complète requise
- **Aucune manipulation automatique de `/v1`** : L'URL doit être **complète et correcte**. Par exemple, `https://openrouter.ai/api/v1` est valide, mais `https://openrouter.ai/api` ne le sera pas.
### Mode dégradé
- Si la configuration est **invalide** (URL malformée, clé manquante, etc.), la factory retourne `None` avec un **avertissement** (mode dégradé). Le pipeline fonctionne alors **sans IA**.
---
## Mode dégradé à l'exécution
Si l'IA échoue **pendant l'exécution** (erreur réseau, clé invalide, quota dépassé, etc.) :
- Le pipeline retourne un message **sans synthèse**.
- La synchronisation **CalDAV/XMPP reste fonctionnelle** et n'est pas affectée.
---
## Liens utiles
→ [Configuration](Configuration) — Tableau complet des variables IA.
→ [Sécurité](Sécurité) — Bonnes pratiques pour la gestion des secrets.