mistral_translator 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +44 -0
  3. data/CONTRIBUTING.md +70 -0
  4. data/LICENSE.txt +6 -6
  5. data/README.md +212 -119
  6. data/README_TESTING.md +33 -0
  7. data/SECURITY.md +157 -0
  8. data/docs/.nojekyll +2 -0
  9. data/docs/404.html +30 -0
  10. data/docs/README.md +153 -0
  11. data/docs/advanced-usage/batch-processing.md +158 -0
  12. data/docs/advanced-usage/concurrent-async.md +270 -0
  13. data/docs/advanced-usage/error-handling.md +106 -0
  14. data/docs/advanced-usage/monitoring.md +133 -0
  15. data/docs/advanced-usage/summarization.md +86 -0
  16. data/docs/advanced-usage/translations.md +141 -0
  17. data/docs/api-reference/callbacks.md +231 -0
  18. data/docs/api-reference/configuration.md +74 -0
  19. data/docs/api-reference/errors.md +673 -0
  20. data/docs/api-reference/methods.md +539 -0
  21. data/docs/getting-started.md +179 -0
  22. data/docs/index.html +27 -0
  23. data/docs/installation.md +142 -0
  24. data/docs/migration-0.1.0-to-0.2.0.md +61 -0
  25. data/docs/rails-integration/adapters.md +84 -0
  26. data/docs/rails-integration/controllers.md +107 -0
  27. data/docs/rails-integration/jobs.md +97 -0
  28. data/docs/rails-integration/setup.md +339 -0
  29. data/examples/basic_usage.rb +129 -102
  30. data/examples/batch-job.rb +511 -0
  31. data/examples/monitoring-setup.rb +499 -0
  32. data/examples/rails-model.rb +399 -0
  33. data/lib/mistral_translator/adapters.rb +261 -0
  34. data/lib/mistral_translator/client.rb +103 -100
  35. data/lib/mistral_translator/client_helpers.rb +191 -0
  36. data/lib/mistral_translator/configuration.rb +191 -1
  37. data/lib/mistral_translator/errors.rb +16 -0
  38. data/lib/mistral_translator/helpers.rb +292 -0
  39. data/lib/mistral_translator/helpers_extensions.rb +150 -0
  40. data/lib/mistral_translator/levenshtein_helpers.rb +40 -0
  41. data/lib/mistral_translator/logger.rb +39 -8
  42. data/lib/mistral_translator/prompt_builder.rb +93 -41
  43. data/lib/mistral_translator/prompt_helpers.rb +83 -0
  44. data/lib/mistral_translator/prompt_metadata_helpers.rb +42 -0
  45. data/lib/mistral_translator/response_parser.rb +194 -23
  46. data/lib/mistral_translator/security.rb +72 -0
  47. data/lib/mistral_translator/summarizer.rb +41 -2
  48. data/lib/mistral_translator/translator.rb +174 -98
  49. data/lib/mistral_translator/translator_helpers.rb +268 -0
  50. data/lib/mistral_translator/version.rb +1 -1
  51. data/lib/mistral_translator.rb +51 -25
  52. metadata +55 -3
