Premiers pas
Qu'est-ce qu'AI Chat Widget ?
AI Chat Widget est un assistant de chat que vous exécutez sur votre propre serveur et que vous placez sur n'importe quel site web avec une seule ligne de code. Il répond aux questions des visiteurs grâce au fournisseur IA de votre choix, à partir des informations que vous lui donnez, et il peut recueillir des demandes de contact lorsqu'il ne peut pas aider.
Tout se trouve sur votre hébergement : le panneau d'administration, les conversations, la base de connaissances et vos clés IA. Rien n'est envoyé chez nous. Les seuls échanges externes se font entre votre serveur et le service IA que vous choisissez, et entre le navigateur du visiteur et votre serveur.
Ce que vous pouvez faire
- Connecter n'importe quel fournisseur IA : OpenAI, Anthropic, Google Gemini, Mistral, Groq, Perplexity, OpenRouter, xAI, Together AI, Azure OpenAI, Cohere, LM Studio, Ollama, ou tout service que vous décrivez vous-même en quelques champs.
- Créer plusieurs bots, chacun avec son propre sujet, son apparence, ses textes, ses règles et sa liste de sites web.
- Former un bot à partir d'une base de connaissances : texte collé, listes de questions et réponses, fichiers TXT, Markdown, CSV, HTML, PDF et Word, pages web et sitemaps entiers.
- Permettre aux visiteurs de laisser leurs coordonnées lorsque le bot ne sait pas répondre, et recevoir un e-mail pour chaque demande.
- Lire et exporter les conversations, évaluer les réponses et suivre les statistiques pour voir ce que les visiteurs demandent vraiment.
- Tout protéger avec une connexion à deux facteurs, un journal d'audit complet, des listes d'accès par site web, des limites de débit et des budgets quotidiens de tokens.
- Travailler en six langues : anglais, polonais, allemand, français, italien et espagnol, dans le panneau comme dans le widget.

