Last modified by Aurelie Bertrand on 2025/12/18 14:51

Hide last authors
Aurelie Bertrand 5.1 1 {{toc/}}
2
3 ----
4
Aurelie Bertrand 6.1 5 (% class="wikigeneratedid" %)
6 Ce document présente l’installation et la configuration de l’agent DigDash et de ses principaux composants.
7
Aurelie Bertrand 16.1 8 (% class="wikigeneratedid" %)
Aurelie Bertrand 38.1 9 Il faudra ensuite installer configurer le chatbot. Seul OpenWebUI est supporté pour l'instant. Consultez la page [[Guide d'installation d'Open Web UI>>doc:Digdash.Agent.OpenWebUI&DD.WebHome]] pour plus de détails.
Aurelie Bertrand 16.1 10
Aurelie Bertrand 1.1 11 = Installation du serveur Agent =
12
13 == Prérequis ==
14
15 * Un conteneur de servlets compatible Jakarta EE 9+, tel que Tomcat 10 ou Jetty 11
16 * Java 17
17
Aurelie Bertrand 10.1 18 Décompressez l’archive d’installation de DigDash Tomcat 10 et placez le fichier /add-ons/agent/digdash_agent.war dans le dossier webapps de Tomcat.
Aurelie Bertrand 1.1 19
Aurelie Bertrand 6.1 20 == Création des logs ==
Aurelie Bertrand 1.1 21
Aurelie Bertrand 18.2 22 1. (((
23 Créez un fichier log4j2_agent.properties dans /etc/digdash avec la configuration suivante :
Aurelie Bertrand 1.1 24
Aurelie Bertrand 10.1 25 {{code language="shell"}}
Aurelie Bertrand 1.1 26 ###################################
27 # Log4j2 Status
28 ###################################
29 status=error
30 name=PropertiesConfig
31 ###################################
32 # Rolling File Appender
33 ###################################
34 appender.rolling.type=RollingFile
35 appender.rolling.name=RollingFile
Aurelie Bertrand 10.1 36 appender.rolling.fileName = /var/log/digdash/digdash_agent.log
37 appender.rolling.filePattern = /var/log/digdash/digdash_agent-%i.log.gz
Aurelie Bertrand 1.1 38 appender.rolling.layout.type=PatternLayout
Aurelie Bertrand 10.1 39 appender.rolling.layout.pattern = %d %-5p [agent] [%t] (%F:%L) - %m%n
Aurelie Bertrand 1.1 40 appender.rolling.policies.type=Policies
41 appender.rolling.policies.size.type=SizeBasedTriggeringPolicy
42 appender.rolling.policies.size.size=200MB
43 # Rollover strategy
44 appender.rolling.strategy.type=DefaultRolloverStrategy
45 appender.rolling.strategy.max=15
46 ###################################
47 # Root Logger
48 ###################################
49 rootLogger.level=info
50 rootLogger.appenderRefs=rolling
51 rootLogger.appenderRef.rolling.ref=RollingFile
52 ###################################
53 # Application-specific Logger
54 ###################################
55 logger.app.name=com.digdash
56 logger.app.level=info
57 logger.app.additivity=false
58 logger.app.appenderRefs=rolling
59 logger.app.appenderRef.rolling.ref=RollingFile
60 {{/code}}
Aurelie Bertrand 18.2 61 )))
Aurelie Bertrand 1.1 62
Aurelie Bertrand 18.1 63 Cette configuration stocke les logs dans le fichier /var/log/digdash/digdash_agent.log et archive les anciens logs dans le dossier /var/log/digdash/. Vous pouvez ajuster la propriété //logger.app.level //pour modifier le niveau de verbosité des logs de l’application web.
Aurelie Bertrand 1.1 64
Aurelie Bertrand 6.1 65 (% start="2" %)
Aurelie Bertrand 18.2 66 1. (((
67 Ajoutez la ligne suivante dans /etc/digdash/digdash.properties pour que DigDash puisse lire la configuration des logs :
Aurelie Bertrand 1.1 68
Aurelie Bertrand 2.2 69 {{code}}
70 agent.ddlog4j.properties.file=/etc/digdash/log4j2_agent.properties
71 {{/code}}
Aurelie Bertrand 18.2 72 )))
Aurelie Bertrand 1.1 73
74 == Configuration LLM ==
75
76 L’application web prend en charge les modèles d’OVH Cloud. Il est recommandé d’utiliser le modèle "Llama-3.3 70b".
77 D’autres modèles sont disponibles dans le catalogue OVH : [[https:~~/~~/endpoints.ai.cloud.ovh.net/catalog>>url:https://endpoints.ai.cloud.ovh.net/catalog]].
78
Aurelie Bertrand 18.2 79 1. Ajoutez l’URL de l’API LLM dans /etc/digdash/digdash.properties :{{code}}agent.llm.baseurl=https://llama-3-3-70b-instruct.endpoints.kepler.ai.cloud.ovh.net/api/openai_compat/v1{{/code}}
Aurelie Bertrand 1.1 80 1. Générez une clé API depuis OVH Cloud en suivant ce guide : [[https:~~/~~/help.ovhcloud.com/csm/en-public-cloud-ai-endpoints-getting-started?id=kb_article_view&sysparm_article=KB0065403>>url:https://help.ovhcloud.com/csm/en-public-cloud-ai-endpoints-getting-started?id=kb_article_view&sysparm_article=KB0065403]]
Aurelie Bertrand 18.2 81 1. (((
82 Ajoutez votre clé API dans /etc/digdash/digdash.properties :
Aurelie Bertrand 1.1 83
Aurelie Bertrand 2.2 84 {{code}}
85 agent.llm.apikey=<API_KEY>
86 {{/code}}
Aurelie Bertrand 18.2 87 )))
Aurelie Bertrand 1.1 88
89 == Configuration de l’application ==
90
Aurelie Bertrand 40.1 91 (((
92 * Configurez le serveur backend pour correspondre à votre environnement dans /etc/digdash/digdash.properties :
Aurelie Bertrand 1.1 93
Aurelie Bertrand 3.1 94 {{code}}
Aurelie Bertrand 24.1 95 agent.digdashserver.baseurl=https://<digdash.url.externe>
96 agent.digdashserver.domain=ddenterpriseapi
Aurelie Bertrand 3.1 97 {{/code}}
Aurelie Bertrand 1.1 98
Aurelie Bertrand 40.1 99 (% style="font-size: 11pt; font-variant: normal; white-space: pre-wrap; font-family: Arial, sans-serif; color: rgb(0, 0, 0); font-weight: 400; font-style: normal; text-decoration: none" %)L'url du serveur Digdash corresponde à l'adresse publique d'accès à Digdash.
100
Aurelie Bertrand 1.1 101 L’application web concaténera ces deux propriétés pour former l’URL complète du serveur backend (ex. : [[http:~~/~~/localhost:9080/ddenterpriseapi>>url:http://localhost:9080/ddenterpriseapi]]).
Aurelie Bertrand 18.2 102 )))
Aurelie Bertrand 1.1 103
Aurelie Bertrand 25.1 104 == Déploiement ==
Aurelie Bertrand 1.1 105
Aurelie Bertrand 25.1 106 1. Déployez le serveur Tomcat.
Aurelie Bertrand 18.2 107 1. (((
108 Après le démarrage du serveur, exécutez la commande suivante pour vérifier que le serveur agent fonctionne :
Aurelie Bertrand 1.1 109
110 {{code language="shell"}}
Aurelie Bertrand 25.1 111 curl http://localhost:8080/digdash_agent/actuator/health
Aurelie Bertrand 1.1 112 {{/code}}
113
114 La réponse attendue est :
115
Aurelie Bertrand 3.1 116 {{code language="shell"}}
117 {
118  "status": "UP"
Aurelie Bertrand 1.1 119 }
Aurelie Bertrand 3.1 120 {{/code}}
Aurelie Bertrand 18.2 121 )))
Aurelie Bertrand 1.1 122
123 (% start="2" %)
Aurelie Bertrand 10.1 124 1. Vérifiez les journaux de démarrage dans /var/log/digdash/digdash_agent.log pour détecter tout avertissement ou erreur indiquant une configuration manquante.
Aurelie Bertrand 1.1 125
126 = Installation de ChromaDB =
127
Aurelie Bertrand 6.1 128 L’agent utilise ChromaDB, une base de données vectorielle, pour effectuer des recherches sémantiques sur les données des cubes DigDash.
Aurelie Bertrand 1.1 129
130 == Prérequis ==
131
132 * Serveur Linux
Aurelie Bertrand 18.1 133 * Accès root au serveur
Aurelie Bertrand 1.1 134
135 == Installation ==
136
Aurelie Bertrand 18.2 137 1. (((
138 Créez le dossier d’installation :
Aurelie Bertrand 1.1 139
Aurelie Bertrand 36.1 140 {{code}}
141 sudo mkdir /opt/chroma
Aurelie Bertrand 1.1 142 sudo useradd -m -s /bin/bash chroma
Aurelie Bertrand 36.1 143 sudo chown chroma:chroma /opt/chroma
Aurelie Bertrand 1.1 144 {{/code}}
Aurelie Bertrand 18.2 145 )))
146 1. (((
147 Accédez au dossier d'installation:
Aurelie Bertrand 1.1 148
149 {{code language="shell"}}
150 sudo su - chroma
151 cd /opt/chroma
152 {{/code}}
Aurelie Bertrand 18.2 153 )))
Aurelie Bertrand 1.1 154
155 (% start="3" %)
Aurelie Bertrand 18.2 156 1. (((
Aurelie Bertrand 25.2 157 Créez un fichier bash "install-chroma-cli.sh" via `nano install-chroma-cli.sh` en copiant-collant le script suivant:
Aurelie Bertrand 1.1 158
159 {{code language="shell"}}
Aurelie Bertrand 18.1 160 # ----------------------------------------------
161 # Chroma CLI Installer Script
162 # Usage:
163 # curl -sSL https://raw.githubusercontent.com/chroma-core/chroma/main/rust/cli/install/install.sh | bash
164 # ----------------------------------------------
165 REPO="chroma-core/chroma"
166 RELEASE="cli-1.1.10"
167
168 OS=$(uname -s)
169 ARCH=$(uname -m)
170 ASSET=""
171
172 case "$OS" in
173 Linux*)
174 ASSET="chroma-linux"
175 ;;
176 Darwin*)
177 if [ "$ARCH" = "arm64" ]; then
178 ASSET="chroma-macos-arm64"
179 else
180 ASSET="chroma-macos-intel"
181 fi
182 ;;
183 MINGW*|MSYS*|CYGWIN*)
184 ASSET="chroma-windows.exe"
185 ;;
186 *)
187 echo "Unsupported OS: $OS"
188 exit 1
189 ;;
190 esac
191
192 DOWNLOAD_URL="https://github.com/${REPO}/releases/download/${RELEASE}/${ASSET}"
193 echo "Downloading ${ASSET} from ${DOWNLOAD_URL}..."
194 curl -L "$DOWNLOAD_URL" -o chroma
195
196 chmod +x chroma
Aurelie Bertrand 1.1 197 {{/code}}
Aurelie Bertrand 18.2 198 )))
Aurelie Bertrand 1.1 199
Aurelie Bertrand 18.2 200 (% start="4" %)
201 1. (((
Aurelie Bertrand 26.1 202 Exécutez le script "install-chroma-cli.sh" pour installer l’interface en ligne de commande Chroma (Chroma CLI) :
Aurelie Bertrand 1.1 203
204 {{code language="shell"}}
Aurelie Bertrand 26.1 205 install-chroma-cli.sh
206 {{/code}}
Aurelie Bertrand 26.2 207 )))
208 1. (((
209 Créez le fichier de configuration de Chroma "config.yaml" :
Aurelie Bertrand 26.1 210
Aurelie Bertrand 26.2 211 {{code language="shell"}}
212 #################
Aurelie Bertrand 26.1 213 # OpenTelemetry #
214 #################
215 open_telemetry:
216 service_name: "chroma"
217 endpoint: "http://127.0.0.1:4317"
218 filters:
219 - crate_name: "chroma_frontend"
220 filter_level: "trace"
Aurelie Bertrand 18.1 221 ########################
222 # HTTP server settings #
223 ########################
224 port: 8000
225 listen_address: "127.0.0.1" # Accept only local requests
226 max_payload_size_bytes: 41943040
227 cors_allow_origins: ["*"]
228
229 ####################
230 # General settings #
231 ####################
Aurelie Bertrand 26.2 232 persist_path: "/opt/chroma/data"
233 {{/code}}
234 )))
235
236 Notez que Chroma n'écrit pas de log dans la sortie standard si la configuration "Open Telemetry" n'est pas donnée.
237
238 Dans notre installation, nous ne comptons pas mettre en place un serveur Open Telemetry collectant des métriques.
239 Cela génère un log d'erreur toutes les minutes quand Chroma appelle le serveur car non disponible.
240
241 D'après la [[documentation OpenTelemetry>>https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/#periodic-exporting-metricreader]], nous pouvons configurer la variable d'environnement OTEL_METRIC_EXPORT_INTERVAL pour déterminer la périodicité des appels d'export de métrique.
242 Ainsi, en donnant une valeur très élévée, le service sera "désactivé" en attendant [[le support de la variable OTEL_SDK_DISABLED dans l'implémentation rust d'OpenTelemetry>>https://github.com/open-telemetry/opentelemetry-rust/pull/3088]].
243
244 (% start="6" %)
Aurelie Bertrand 18.1 245 1. (((
Aurelie Bertrand 27.1 246 Désactivez la configuration OpenTelemetry en ajoutant la variable d'environnement OTEL_METRIC_EXPORT_INTERVAL suivante :
247
248 {{code language="shell"}}
249 echo -e "\n### Chroma Configuration\nexport OTEL_METRIC_EXPORT_INTERVAL=31556952000 #one year in milliseconds" >> ~/.bashrc
250 source ~/.bashrc
251 {{/code}}
252 )))
253 1. (((
Aurelie Bertrand 18.1 254 Augmentez la limite « soft » et « hard » du nombre de fichiers ouverts à au moins 65 536.
Aurelie Bertrand 18.2 255 Chroma doit pouvoir ouvrir de nombreux fichiers sous forte charge. Si ces limites sont trop basses, il pourrait ne pas réussir à ouvrir la base de données et l’application risquerait de ne plus fonctionner.
Aurelie Bertrand 18.1 256 Vous pouvez vérifier les limites actuelles avec :
257
258 {{code}}
259 ulimit -n # soft limit
260 ulimit -Hn # hard limit
261 {{/code}}
Aurelie Bertrand 27.1 262
263 Si la limite est trop basse, alors vous pouvez augmenter temporairement la limite pour votre session ssh avec
264
265 {{code language="shell"}}
266 sudo ulimit -Hn 65536
267 ulimit -n 65536
268 {{/code}}
269
270 ou appliquer de manière permanente les changements en modifiant les limites de securité du serveur `/etc/security/limits.conf`:
271
272 (((
273 {{code language="shell"}}
274 sudo nano /etc/security/limits.conf
275 {{/code}}
Aurelie Bertrand 18.2 276 )))
Aurelie Bertrand 27.1 277
278 Et en ajoutant les nouvelles limites de fichiers ouverts par processus pour l'utilisateur chroma:
279
280 {{code}}
281 chroma soft nofile 65535
282 chroma hard nofile 65535
283 {{/code}}
284 )))
Aurelie Bertrand 18.2 285 1. (((
Aurelie Bertrand 27.1 286 Enfin, exécutez la commande suivante pour déployer le serveur :
Aurelie Bertrand 18.1 287
Aurelie Bertrand 18.2 288 {{code}}
289 ANONYMIZED_TELEMETRY=False ./chroma run config.yaml >> chroma.log 2>&1 &
290 {{/code}}
Aurelie Bertrand 23.1 291 )))
Aurelie Bertrand 18.1 292
Aurelie Bertrand 19.1 293 (% class="wikigeneratedid" %)
Aurelie Bertrand 20.1 294 Chroma est écrit en Rust, vous pouvez donc ajuster la verbosité des logs en définissant la variable d’environnement RUST_LOG=debug.
Aurelie Bertrand 19.1 295
Aurelie Bertrand 27.1 296 (% start="9" %)
297 1. (((
298 Exécutez la commande suivante pour vérifier le bon déploiement du serveur:
299
300 (((
301 {{code language="shell"}}
Aurelie Bertrand 34.1 302 curl http://localhost:8000/api/v2/heartbeat
Aurelie Bertrand 27.1 303 {{/code}}
304 )))
305
306 La réponse devrait ressembler à:
307
308 (((
309 {{code language="json"}}
310 {"nanosecond heartbeat":1760109567965688154}
311 {{/code}}
312 )))
313 )))
314
Aurelie Bertrand 12.1 315 = Configuration des paramètres du serveur DigDash{{id name="Paramètres_serveur"/}} =
Aurelie Bertrand 1.1 316
Aurelie Bertrand 7.1 317 Pour configurer les paramètres du serveur DigDash, depuis le menu Configuration, allez sur la page **Paramètres serveur >** **Paramètres supplémentaires >[[ Intelligence Artificielle>>doc:Digdash.deployment.configuration.configuration_guide.AI.WebHome]]**.
Aurelie Bertrand 1.1 318
Aurelie Bertrand 15.1 319 Dans la section **Agent**, cochez **Activer la fonction Agent** afin d'activer un ordonnanceur qui intègre périodiquement de nouveaux cubes et stocke les vectorisations dans la base Chroma. Une fois l'option activée, les paramètres suivants sont effectifs.
Aurelie Bertrand 1.1 320
Aurelie Bertrand 1.2 321 |=Paramètre |=Description
Aurelie Bertrand 15.1 322 |=Fréquence en secondes de la vectorisation des cubes dans la base de vecteurs|Définit la fréquence d’exécution de l'ordonnanceur. Ajustez selon la fréquence de reconstruction des cubes. La valeur minimale est de 1 seconde.
Aurelie Bertrand 39.1 323 Il est recommandé d'utiliser une valeur de 60 secondes.
Aurelie Bertrand 1.2 324 |=URL de base du modèle de vectorisation|(((
Aurelie Bertrand 1.1 325 L’Agent prend actuellement en charge uniquement les modèles d’OVH. Nous recommandons le modèle BGE-M3 : [[https:~~/~~/bge-m3.endpoints.kepler.ai.cloud.ovh.net>>url:https://bge-m3.endpoints.kepler.ai.cloud.ovh.net/]].
Aurelie Bertrand 1.2 326 )))
327 |=Clé API du modèle de vectorisation|Vous pouvez réutiliser la clé API utilisée pour le LLM.
Aurelie Bertrand 20.1 328 |=URL de base du stockage des vecteurs|Définissez l’URL de base vers la base de données ChromaDB : [[http:~~/~~/localhost:8000>>url:http://localhost:8000]].
Aurelie Bertrand 7.1 329 |=Clé d'environnement spécifique (prod, test ou dev)|ChromaDB stocke les vectorisations des cubes dans différentes "collections". Ce paramètre préfixe toutes les collections ChromaDB avec la valeur spécifiée (ex. : prod, test, dev). Utilisez-le si vous souhaitez utiliser la même base ChromaDB pour différents environnements.
330 |=Délai d'expiration du stockage des vecteurs|Valeur par défaut : 30 secondes.  Après ce délai, la requête est réessayée plusieurs fois avant d’échouer.
Aurelie Bertrand 1.3 331 |=Forcer l'initialisation du stockage des vecteurs    |Cochez cette case pour effacer complètement la base pour l’environnement spécifié.
Aurelie Bertrand 39.1 332 |=Liste des rôles à vectoriser|(((
333 Par défaut, tous les rôles sont vectorisés.
334 Pour limiter l’Agent à certains rôles, listez les identifiants des rôles séparés par des virgules (par exemple : Retail_2d6e0f1e, R_D_7b55a031).
335 )))
336 |=Liste des modèles à vectoriser|(((
337 Par défaut, tous les modèles de données sont vectorisés.
338 Pour limiter l’Agent à certains modèles, listez les identifiants des modèles de données séparés par des virgules (par exemple : 761a667955c84f834bb2950996f93e1fv, c99c1c9fadd5e4ceafc954c4fb7c1067).
339 )))
340 |=Liste des hiérarchies à vectoriser|(((
341 Ajoutez le nom des hiérarchies temporelles que l’Agent doit interpréter. L’Agent détectera les filtres temporels dans l’entrée utilisateur et trouvera la correspondance la plus proche parmi les membres des hiérarchies spécifiées.
342 Pour retrouver la liste de vos hiérarchies temporelles, allez dans le gestionnaire de hiérarchies du Studio. Consultez la page [[Gestionnaire de hiérarchies>>doc:Digdash.user_guide.studio.managers.hierarchies.WebHome]].
Aurelie Bertrand 1.1 343
Aurelie Bertrand 39.1 344 Si le champ est vide, aucune hiérarchie ne sera prise en compte.
345 )))
346
Aurelie Bertrand 38.1 347 (% class="wikigeneratedid" id="HInstallationd2019OpenWebUI28optionnelle29" %)
348 Une fois cette installation terminée, vous pouvez passer à l'installation d'Open Web UI.
Aurelie Bertrand 1.1 349
Aurelie Bertrand 35.1 350 = Pour en savoir plus... =
351
Aurelie Bertrand 38.1 352 * [[Guide d'installation d'Open Web UI>>doc:Digdash.Agent.OpenWebUI&DD.WebHome]]
Aurelie Bertrand 35.1 353 * [[Création d'un graphique avec DigDash Agent>>doc:Digdash.Agent.create_chart_Agent.WebHome]]