data/SECURITY.md ADDED
@@ -0,0 +1,157 @@
1
+ # Sécurité - MistralTranslator
2
+
3
+ ## 🔒 Améliorations de sécurité implémentées
4
+
5
+ ### 1. Validation des entrées utilisateur
6
+
7
+ #### Validation basique (par défaut)
8
+
9
+ - **Longueur des textes** : Limite à 50 000 caractères maximum
10
+ - **Textes vides** : Acceptés et retournés comme chaîne vide (cas d'usage légitime)
11
+ - **Validation des batches** : Maximum 20 textes par batch
12
+ - **Validation des paramètres** : Vérification des types et valeurs
13
+
14
+ #### Protection contre les attaques courantes
15
+
16
+ - **Injection de code** : Détection des patterns dangereux
17
+ - **Scripts malveillants** : Filtrage des balises HTML/JavaScript
18
+ - **Injection SQL** : Détection des patterns SQL malveillants
19
+ - **Traversal de chemins** : Protection contre les accès non autorisés
20
+
21
+ ### 2. Rate Limiting côté client
22
+
23
+ #### Fonctionnalités
24
+
25
+ - **Limite par défaut** : 50 requêtes par minute
26
+ - **Configuration flexible** : Limites personnalisables
27
+ - **Thread-safe** : Protection contre les conditions de course
28
+ - **Attente intelligente** : Délai automatique quand la limite est atteinte
29
+
30
+ #### Configuration
31
+
32
+ ```ruby
33
+ # Via variables d'environnement
34
+ MISTRAL_RATE_LIMIT_MAX_REQUESTS=100
35
+ MISTRAL_RATE_LIMIT_WINDOW=60
36
+
37
+ # Via code
38
+ rate_limiter = MistralTranslator::Security::BasicRateLimiter.new(
39
+ max_requests: 100,
40
+ window_seconds: 60
41
+ )
42
+ ```
43
+
44
+ ### 3. Gestion sécurisée des erreurs
45
+
46
+ #### Nouvelles exceptions
47
+
48
+ - `SecurityError` : Violations de sécurité détectées
49
+ - `RateLimitExceededError` : Limite de taux dépassée
50
+
51
+ #### Messages d'erreur sécurisés
52
+
53
+ - Aucune exposition d'informations sensibles
54
+ - Messages d'erreur génériques pour éviter les fuites
55
+
56
+ ### 4. Optimisation de la taille
57
+
58
+ #### Réduction significative
59
+
60
+ - **Avant** : ~4000+ lignes avec validation complète
61
+ - **Après** : 3197 lignes avec sécurité essentielle
62
+ - **Gain** : ~20% de réduction de taille
63
+
64
+ #### Architecture modulaire
65
+
66
+ - Module de sécurité optionnel et léger
67
+ - Validation basique par défaut
68
+ - Possibilité d'extension future
69
+
70
+ ## 🛡️ Utilisation sécurisée
71
+
72
+ ### Configuration recommandée
73
+
74
+ ```ruby
75
+ MistralTranslator.configure do |config|
76
+ config.api_key = ENV['MISTRAL_API_KEY']
77
+ config.enable_metrics = true
78
+
79
+ # Callbacks de sécurité
80
+ config.on_translation_error = lambda do |from, to, error, attempt, timestamp|
81
+ Rails.logger.error "[Security] Translation failed: #{error.class.name}"
82
+ end
83
+ end
84
+ ```
85
+
86
+ ### Cas d'usage légitimes
87
+
88
+ - **Textes vides** : Acceptés automatiquement (retournent une chaîne vide)
89
+ - **Même langue source/cible** : Retourne le texte original sans appel API
90
+ - **Validation permissive** : Focus sur la sécurité sans bloquer l'usage normal
91
+
92
+ ### Bonnes pratiques
93
+
94
+ 1. **Validation côté client** : Toujours valider les entrées avant l'envoi
95
+ 2. **Gestion des erreurs** : Capturer et logger les erreurs de sécurité
96
+ 3. **Monitoring** : Surveiller les tentatives de rate limiting
97
+ 4. **Mise à jour** : Maintenir la gem à jour pour les dernières corrections
98
+
99
+ ## 🔍 Tests de sécurité
100
+
101
+ ### Couverture des tests
102
+
103
+ - Validation des entrées malveillantes
104
+ - Tests de rate limiting
105
+ - Vérification de la thread-safety
106
+ - Tests d'encodage et de format
107
+
108
+ ### Exécution des tests
109
+
110
+ ```bash
111
+ # Tests de sécurité uniquement
112
+ bundle exec rspec spec/mistral_translator/security_spec.rb
113
+
114
+ # Tests de sécurité existants
115
+ bundle exec rspec spec/mistral_translator/security_spec.rb
116
+ ```
117
+
118
+ ## 📊 Métriques de sécurité
119
+
120
+ ### Indicateurs surveillés
121
+
122
+ - Nombre de requêtes bloquées par validation
123
+ - Fréquence des rate limits
124
+ - Types d'erreurs de sécurité
125
+ - Temps de réponse moyen
126
+
127
+ ### Accès aux métriques
128
+
129
+ ```ruby
130
+ # Métriques globales
131
+ MistralTranslator.metrics
132
+
133
+ # Réinitialisation
134
+ MistralTranslator.reset_metrics!
135
+ ```
136
+
137
+ ## 🚨 Signaler des vulnérabilités
138
+
139
+ Si vous découvrez une vulnérabilité de sécurité :
140
+
141
+ 1. **Ne pas** ouvrir d'issue publique
142
+ 2. Envoyer un email à : security@mistral-translator.dev
143
+ 3. Inclure : description, étapes de reproduction, impact
144
+
145
+ ## 📝 Changelog de sécurité
146
+
147
+ ### Version 0.2.0
148
+
149
+ - ✅ Validation basique des entrées
150
+ - ✅ Rate limiting côté client
151
+ - ✅ Nouvelles exceptions de sécurité
152
+ - ✅ Optimisation de la taille de la gem
153
+ - ✅ Tests de sécurité complets
154
+
155
+ ---
156
+
157
+ _Cette documentation est mise à jour à chaque amélioration de sécurité._
data/docs/.nojekyll ADDED
@@ -0,0 +1,2 @@
1
+
2
+
data/docs/404.html ADDED
@@ -0,0 +1,30 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <title>404 - MistralTranslator Docs</title>
6
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
7
+ <meta
8
+ name="description"
9
+ content="Page non trouvée - MistralTranslator documentation"
10
+ />
11
+ <meta
12
+ name="viewport"
13
+ content="width=device-width, initial-scale=1.0, minimum-scale=1.0"
14
+ />
15
+ <link
16
+ rel="stylesheet"
17
+ href="//cdn.jsdelivr.net/npm/docsify@4/lib/themes/vue.css"
18
+ />
19
+ </head>
20
+ <body>
21
+ <div id="app"></div>
22
+ <script>
23
+ window.$docsify = {
24
+ name: "MistralTranslator",
25
+ repo: "peyochanchan/mistral_translator",
26
+ };
27
+ </script>
28
+ <script src="//cdn.jsdelivr.net/npm/docsify@4"></script>
29
+ </body>
30
+ </html>
data/docs/README.md ADDED
@@ -0,0 +1,153 @@
1
+ > **Navigation :** [🏠 Home](README.md) • [📖 API Reference](api-reference/methods.md) • [⚡ Advanced Usage](advanced-usage/translations.md) • [🛤️ Rails Integration](rails-integration/setup.md)
2
+
3
+ ---
4
+
5
+ # Documentation MistralTranslator
6
+
7
+ Bienvenue dans la documentation complète de **MistralTranslator**, une gem Ruby puissante pour la traduction et la synthèse de texte utilisant l'API Mistral AI.
8
+
9
+ ## 🚀 Démarrage Rapide
10
+
11
+ ```ruby
12
+ # Installation
13
+ gem 'mistral_translator'
14
+
15
+ # Configuration
16
+ MistralTranslator.configure { |c| c.api_key = ENV['MISTRAL_API_KEY'] }
17
+
18
+ # Usage
19
+ result = MistralTranslator.translate("Bonjour le monde", from: "fr", to: "en")
20
+ # => "Hello world"
21
+ ```
22
+
23
+ ## 📚 Guide de Documentation
24
+
25
+ ### 🎯 Pour Commencer
26
+
27
+ | Fichier | Description | Niveau |
28
+ | ------------------------------------------------------ | ----------------------------------------------- | -------- |
29
+ | [Installation](installation.md) | Installation de la gem et configuration de base | Débutant |
30
+ | [Guide de Démarrage](getting-started.md) | Premiers pas avec exemples simples | Débutant |
31
+ | [Exemples de Base](../examples/basic_usage.rb) | Code commenté pour débuter | Débutant |
32
+ | [Migration 0.1.0 → 0.2.0](migration-0.1.0-to-0.2.0.md) | Changements clés et guide de migration | Tous |
33
+
34
+ ### ⚡ Fonctionnalités Avancées
35
+
36
+ | Fichier | Description | Contenu Principal |
37
+ | -------------------------------------------------------- | ---------------------------------------------- | ------------------------------------------------- |
38
+ | [Traductions Avancées](advanced-usage/translations.md) | Contexte, glossaires, HTML, auto-détection | `translate_with_confidence()`, `translate_auto()` |
39
+ | [Traitement par Lot](advanced-usage/batch-processing.md) | Optimisation batch, multi-langues, progression | `translate_batch()`, `translate_to_multiple()` |
40
+ | [Résumés Intelligents](advanced-usage/summarization.md) | Multi-niveaux, multi-langues, Rails | `summarize()`, `summarize_tiered()` |
41
+ | [Gestion des Erreurs](advanced-usage/error-handling.md) | Retry, circuit breaker, fallback strategies | Patterns de robustesse |
42
+ | [Monitoring](advanced-usage/monitoring.md) | Métriques, dashboard, alertes | Analytics et observabilité |
43
+
44
+ ### 🛤️ Intégration Rails
45
+
46
+ | Fichier | Description | Gems Supportées |
47
+ | ------------------------------------------------------- | --------------------------------------- | ------------------------- |
48
+ | [Configuration Rails](rails-integration/setup.md) | Initializers, environnements, callbacks | Rails 7+ |
49
+ | [Adaptateurs de Modèles](rails-integration/adapters.md) | Intégration transparente avec gems I18n | Mobility, Globalize, I18n |
50
+ | [Jobs Asynchrones](rails-integration/jobs.md) | Traduction en arrière-plan | Sidekiq, ActiveJob |
51
+ | [Controllers & API](rails-integration/controllers.md) | Endpoints, dashboard admin | REST API, Admin UI |
52
+
53
+ ### 📖 Référence API
54
+
55
+ | Fichier | Description | Usage |
56
+ | ----------------------------------------------- | ----------------------------------- | ----------------------------- |
57
+ | [Configuration](api-reference/configuration.md) | Toutes les options de configuration | `MistralTranslator.configure` |
58
+ | [Méthodes](api-reference/methods.md) | Documentation complète des méthodes | API publique |
59
+ | [Erreurs](api-reference/errors.md) | Types d'erreurs et codes de gestion | `rescue` patterns |
60
+ | [Callbacks](api-reference/callbacks.md) | Événements et hooks personnalisés | Monitoring custom |
61
+
62
+ ### 💻 Exemples Pratiques
63
+
64
+ | Fichier | Description | Cas d'Usage |
65
+ | --------------------------------------------------- | --------------------------------- | --------------- |
66
+ | [Usage de Base](../examples/basic_usage.rb) | Script simple avec commentaires | Premier projet |
67
+ | [Modèle Rails](../examples/rails-model.rb) | Modèle complet avec traductions | App Rails |
68
+ | [Job de Traitement](../examples/batch-job.rb) | Job Sidekiq pour batch | Production |
69
+ | [Setup Monitoring](../examples/monitoring-setup.rb) | Configuration complète monitoring | Ops & Analytics |
70
+
71
+ ---
72
+
73
+ ## 🎯 Cas d'Usage Principaux
74
+
75
+ ### 🌐 **Applications Multilingues**
76
+
77
+ - E-commerce international
78
+ - Sites web multilingues
79
+ - Applications SaaS globales
80
+ - Documentation technique
81
+
82
+ ### 📝 **Traitement de Contenu**
83
+
84
+ - Résumés automatiques d'articles
85
+ - Synthèse de rapports
86
+ - Newsletter multilingues
87
+ - Support client automatisé
88
+
89
+ ### 🔧 **Intégration Système**
90
+
91
+ - CMS multilingues
92
+ - APIs de traduction
93
+ - Workflows de contenu
94
+ - Automation marketing
95
+
96
+ ---
97
+
98
+ ## 🏃‍♂️ Parcours Recommandés
99
+
100
+ ### **👶 Débutant - Premiers Pas**
101
+
102
+ 1. [Installation](installation.md) - Installer et configurer
103
+ 2. [Guide de Démarrage](getting-started.md) - Premiers exemples
104
+ 3. [Exemples de Base](../examples/basic_usage.rb) - Code pratique
105
+
106
+ ### **⚡ Développeur Rails**
107
+
108
+ 1. [Configuration Rails](rails-integration/setup.md) - Setup Rails
109
+ 2. [Adaptateurs](rails-integration/adapters.md) - Mobility/Globalize
110
+ 3. [Modèle Rails](../examples/rails-model.rb) - Exemple complet
111
+
112
+ ### **🚀 Usage Production**
113
+
114
+ 1. [Gestion des Erreurs](advanced-usage/error-handling.md) - Robustesse
115
+ 2. [Monitoring](advanced-usage/monitoring.md) - Observabilité
116
+ 3. [Jobs Asynchrones](rails-integration/jobs.md) - Scalabilité
117
+
118
+ ### **📊 Analytics & Ops**
119
+
120
+ 1. [Monitoring](advanced-usage/monitoring.md) - Métriques
121
+ 2. [Setup Monitoring](../examples/monitoring-setup.rb) - Configuration
122
+ 3. [API Référence](api-reference/configuration.md) - Tuning avancé
123
+
124
+ ---
125
+
126
+ ## 🆘 Aide et Support
127
+
128
+ - **🐛 Problème ?** → Consultez [Gestion des Erreurs](advanced-usage/error-handling.md)
129
+ - **⚙️ Configuration ?** → Voir [API Configuration](api-reference/configuration.md)
130
+ - **🛤️ Rails ?** → Section [Intégration Rails](rails-integration/setup.md)
131
+ - **📈 Performance ?** → Guide [Monitoring](advanced-usage/monitoring.md)
132
+
133
+ ## 🎯 Navigation Rapide
134
+
135
+ **Recherche par fonctionnalité :**
136
+
137
+ - **Traduction simple** → [Getting Started](getting-started.md#traduction-simple)
138
+ - **Traduction HTML** → [Traductions Avancées](advanced-usage/translations.md#html-preservation)
139
+ - **Résumés** → [Résumés Intelligents](advanced-usage/summarization.md)
140
+ - **Batch processing** → [Traitement par Lot](advanced-usage/batch-processing.md)
141
+ - **Intégration Mobility** → [Adaptateurs](rails-integration/adapters.md#mobility)
142
+ - **Jobs Sidekiq** → [Jobs Asynchrones](rails-integration/jobs.md#sidekiq)
143
+ - **Dashboard admin** → [Controllers](rails-integration/controllers.md#dashboard)
144
+
145
+ **Par niveau de complexité :**
146
+
147
+ - 🟢 **Facile** : Installation, Getting Started, Exemples
148
+ - 🟡 **Moyen** : Traductions Avancées, Rails Setup, Jobs
149
+ - 🔴 **Avancé** : Error Handling, Monitoring, API Référence
150
+
151
+ ---
152
+
153
+ _📝 Cette documentation est maintenue et mise à jour régulièrement. Pour des suggestions d'amélioration, n'hésitez pas à contribuer !_
@@ -0,0 +1,158 @@
1
+ > **Navigation :** [🏠 Home](README.md) • [📖 API Reference](api-reference/methods.md) • [⚡ Advanced Usage](advanced-usage/translations.md) • [🛤️ Rails Integration](rails-integration/setup.md)
2
+
3
+ ---
4
+
5
+ # Traitement par Lot (Batch)
6
+
7
+ Optimisez vos traductions avec le traitement par lot et les traductions multiples.
8
+
9
+ ## 📦 Batch Basique
10
+
11
+ ```ruby
12
+ texts = ["Bonjour", "Comment ça va ?", "Au revoir"]
13
+
14
+ translator = MistralTranslator::Translator.new
15
+ results = translator.translate_batch(texts, from: "fr", to: "en")
16
+
17
+ results.each { |index, translation| puts "#{index}: #{translation}" }
18
+ # => 0: Hello
19
+ # => 1: How are you?
20
+ # => 2: Goodbye
21
+ ```
22
+
23
+ ## 🌍 Multi-langues
24
+
25
+ ```ruby
26
+ # Vers plusieurs langues simultanément
27
+ results = translator.translate_to_multiple(
28
+ "Bienvenue",
29
+ from: "fr",
30
+ to: ["en", "es", "de", "it"],
31
+ use_batch: true # Optimisation
32
+ )
33
+ # => {"en" => "Welcome", "es" => "Bienvenido", ...}
34
+ ```
35
+
36
+ ## ⚡ Avec Gestion d'Erreurs
37
+
38
+ ```ruby
39
+ # Fallback automatique en cas d'échec
40
+ results = MistralTranslator::Helpers.translate_batch_with_fallback(
41
+ texts,
42
+ from: "fr",
43
+ to: "en",
44
+ fallback_strategy: :individual # Retry individuellement
45
+ )
46
+
47
+ results.each do |index, result|
48
+ if result.is_a?(Hash) && result[:error]
49
+ puts "❌ Erreur #{index}: #{result[:error]}"
50
+ else
51
+ puts "✅ #{index}: #{result}"
52
+ end
53
+ end
54
+ ```
55
+
56
+ ## 📊 Avec Progression
57
+
58
+ ```ruby
59
+ # Pour gros volumes
60
+ MistralTranslator::Helpers.translate_with_progress(
61
+ large_texts.each_with_index.to_h,
62
+ from: "fr",
63
+ to: "en"
64
+ ) do |current, total, key, result|
65
+ progress = (current.to_f / total * 100).round(1)
66
+ puts "📈 [#{progress}%] #{key}"
67
+ end
68
+ ```
69
+
70
+ ## 🚦 Rate Limiting
71
+
72
+ ```ruby
73
+ # Délai intelligent entre batches
74
+ def process_large_batch(texts, batch_size: 10)
75
+ texts.each_slice(batch_size).with_index do |batch, i|
76
+ results = translator.translate_batch(batch, from: "fr", to: "en")
77
+
78
+ # Pause entre batches (sauf le dernier)
79
+ sleep(2) unless i == (texts.size / batch_size.to_f).ceil - 1
80
+ end
81
+ end
82
+ ```
83
+
84
+ ## 💾 Avec Cache
85
+
86
+ ```ruby
87
+ def cached_batch_translate(texts, from:, to:)
88
+ results = []
89
+ to_translate = []
90
+
91
+ # Vérifier le cache
92
+ texts.each_with_index do |text, index|
93
+ cache_key = "translation:#{Digest::MD5.hexdigest(text)}:#{from}:#{to}"
94
+ cached = Rails.cache.read(cache_key)
95
+
96
+ if cached
97
+ results[index] = cached
98
+ else
99
+ to_translate << { text: text, index: index, cache_key: cache_key }
100
+ end
101
+ end
102
+
103
+ # Traduire seulement ce qui n'est pas en cache
104
+ unless to_translate.empty?
105
+ fresh_results = translator.translate_batch(
106
+ to_translate.map { |item| item[:text] },
107
+ from: from, to: to
108
+ )
109
+
110
+ # Sauver en cache
111
+ fresh_results.each do |batch_index, translation|
112
+ original_index = to_translate[batch_index][:index]
113
+ cache_key = to_translate[batch_index][:cache_key]
114
+
115
+ Rails.cache.write(cache_key, translation, expires_in: 24.hours)
116
+ results[original_index] = translation
117
+ end
118
+ end
119
+
120
+ results
121
+ end
122
+ ```
123
+
124
+ ## 📈 Configuration Batch
125
+
126
+ ```ruby
127
+ MistralTranslator.configure do |config|
128
+ config.retry_delays = [1, 3, 6] # Plus rapide pour batch
129
+
130
+ config.on_batch_complete = ->(size, duration, success, errors) {
131
+ rate = (success.to_f / size * 100).round(1)
132
+ puts "📊 Batch: #{success}/#{size} (#{rate}%) en #{duration.round(2)}s"
133
+ }
134
+ end
135
+ ```
136
+
137
+ ## 🎯 Patterns Recommandés
138
+
139
+ **Petits volumes (< 50 textes) :**
140
+
141
+ - Batch simple sans optimisation
142
+
143
+ **Moyens volumes (50-500 textes) :**
144
+
145
+ - Batch avec cache + rate limiting
146
+
147
+ **Gros volumes (> 500 textes) :**
148
+
149
+ - Jobs asynchrones + progression + cache
150
+
151
+ **Multi-langues :**
152
+
153
+ - `use_batch: true` pour optimisation API
154
+
155
+ ---
156
+
157
+ **Advanced Usage Navigation:**
158
+ [← Translations](advanced-usage/translations.md) | [Batch Processing](advanced-usage/batch-processing.md) | [Error Handling](advanced-usage/error-handling.md) | [Monitoring](advanced-usage/monitoring.md) | [Summarization](advanced-usage/summarization.md) →