Comment ça fonctionne
Quatre éléments, à configurer dans cet ordre : un fournisseur, un bot, le code d'intégration, puis ce que disent réellement les visiteurs.
- 1Fournisseur IA. Une connexion enregistrée à un service IA : son adresse, la manière de s'y authentifier (votre clé API) et la manière de lire sa réponse. Des profils intégrés couvrent les services courants ; vous pouvez ajouter les vôtres.
- 2Bot. Un assistant de chat. Il a un fournisseur et un modèle, une description de mission (sujet, périmètre, ton), une apparence, des textes et des règles. Vous pouvez exploiter autant de bots que votre licence le permet, pour différents sites ou usages.
- 3Code d'intégration. Une seule ligne
<script>qui place le chat sur une page (ou un petit plugin WordPress qui le fait pour vous). - 4Conversations. Chaque message d'un visiteur arrive d'abord sur votre serveur. Votre serveur vérifie les règles, construit les instructions pour l'IA, interroge le fournisseur et renvoie la réponse. La clé IA n'atteint jamais le navigateur du visiteur.
Ce qui se passe lorsqu'un visiteur envoie un message
- 1Le widget envoie le message à
api.phpsur votre serveur. - 2Le serveur vérifie que le site web figure dans la liste autorisée du bot, puis applique la limite de débit, les mots bloqués et le budget quotidien de tokens.
- 3Il recherche les extraits correspondants dans la base de connaissances (si le bot l'utilise) et construit les instructions : sujet, périmètre, ton, informations sur l'entreprise, extraits et règles de sécurité toujours actives.
- 4Il interroge le fournisseur IA (et un fournisseur de secours si le premier échoue).
- 5Il enregistre l'échange selon le mode de journalisation du bot et renvoie la réponse, avec des liens vers les sources lorsque le modèle en fournit.
Configuration requise
| Prérequis | Détails |
|---|---|
| PHP | 8.1 ou plus récent |
| Extensions PHP requises | pdo_mysql, openssl, mbstring |
| Fortement recommandées | curl (appels aux fournisseurs IA et import de pages web), sodium (vérification de la licence), dom et libxml (lecture des pages web et des fichiers Word), zlib et iconv (fichiers PDF) |
| Facultative | zip (plugin WordPress sous forme de fichier .zip ; sans elle, les fichiers Word utilisent un lecteur intégré) |
| Base de données | MySQL 5.7+ ou MariaDB 10.3+ (l'index de recherche en texte intégral InnoDB est utilisé par la base de connaissances) |
| Serveur web | Apache 2.4 (les règles d'accès sont fournies dans .htaccess) ou Nginx (voir Maintenance pour les règles équivalentes) |
| Navigateur pour le panneau | Chrome, Edge, Firefox ou Safari récent |
| Connexions sortantes | HTTPS vers vos fournisseurs IA ; SMTP vers votre serveur de messagerie si vous utilisez les fonctions e-mail |
Installation
L'installation prend quelques minutes et fonctionne sur un hébergement mutualisé ordinaire, un VPS ou un serveur dédié. Ni Composer ni ligne de commande ne sont nécessaires sur le serveur.
- 1Copiez les fichiers. Téléversez le dossier
ai-chat-widgetcomplet à la racine de votre site web, ou dans n'importe quel sous-dossier. L'adresse est détectée automatiquement, le nom du dossier n'a donc pas d'importance. - 2Créez une base de données MySQL vide dans le panneau de contrôle de votre hébergeur (par exemple cPanel ou DirectAdmin : « Bases de données MySQL »), avec un utilisateur disposant de tous les droits sur cette base. Notez l'hôte (souvent
localhost), le nom de la base, l'utilisateur et le mot de passe ; vous les saisirez dans l'installateur. - 3Ouvrez l'installateur. Allez sur
https://your-site/ai-chat-widget/install/et choisissez la langue de l'installateur (anglais, polonais, allemand, français, italien ou espagnol). - 4Remplissez le formulaire. Hôte, nom, utilisateur et mot de passe de la base de données, un préfixe de table (le
acw_par défaut convient) et votre premier administrateur : nom, e-mail et mot de passe d'au moins 12 caractères. - 5Terminez. L'installateur crée les tables, écrit
config/config.phpet un fichier de verrouillage, puis affiche un lien vers la page de connexion. - 6**Supprimez le dossier
install/** du serveur lorsqu'il vous le demande.

config/config.php.** Il contient la clé de l'application qui chiffre vos clés IA, le mot de passe SMTP et les secrets de l'authentification à deux facteurs. Avec une sauvegarde de la base de données mais sans ce fichier, ces valeurs ne pourront plus être relues. Conservez-en une copie en lieu sûr, en dehors de la racine web.Mise à jour
Téléversez les nouveaux fichiers par-dessus les anciens (en conservant config/ et storage/), connectez-vous et ouvrez Infos système. Si la base de données nécessite des modifications, la page les liste ; cliquez une fois sur Appliquer les mises à jour. Voir « Maintenance » pour la procédure complète.
Première connexion et tableau de bord
Connectez-vous avec l'e-mail et le mot de passe définis pendant l'installation. Le panneau mémorise votre langue et fonctionne de la même manière sur un téléphone.
Le menu de gauche est organisé par tâche :
| Groupe | Entrées |
|---|---|
| Tableau de bord | Vue d'ensemble et vérifications rapides |
| Configuration | Bots, Fournisseurs IA, Base de connaissances |
| Conversations | Conversations, Demandes de contact, Statistiques |
| Administration | Utilisateurs, Paramètres, Journal d'audit, Infos système, À propos |
Le tableau de bord affiche votre formule de licence, l'état de la connexion à deux facteurs, le nombre d'utilisateurs et de bots, ainsi que des avertissements : mises à jour de la base de données en attente, extension PHP manquante ou avis « 2FA obligatoire ». La barre supérieure contient votre menu de profil (profil, connexion à deux facteurs, déconnexion) ; la flèche en bas du menu le réduit à des icônes.
Les petites icônes « ? »
Chaque champ de formulaire possède une icône « ? » qui ouvre une courte explication. Elles peuvent être désactivées pour tous dans Paramètres > Général ou pour vous seul dans Mon profil.
Démarrage rapide : votre premier bot en 8 étapes
D'une installation vide à un chat sur votre page, étape par étape.
- 1Ajoutez un fournisseur IA. Allez dans Fournisseurs IA, ouvrez un profil prêt à l'emploi (par exemple OpenAI) et collez votre clé API. Le lien « Obtenir une clé API » sous le champ ouvre la page du fournisseur où la clé se crée.
- 2Testez la connexion. Dans le même éditeur, cliquez sur Récupérer les modèles, puis utilisez la console de test : choisissez un modèle, envoyez un message et vérifiez qu'une réponse arrive. Corrigez la clé ici avant de créer un bot.
- 3Créez un bot. Allez dans Bots > Ajouter un bot. Donnez-lui un nom, choisissez le fournisseur et le modèle, et dans l'onglet Sujet et prompt décrivez de quoi il doit parler : votre activité, le ton, ce à quoi il ne doit pas répondre.
- 4Définissez l'apparence et les textes. Onglets Apparence, Comportement, Textes et Marque : couleurs, position, message d'accueil et questions suggérées. L'onglet Chat de test et « Aperçu du prompt final » permettent de discuter avec le bot directement dans le panneau.
- 5Autorisez votre site web. Dans l'onglet Sécurité, ajoutez votre site sous Sites autorisés (par exemple
example.comou*.example.com). Le chat ne se charge que sur les sites listés. - 6Intégrez-le. Ouvrez l'onglet Intégration, copiez le script d'une ligne et collez-le avant
</body>dans vos pages. Sous WordPress, téléchargez plutôt le petit plugin depuis le même onglet. - 7Facultatif : ajoutez des connaissances et des demandes de contact. Ajoutez des documents dans Base de connaissances, ou activez Demandes de contact sur le bot (configurez d'abord Paramètres > E-mail).
- 8Surveillez et ajustez. Discutez avec le bot sur votre page. Consultez ensuite Conversations et Statistiques, décidez de ce qui est enregistré (onglet Confidentialité) et améliorez le prompt là où les réponses n'étaient pas utiles.
Guide d'utilisation
Fournisseurs IA
Un profil de fournisseur indique à l'application comment dialoguer avec un service IA. Les profils sont des données, pas du code : un service nouveau ou inhabituel peut donc être ajouté sans attendre une mise à jour.

Profils intégrés
OpenAI, Anthropic (Claude), Google Gemini, Mistral, Groq, Perplexity, OpenRouter, xAI (Grok), Together AI, Azure OpenAI, Cohere, LM Studio et Ollama (tous deux locaux), ainsi qu'un profil générique compatible OpenAI que vous pouvez diriger vers n'importe quel serveur compatible. Chacun est prêt à l'emploi : ouvrez-le, collez la clé, enregistrez.
Ajouter votre clé
Ouvrez un fournisseur et renseignez Clé API. La clé est stockée chiffrée et n'est plus jamais affichée (seulement les quatre derniers caractères). Un message vert confirme qu'une clé est enregistrée ; laissez le champ vide lors des modifications ultérieures pour la conserver. Le lien Obtenir une clé API à côté du champ mène à la page où le fournisseur délivre les clés.

La console de test
Sous le formulaire, la console envoie un vrai message avec le profil tel qu'il est en cours de modification, enregistré ou non. Elle affiche la réponse, la durée, le nombre de tokens et, en cas d'échec, la requête et la réponse exactes (avec votre clé masquée). Utilisez-la à chaque modification d'un profil.
Modifier un profil
{{model}} (Google Gemini place le modèle dans l'adresse).{{model}}, {{messages}}, {{system}}, {{prompt}}, {{max_tokens}}, {{temperature}} et {{top_p}} sont remplis à chaque appel. Les valeurs facultatives vides peuvent être omises automatiquement.choices.0.message.content. * rassemble tous les éléments d'une liste.id | libellé). Récupérer les modèles la lit en direct chez le fournisseur.Ajouter un service absent de la liste
Dupliquez le profil compatible OpenAI (de nombreux services parlent ce protocole), ou partez d'un profil proche et modifiez l'adresse, les en-têtes et les chemins. La console de test vous indique ce qu'il faut corriger. Les profils peuvent être exportés et importés sous forme de fichiers JSON, ce qui permet de partager un profil qui fonctionne.
Sécurité intégrée
Chaque appel passe par un contrôle d'adresse qui bloque les réseaux privés, les adresses link-local et les adresses de métadonnées cloud (sauf si vous autorisez les réseaux privés pour ce profil), refuse les redirections, limite la taille et la durée des réponses, et n'écrit jamais votre clé dans les journaux ni dans les messages d'erreur.
Bots
Un bot est un assistant de chat. Son éditeur comporte des onglets, et chaque champ possède une icône d'aide « ? ». Enregistrez une seule fois à la fin ; les modifications non enregistrées sont signalées si vous quittez la page.


Général
Sujet et prompt
Vous remplissez un formulaire au lieu de rédiger un prompt. L'application assemble un ensemble d'instructions éprouvé autour de vos textes et ajoute toujours des règles de sécurité non supprimables.
{{site_name}}, {{current_date}} et {{page_title}} sont disponibles.Aperçu du prompt final montre exactement ce que le modèle recevra, règles de sécurité comprises.
Modèle
Apparence
Couleur principale (la couleur du texte s'adapte automatiquement), thème clair, sombre ou automatique, position (gauche ou droite), distances par rapport au bord, taille de la fenêtre, arrondi des coins, icône et libellé du bouton, image d'avatar et, pour les utilisateurs avancés, CSS personnalisé appliqué uniquement à l'intérieur de la fenêtre de chat (licences payantes).
Comportement
Demandes de contact
Voir le chapitre « Demandes de contact ».
Où et quand
Afficher le chat sur toutes les pages, uniquement sur les pages correspondant à des modèles, ou partout sauf sur celles-ci (les modèles utilisent *) ; sur tous les appareils, uniquement sur ordinateur ou uniquement sur mobile ; uniquement pendant les horaires d'ouverture, avec un message ou rien en dehors. Licences payantes.
Textes
Par langue : titre de la fenêtre, message d'accueil, texte indicatif du champ de saisie, questions suggérées (jusqu'à cinq boutons), mention IA, messages d'erreur et d'indisponibilité, libellé du bouton d'envoi, ainsi que l'introduction et le remerciement du formulaire de contact. Les champs vides utilisent les traductions intégrées : le widget parle donc la langue du visiteur même si vous n'écrivez rien.
Sécurité
example.com ou *.example.com). Les requêtes provenant de tout autre site sont refusées, ce qui empêche d'autres personnes d'utiliser votre bot et votre crédit IA.Confidentialité
Marque
La petite ligne « Powered by » en bas du chat. Elle est toujours affichée avec la licence Free ; Single et Agency peuvent la masquer ; Agency peut remplacer son texte et son lien (marque blanche).
Intégration et Chat de test
L'onglet Intégration contient le script, le plugin WordPress et une page de test prête à l'emploi. Chat de test permet de dialoguer avec le bot dans le panneau sans rien enregistrer.
Placer le chat sur votre site web
Une ligne de code, ou un petit plugin. Le widget s'affiche dans un Shadow DOM : les styles de votre site ne peuvent pas le casser, et il ne peut pas casser votre site.
N'importe quel site web
Ouvrez votre bot, l'onglet Intégration, copiez le script et collez-le juste avant la balise de fermeture </body> de chaque page où le chat doit apparaître :
<script src="https://your-site/ai-chat-widget/assets/widget/loader.js"
data-bot="YOUR-BOT-ID" async></script>Ajoutez ensuite votre site web sous Sécurité > Sites autorisés, faute de quoi le chat ne s'y chargera pas.
WordPress
L'onglet Intégration propose un petit plugin (un .zip, ou un simple fichier .php si le serveur n'a pas l'extension zip). Téléversez-le via Extensions > Ajouter > Téléverser une extension, activez-le et le chat apparaît sur chaque page. Le plugin ajoute seulement la ligne de script avec l'ID de votre bot ; le chat, les clés IA et les conversations restent sur votre installation.
Attributs de script facultatifs
| Attribut | Signification |
|---|---|
data-context-title | Le titre de la page envoyé au bot (sinon le titre du document). |
data-context-url | L'adresse de la page envoyée au bot (sinon l'adresse actuelle). |
data-lang | Force la langue du widget (sinon la langue de la page ou celle du navigateur du visiteur). |
data-api | L'adresse de api.php, si votre installation se trouve derrière un autre chemin. |
Piloter le chat depuis votre page
AIChatWidget.open(); // open the window
AIChatWidget.close(); // close it
AIChatWidget.toggle(); // open or close
AIChatWidget.setContext({ title: 'Red city bike', url: location.href });Utilisez ces appels pour ouvrir le chat depuis votre propre bouton ou pour indiquer au bot quel produit le visiteur consulte.
Ce que voient les visiteurs
Un bouton rond dans le coin ; une fenêtre avec un en-tête (titre, bouton de contact lorsqu'il est activé, recommencer, fermer), la conversation avec mise en forme Markdown, des boutons de questions suggérées, des pouces, des liens vers les sources, la mention IA et un champ de saisie. Sur téléphone, la fenêtre occupe tout l'écran. La conversation survit aux rechargements de page pendant la session du navigateur.

Base de connaissances
La base de connaissances contient les informations à partir desquelles vos bots répondent : prix, politiques, FAQ, détails des produits. Lorsqu'un visiteur pose une question, le bot recherche les extraits les plus pertinents et répond à partir d'eux plutôt que de deviner.

Façons d'ajouter du contenu
# ou écrite en majuscules est traitée comme un titre qui reste attaché au texte qui suit.Q: ... et A: ... (aussi Pytanie/Odpowiedź, Frage/Antwort, Question/Réponse, Domanda/Risposta, Pregunta/Respuesta). Chaque paire reste unie, ce qui donne les meilleurs résultats.
Quel bot utilise un document
Chaque document appartient à un bot ou à tous les bots. Utilisez « Tous les bots » pour les informations valables pour toute l'entreprise, comme la livraison et les retours. Un document peut être désactivé sans être supprimé. Les pages importées peuvent être relues en un clic pour les actualiser.
Comment un bot l'utilise
Dans l'onglet Sujet et prompt du bot, choisissez le mode :
- L'utiliser, avec repli sur les connaissances générales (par défaut). Les extraits correspondants sont ajoutés aux instructions. Le bot peut tout de même recourir à ses connaissances générales lorsque les extraits ne disent rien.
- Répondre uniquement à partir de la base de connaissances. Lorsque rien ne correspond, l'IA n'est pas interrogée du tout : le bot répond avec son texte « quand il ne sait pas répondre », ce qui ne coûte aucun token, évite les réponses inventées et marque la question comme sans réponse.
- Ne pas l'utiliser.
Une relance très courte comme « et la garantie ? » est recherchée avec la question précédente. Les documents provenant d'une adresse web ajoutent un lien vers la source sous la réponse.
Recherche
La recherche n'a besoin d'aucun service externe. Le texte est découpé en extraits ; les mots sont réduits à leur radical (accents et terminaisons n'ont pas d'importance), l'index de texte intégral de la base de données sélectionne des candidats et un classement de pertinence (BM25) choisit les meilleurs. Elle fonctionne dans les six langues du panneau. Une question dans une langue différente de celle du document ne correspondra pas : rédigez vos documents dans la langue de vos visiteurs.
Essayer une recherche
Le champ Essayer une recherche de la page Base de connaissances montre quels extraits un bot recevrait pour une question, avec un score de pertinence. Utilisez-le après avoir ajouté des documents.
Boucler la boucle
Dans Statistiques, chaque question sans réponse comporte un lien Ajouter une réponse à la base de connaissances. Il ouvre un formulaire de question et réponse avec la question et le bot déjà renseignés. Rédigez la réponse et enregistrez : la prochaine fois, le bot la connaîtra.
Limites
| Formule | Documents | Taille totale |
|---|---|---|
| Free | 5 | 100 Ko |
| Single | 100 | 2 Mo |
| Agency | Illimité | Illimitée |
Demandes de contact
Lorsque le bot ne peut pas aider, le visiteur peut laisser ses coordonnées au lieu de quitter le site. Vous recevez un e-mail pour chaque demande et une liste dans le panneau.

L'activer
- 1Configurez l'envoi d'e-mails sous Paramètres > E-mail et envoyez le message de test.
- 2Ouvrez le bot, onglet Demandes de contact, cochez Recueillir des demandes de contact.
- 3Choisissez quand le formulaire est proposé : un bouton dans l'en-tête du chat, et/ou juste après une réponse que le bot n'a pas pu donner.
- 4Choisissez les champs affichés (nom, téléphone, message : masqué, facultatif ou obligatoire ; l'adresse e-mail est toujours obligatoire), s'il faut demander le consentement, et qui est notifié.
Traiter les demandes

La page Demandes de contact liste chaque demande avec des filtres (recherche, bot, statut). Ouvrez-en une pour voir le message, la page où se trouvait le visiteur et la conversation dont elle provient. Marquez les demandes comme traitées, supprimez-les une par une ou en lot, et exportez-les en CSV (licences payantes). Les filtres actifs sont mis en évidence et comptés à côté de « Réinitialiser les filtres ».
Protection
Le formulaire fonctionne même en dehors des horaires d'ouverture. Il comporte un champ piège caché pour les robots, une limite de six demandes par visiteur et de trois par adresse e-mail et par heure, et vérifie chaque champ côté serveur.
Conversations
Lisez ce que les visiteurs ont demandé, marquez ce qui compte et gardez la base de données en ordre sans aucune tâche planifiée.

La liste
Filtrez par bot, période, texte recherché et vue : toutes, épinglées, sans réponse, mal évaluées ou avec erreurs. Chaque ligne affiche des signaux : pouces, « sans réponse » et erreurs du fournisseur. Ouvrez une conversation pour lire l'échange complet avec les tokens, le temps de réponse et les indicateurs.

Actions
Épinglez les conversations à conserver, supprimez-en une ou plusieurs, ou supprimez toutes celles d'un bot. Exporter (CSV ou JSON, licences payantes) conserve vos filtres ; les cellules CSV susceptibles d'être exécutées comme des formules de tableur sont neutralisées.
Modes d'enregistrement
Ce qui est conservé dépend du réglage Journal des conversations de chaque bot : textes complets, métadonnées uniquement (nombres, durées, évaluations) ou rien. Avec « métadonnées » ou « désactivé », le navigateur du visiteur garde l'historique pour la session.
Nettoyage automatique
Les anciennes conversations sont supprimées selon des règles : par ancienneté, par nombre et par taille, pour chaque bot (règles propres ou valeurs par défaut) et pour toute la base (nombre total et taille totale). Les conversations épinglées ne sont jamais supprimées automatiquement. Il n'y a aucune tâche cron : le nettoyage s'exécute de lui-même lorsque l'application est utilisée, au plus une fois par minute. Nettoyer maintenant affiche d'abord un aperçu (combien de conversations, combien de kilo-octets et pourquoi) et demande confirmation.
Statistiques
Les compteurs sont conservés sous forme de totaux quotidiens anonymes ; les statistiques fonctionnent donc même pour les bots qui n'enregistrent aucune conversation.

Les tuiles affichent les réponses, les tokens, les erreurs, les questions sans réponse, les messages bloqués et les évaluations. Trois graphiques présentent les réponses, les tokens et les problèmes par jour. Un tableau compare vos bots. Avec une licence payante, deux listes affichent les dernières questions sans réponse (chacune avec un lien pour ajouter une réponse à la base de connaissances) et les réponses jugées pas utiles : le moyen le plus rapide d'améliorer un bot.
Paramètres
Options valables pour toute l'application, réparties en onglets.
Streaming des réponses
Avec le streaming activé, les visiteurs voient la réponse apparaître mot par mot. Il faut un serveur qui ne retient pas les réponses ; cliquez donc d'abord sur Tester le streaming : le test envoie six morceaux espacés d'une demi-seconde et indique s'ils arrivent un par un. Si le test indique que tout est arrivé d'un coup, laissez le streaming désactivé. Les fournisseurs qui ne savent pas diffuser en continu livrent simplement la réponse entière d'un coup.
E-mail et notifications
Le courrier sortant sert à la réinitialisation du mot de passe, aux codes de connexion et aux notifications de nouvelles demandes de contact. Il est facultatif ; tout le reste fonctionne sans lui.

Configuration
smtp.example.com, 587 avec STARTTLS ou 465 avec SSL/TLS.Cliquez sur Enregistrer et envoyer l'e-mail de test. Si le message arrive, tout fonctionne.
Textes d'e-mail

Sous Paramètres > Textes d'e-mail, choisissez un e-mail (réinitialisation du mot de passe, mot de passe modifié, code de connexion, nouvelle demande de contact, confirmation au visiteur, test) et une langue, puis modifiez l'objet et le texte. Les {placeholders} comme {name}, {link} ou {code} sont remplacés lors de l'envoi. Restaurer le texte intégré revient au texte par défaut. Les e-mails destinés aux personnes sont rédigés dans la langue qu'elles ont choisie dans leur profil.
Comptes, authentification à deux facteurs et journal d'audit
Chaque utilisateur est administrateur ; il n'y a aucun rôle à configurer. L'accès est protégé par des mots de passe, une authentification à deux facteurs facultative et une piste d'audit complète.
Utilisateurs
Sous Utilisateurs, ajoutez ou supprimez des administrateurs (leur nombre dépend de votre licence), réinitialisez l'authentification à deux facteurs d'un collègue qui a perdu son appareil et consultez qui s'est connecté et quand.
Authentification à deux facteurs

Ouvrez Mon profil > Authentification à deux facteurs et choisissez l'une des options :
- Application d'authentification. Scannez ou saisissez la clé dans une application comme Google Authenticator, Microsoft Authenticator ou Aegis, puis entrez le code à 6 chiffres pour confirmer.
- Code par e-mail. Un code à 6 chiffres est envoyé par e-mail à chaque connexion (valable dix minutes, cinq essais). Nécessite un courrier sortant fonctionnel. Vous confirmez en saisissant un code envoyé à votre adresse.
Dans les deux cas, vous recevez une seule fois des codes de récupération. Conservez-les en lieu sûr : chacun fonctionne une seule fois si vous ne pouvez pas utiliser la seconde étape habituelle. Paramètres > Général > Exiger l'authentification à deux facteurs la rend obligatoire pour tous.
Mot de passe oublié
Lorsque le courrier sortant est configuré, la page de connexion affiche Mot de passe oublié ?. Un lien à usage unique, valable 60 minutes, est envoyé par e-mail ; la même réponse s'affiche que l'adresse existe ou non. La définition d'un nouveau mot de passe lève le verrouillage du compte et envoie un avis. Sans e-mail, un autre administrateur définit un nouveau mot de passe pour vous sous Utilisateurs.
Verrouillages et limites
Cinq mots de passe erronés verrouillent un compte pendant 15 minutes ; les échecs trop nombreux depuis une même adresse sont limités. Les sessions expirent après la durée définie dans Paramètres.
Journal d'audit

Chaque action importante est enregistrée : connexions et échecs, modifications de paramètres, changements de clés et de licence, modifications d'utilisateurs, exports, suppressions. Le journal ne stocke jamais de mots de passe, de clés ni de textes de messages. Les anciennes entrées sont supprimées après le nombre de jours défini dans Paramètres.
Infos système, mises à jour et données de démo
Les détails techniques et les outils en un clic.

Infos système affiche les versions de l'application et de PHP, la base de données, les extensions PHP chargées, les droits d'accès aux fichiers et la liste des mises à jour de la base de données (migrations). Lorsqu'une nouvelle version apporte des modifications de la base, le tableau de bord affiche un avis ; ouvrez Infos système et cliquez sur Appliquer. Les mises à jour sont numérotées, exécutées une seule fois et peuvent être relancées sans risque.
Données de démo
Paramètres > Données de démo charge quatre bots d'exemple (magasin de vélos, FAQ de cabinet d'avocats, assistant commercial SaaS, recrutement) avec une centaine de conversations réparties sur six mois, dont des conversations épinglées et évaluées, des questions sans réponse, des demandes de contact et des documents de connaissances. Le nettoyage automatique est suspendu tant que les données sont chargées (sinon les conversations volontairement anciennes disparaîtraient). Supprimer efface exactement les bots de démo et leurs données et rétablit votre précédent réglage de nettoyage.
Licences
L'application est gratuite pour votre usage personnel. Les licences payantes sont destinées à l'usage commercial et lèvent les limites.
| Free | Single | Agency | |
|---|---|---|---|
| Usage | Votre usage personnel | Commercial, un domaine d'installation | Commercial, plusieurs domaines |
| Bots | 2 | 10 | Illimité |
| Sites autorisés (tous les bots) | 2 | 10 | Illimité |
| Administrateurs | 1 | 5 | Illimité |
| Base de connaissances | 5 documents, 100 Ko | 100 documents, 2 Mo | Illimité |
| Mention « Powered by » | Toujours affichée | Peut être masquée | Peut être masquée et remplacée (marque blanche) |
| Fournisseur de secours | - | Oui | Oui |
| Ciblage, horaires d'ouverture, ouverture automatique, CSS personnalisé | - | Oui | Oui |
| Listes de statistiques (sans réponse, pas utile) | Compteurs uniquement | Oui | Oui |
| Export des conversations et des demandes de contact | - | Oui | Oui |
| E-mail de confirmation au visiteur | - | Oui | Oui |
Activer une clé
Allez dans Paramètres > Licence, collez la clé et enregistrez. La clé est vérifiée sur votre serveur à l'aide d'une clé publique intégrée et liée à votre domaine : aucune donnée n'est envoyée ailleurs. Si la clé ne correspond pas au domaine ou a expiré, l'application reste en version Free ; les widgets en ligne ne sont jamais désactivés, seule la création de nouveaux éléments est limitée.
Fonctionnalités en un coup d'œil
Nombreux bots
Sujets, apparences, textes, règles et listes de sites différents, chacun avec son propre fournisseur et son propre modèle.
Tout fournisseur IA
Quatorze profils prêts à l'emploi plus les vôtres, configurés à partir de données, testés en direct, avec un fournisseur de secours.
Base de connaissances
Texte, Q/R, TXT, MD, CSV, HTML, PDF, DOCX, pages web et sitemaps, avec une recherche sans service supplémentaire.
Demandes de contact
Un formulaire dans le chat, des notifications par e-mail, une liste avec export et suppression automatique.
Conversations
Recherche, filtres, épinglage, évaluations, export et nettoyage par ancienneté, nombre et taille.
Statistiques
Totaux quotidiens, graphiques, questions sans réponse et réponses pas utiles, avec des corrections en un clic.
Streaming
Réponses mot par mot en option, avec un test intégré de votre serveur.
Six langues
Anglais, polonais, allemand, français, italien et espagnol, dans le panneau et dans le widget.
Sécurisé dès la conception
Authentification à deux facteurs, protection CSRF, clés chiffrées, journal d'audit, listes de sites autorisés, limites et budgets.
Réinitialisation du mot de passe, codes de connexion par e-mail et notifications avec des textes modifiables dans chaque langue.
WordPress et tout site
Une ligne de script, ou un petit plugin, avec un widget Shadow DOM qui n'entre jamais en conflit avec vos styles.
Options de confidentialité
Enregistrement complet, métadonnées uniquement ou aucun, IP raccourcies, mention IA, case de consentement, règles de conservation.
Référence
Pour les développeurs : l'API du widget
Le widget communique avec api.php sur votre serveur. Il n'y a ni cookies ni sessions : un visiteur est un jeton aléatoire conservé dans le navigateur.
| Requête | Objectif |
|---|---|
GET api.php?a=config&bot=ID&lang=xx | Configuration du widget et textes dans la langue du visiteur. |
POST api.php?a=message&bot=ID | Un message du visiteur (corps JSON). Ajoutez &stream=1 pour les événements envoyés par le serveur lorsque le streaming est activé. |
POST api.php?a=rate&bot=ID | Pouce levé ou baissé pour une réponse (référence signée). |
POST api.php?a=lead&bot=ID | Une demande de contact (corps JSON). |
GET api.php?a=test&bot=ID | Une petite page de test avec le widget. |
Chaque requête doit provenir d'un site autorisé (l'en-tête Origin est comparé à la liste du bot). Les réponses sont au format JSON avec ok et, en cas d'erreur, un code error et un message traduit. Les réponses en streaming utilisent les événements delta (un morceau de texte), done (réponse finale, conversation, signature, sources) et error.
AIChatWidget.Confidentialité et RGPD
Vous décidez de ce qui est conservé. Ces réglages vous aident à respecter vos obligations ; ils ne constituent pas un avis juridique.
- Mode d'enregistrement par bot. Complet, métadonnées uniquement ou désactivé. Choisissez ce dont vous avez réellement besoin.
- Adresses IP. Conservées raccourcies (dernière partie supprimée) ou pas du tout.
- Conservation. Supprimez les conversations par ancienneté, nombre ou taille, et les demandes de contact après un certain nombre de jours. Les deux s'exécutent automatiquement.
- Suppression sur demande. Supprimez les conversations d'une personne depuis la liste (recherchez le texte) et sa demande de contact depuis Demandes de contact.
- Mention IA. Une courte phrase dans le chat indiquant au visiteur qu'il parle à une IA ; avec des liens vers votre politique de confidentialité.
- Consentement. Une case obligatoire dans le formulaire de contact.
- Données en transit. Les messages sont envoyés au fournisseur IA que vous avez choisi. Vérifiez ses conditions et son accord de traitement des données, et mentionnez-le dans votre politique de confidentialité. Choisissez un fournisseur ou un modèle adapté à vos obligations, ou un modèle local (Ollama, LM Studio) si les données ne doivent pas quitter votre serveur.
- Vos données restent chez vous. L'application elle-même n'envoie rien à CreativAI.
Aperçu de la sécurité
Défense en profondeur, sans services supplémentaires.
- Connexion. Mots de passe hachés, verrouillage après des échecs répétés, authentification à deux facteurs facultative avec codes de récupération, sessions qui expirent.
- Formulaires. Protection CSRF sur chaque modification ; toutes les sorties sont échappées ; une politique de sécurité du contenu avec nonces.
- Secrets. Les clés IA, le mot de passe SMTP et les secrets d'authentification à deux facteurs sont chiffrés en AES-256-GCM avec la clé de votre application.
- Identifiants publics. Les bots, conversations et demandes de contact utilisent des UUID aléatoires dans les adresses, jamais des numéros séquentiels.
- Widget. Construit uniquement avec des appels DOM (aucun HTML brut provenant du modèle), dans un Shadow DOM ; les liens des réponses s'ouvrent avec
rel="noopener noreferrer nofollow". - Limites anti-abus. Liste de sites autorisés, limitation du débit, limites de longueur des messages et des conversations, mots bloqués, budget quotidien de tokens, champ piège caché et limites par adresse sur le formulaire de contact.
- Requêtes sortantes. Les appels IA et les imports de pages web sont vérifiés par rapport aux adresses privées et aux adresses de métadonnées cloud, les redirections sont vérifiées à chaque étape, la taille et la durée sont plafonnées.
- Injection de prompt. Le texte du visiteur, le contexte de la page et les extraits de connaissances sont signalés comme données non fiables et des règles de sécurité fixes sont toujours ajoutées. Un prompt réduit ce risque mais ne peut pas le supprimer : gardez le périmètre du bot étroit et ne mettez jamais de secrets dans les instructions ou la base de connaissances d'un bot.
- Fichiers. Les fichiers téléversés sont contrôlés selon leur type et leur taille et lus comme du texte ; les documents Word sont analysés avec les entités externes désactivées.
Maintenance
Une courte routine pour garder l'installation en bonne santé.
Sauvegardes
Sauvegardez deux éléments : la base de données et le fichier **config/config.php** (il contient la clé qui déchiffre vos clés IA enregistrées). Les documents téléversés sont stockés dans la base de données ; une sauvegarde de la base couvre donc aussi la base de connaissances.
Mise à jour
- 1Faites une sauvegarde de la base de données.
- 2Téléversez les nouveaux fichiers par-dessus les anciens ; conservez
config/etstorage/. - 3Connectez-vous, ouvrez Infos système et cliquez sur Appliquer si des mises à jour sont listées.
- 4Appuyez une fois sur Ctrl+F5 pour actualiser la feuille de style.
Journaux
Les erreurs qui ne peuvent pas être montrées aux visiteurs sont écrites dans le journal d'erreurs PHP. Le journal d'audit du panneau enregistre les actions d'administration.
Règles Nginx
Les fichiers .htaccess protègent les dossiers internes sur Apache. Sur Nginx, ajoutez des règles équivalentes, par exemple :
location ~ ^/ai-chat-widget/(app|config|database|language|storage|_devs|_idea)/ { deny all; }
location ~* \.(sql|md|lock|log|json)$ { deny all; }Pour le streaming derrière Nginx, assurez-vous que proxy_buffering est désactivé pour api.php (l'application envoie déjà X-Accel-Buffering: no).
Limites d'hébergement importantes
upload_max_filesize et post_max_size de PHP limitent les téléversements de fichiers vers la base de connaissances. Un gros PDF peut nécessiter une memory_limit de 256 Mo ou plus. Le HTTPS sortant doit être autorisé pour les appels IA et les imports de pages web.
Aide et dépannage
Problèmes courants et solutions
Partez du symptôme.
| Symptôme | Que vérifier |
|---|---|
| Le widget n'apparaît pas | Le bot est Actif ; votre site figure dans Sites autorisés ; les règles « Où et quand » (motifs, appareils, horaires d'ouverture) autorisent cette page ; la politique de sécurité du contenu de votre site autorise le script ; ouvrez la page de test du bot depuis l'onglet Intégration pour comparer. |
| Le chat indique « origin not allowed » ou rien ne se charge | Ajoutez le domaine exact (sans https:// ni www.) à Sites autorisés. *.example.com couvre les sous-domaines. |
| « Sorry, something went wrong » | Le fournisseur a échoué. Ouvrez Fournisseurs IA, lancez la console de test et lisez l'erreur : clé incorrecte (401), pas de crédit ou de facturation (402/429), nom de modèle incorrect ou délai dépassé. Activez un fournisseur de secours pour plus de résilience. |
| Les réponses ignorent mes documents | Testez avec Essayer une recherche. La question et le document doivent être dans la même langue ; utilisez les mots des visiteurs ; vérifiez que le document est actif et attribué à ce bot ou à tous les bots ; vérifiez que le mode du bot n'est pas « Ne pas l'utiliser ». |
| Un PDF est refusé | C'est probablement un scan (sans texte sélectionnable) ou un fichier protégé par mot de passe. Exportez un PDF avec du texte ou collez le texte. |
| Une page web ne peut pas être importée | Utilisez une adresse https publique ; les pages derrière une connexion ne peuvent pas être lues ; pour une page d'intranet, activez « Autoriser les adresses d'un réseau privé » sur la page Base de connaissances. |
| Les e-mails n'arrivent pas | Envoyez le message de test sous Paramètres > E-mail et lisez l'erreur. Vérifiez le port et le chiffrement, que l'adresse d'expéditeur appartient à votre domaine, et le dossier des spams. Ajoutez des enregistrements SPF et DKIM pour votre domaine. |
| Pas de lien « Mot de passe oublié ? » | Le courrier sortant n'est pas configuré. Configurez Paramètres > E-mail. |
| J'ai perdu mon second facteur | Utilisez un code de récupération. Sinon, un autre administrateur réinitialise votre authentification à deux facteurs sous Utilisateurs. |
| Je me suis verrouillé hors du compte | Attendez 15 minutes. Avec un accès à la base de données, un administrateur peut lever le verrouillage dans la table users. |
| Le streaming semble défaillant | Lancez Tester le streaming dans Paramètres. Si tout arrive d'un coup, le serveur ou un proxy met les réponses en mémoire tampon : laissez le streaming désactivé ou corrigez la mise en mémoire tampon (voir Maintenance). |
| Les téléversements échouent | Augmentez upload_max_filesize et post_max_size dans PHP ; les limites sont de 600 Ko pour les fichiers texte et de 8 Mo pour les PDF et Word. |
| Un bandeau indique que des mises à jour de la base de données sont en attente | Ouvrez Infos système et cliquez sur Appliquer. |
| Les écrans semblent sans style après une mise à jour | Appuyez sur Ctrl+F5. |
| Page blanche ou erreur 500 | Consultez le journal d'erreurs PHP et vérifiez que PHP est en version 8.1 ou supérieure avec les extensions requises (Infos système). |
Comprendre les erreurs du fournisseur
| Message | Signification habituelle |
|---|---|
| 401 / unauthorized | La clé API est absente, incorrecte ou destinée à un autre service. |
| 402 / insufficient credit | Le compte n'a plus de crédit ou la facturation n'est pas configurée. |
| 404 / model not found | Le nom du modèle est incorrect ou le modèle n'est pas disponible pour votre compte. |
| 429 / rate limit | Trop de requêtes ou quota épuisé ; patientez ou relevez la limite auprès du fournisseur. |
| timeout | Le fournisseur a été trop lent ; réessayez ou augmentez le délai dans le profil. |
| private network | Le profil pointe vers une adresse locale : activez « Autoriser les adresses d'un réseau privé » pour ce profil uniquement s'il s'agit d'un modèle local. |
Questions fréquentes
Ai-je besoin d'un développeur pour l'utiliser ?
Non. Tout se configure dans le panneau, et chaque champ possède une icône d'aide. Un développeur n'est nécessaire que pour des intégrations inhabituelles.
Où sont conservées mes clés IA ?
Chiffrées dans votre base de données. Elles ne sont jamais envoyées au navigateur du visiteur ni écrites dans les journaux.
Combien l'IA va-t-elle me coûter ?
Le fournisseur vous facture directement les tokens. Utilisez le budget quotidien de tokens, une longueur de réponse courte et le mode « répondre uniquement à partir de la base de connaissances » pour garder des coûts prévisibles, et surveillez les tokens sur la page Statistiques.
Puis-je utiliser un modèle qui tourne sur mon propre ordinateur ou serveur ?
Oui. Utilisez le profil Ollama ou LM Studio et activez pour lui « Autoriser les adresses d'un réseau privé ».
Une installation peut-elle servir plusieurs sites ?
Oui. Ajoutez chaque site à la liste autorisée du bot, ou créez un bot par site. Le nombre de bots et de sites dépend de votre licence.
Que se passe-t-il si ma licence expire ?
L'application revient aux limites de la version Free. Les widgets existants continuent de fonctionner ; seule la création de nouveaux bots, sites et documents au-delà des limites Free est bloquée.
Puis-je modifier les textes du widget ?
Oui : l'onglet Textes, par langue. Les champs vides reviennent aux traductions intégrées.
Fonctionne-t-il avec les constructeurs de pages et les boutiques en ligne ?
Oui. C'est une simple ligne de script ; il fonctionne donc partout où vous pouvez modifier le pied de page ou ajouter un script. Un plugin WordPress est inclus.
Contact
Des questions, des suggestions, ou quelque chose ne fonctionne pas comme décrit ici ? Écrivez au développeur.