Important
PIERRE est actuellement en version 0.15.x
(consulter les releases) avec une qualité de base de connaissances estimée à 10 %
. Par ailleurs, la documentation ci-dessous est en cours de rédaction. En cas de difficultés, créer une issue
ou envoyer un email à [email protected].
Important
PIERRE ne connait pas les spécificités des bailleurs (ex : la taille de leur parc, les coordonnées des gardiens, les procédures internes, etc.). Tous ces éléments peuvent néanmoins lui être aisément « enseignés » en modifiant l'équivalent d'un document Word (cf. Contribuer à PIERRE).
PIERRE est une intelligence artificielle (IA) open source, plurilingue et multicanale au service du mouvement HLM et plus précisément de ses candidats et locataires.
Plus concrètement encore, PIERRE c'est à la fois :
- Un chatbot (ou mieux : un resolution bot) open source qui répond à 100 % des questions de « premier niveau » des locataires et demandeurs HLM, disponible sur le Web (démonstration) et par SMS.
- Une base de connaissances en open data (consultation), utilisable indépendamment du chatbot et indispensable à la mise en oeuvre de toutes approches « Retrieval Augmented Generation » (RAG) via un LLM.
→ Télécharger une présentation de PIERRE (PDF · 2,7 Mo)
- Contribuer à PIERRE
- Fonctionnement + architecture de PIERRE
- Comment déployer PIERRE ?
- Personnaliser PIERRE (self-hosting)
- Installer PIERRE sur votre site web (self-hosting)
- Paramétrer PIERRE pour l'utiliser par SMS (self-hosting)
- Modifier le modèle de langage/LLM utilisé (self-hosting)
- Administrer PIERRE (self-hosting)
- License
- Pour contribuer à la base de connaissances de PIERRE, consultez CONTRIBUTING.md (c'est aussi simple que de modifier un document Word, et cela profite automatiquement à l'ensemble du mouvement HLM).
- Pour contribuer au code-source du chatbot/LLM, créez une
issue
dans GitHub et suivez les us et coutumes des projets open source.
Les releases
de PIERRE sont consultables ici.
- Un utilisateur pose une question à PIERRE via le web ou par SMS.
- Une première passe de LLM/IA corrige et augmente la requête initiale.
- Une deuxième passe de LLM/IA s'assure de la validité et sécurité de la requête initiale (ex : impossible d'insulter PIERRE ou d'adresser une question sans lien avec le logement).
- La requête validée et augmentée est vectorisée, puis interroge la base de connaissances de PIERRE.
- Une dernière passe de LLM/IA génère une réponse sur la base des résultats retournés puis réordonnancés de la base de connaissances.
- La réponse est retournée quelques secondes plus tard à l'utilisateur via le web ou par SMS.
- La conversation se poursuit jusqu'à satisfaction de l'utilisateur (goto 1).
PIERRE utilise « trois (passes de) LLM » dans cet ordre successif :
-
Un modèle de génération d'
objets
qui transforme la requête de l'utilisateur en une « requête augmentée » (en utilisant des techniques de type HyDE ou Stepback). Tous les LLM ne peuvent générer de telsobjets
. De fait, le modèle utilisé à ce jour ne peut pas être modifié (gpt-4o-mini-2024-07-18
). En conséquence, il est indispensable — lorsque l'on auto-héberge PIERRE — de disposer d'une clef d'API OpenAI. -
Un modèle de génération d'
embeddings
qui transforme la « requête augmentée » en vecteurs de valeurs numériques qui sont ensuite utilisés pour rechercher les éléments de réponse les plus pertinents dans la base de connaissances de PIERRE. À ce jour, ce modèle ne peut pas être modifié (text-embedding-3-large
). En conséquence, il est indispensable — lorsque l'on auto-héberge PIERRE — de disposer d'une clef d'API OpenAI. -
Un modèle de génération de
textes
qui génére les réponses textuelles aux utilisateurs. Lorsque l'on auto-héberge PIERRE — et sur le principe du « Bring Your Own LLM Key/Model » (BYOK) — il est possible de choisir le modèle utilisé (Mistral, Anthropic, Cohere...) et ce, en modifiant le fichier de configuation (cf. infra). Par défaut, PIERRE utilisegpt-4o-mini-2024-07-18
d'OpenAI.
Note
PIERRE propose à ce jour deux modalités d'interaction : via le Web (démonstration) ou par SMS (Text-to-Text). À court terme, PIERRE va également investiguer une interaction Voice-to-Voice.
En réponse au nouveau plan de numérotation mis en place par l'ARCEP en 2023 (avec l'introduction des numéros commerciaux 09 3x xx xx xx) et pour proposer aux entreprises une solution universelle pour converser avec leurs clients, les opérateurs téléphoniques français ont lançé en 2023 (déploiement opérationnel en octobre 2024) une nouvelle offre de SMS conversationnel à destination des entreprises (dite Time2chat
) qui (i) permet de s'affranchir des plateformes propriétaires (WhatsApp, Telegram, Messenger, etc.) utilisées au maximum par 50 % de la population française et (ii) une instantanéité et délivrabilité exceptionnelles (100 % des téléphones disposent nativement du SMS).
Principales caratéristiques de Time2chat
(en savoir plus via l'ARCEP ou via Orange) :
- Une conversation est une série de SMS entre une entreprise et un utilisateur.
- Elle dure maximum 24h et le nombre de SMS échangés durant cette période est illimité.
- Elle peut être initiée par l'entreprise ou l’utilisateur.
- Language:
Javascript
- Framework:
Hono
(withBun
runtime) - Database + Vectorstore:
SQLite3
(extended withsqlite-vec
) - Deployment:
Kamal
(withDocker
) - LLM: « Bring Your Own LLM Key/Model » (BYOK)
- SMS:
Time2Chat
viaCM
Déployer PIERRE sur un serveur génére des coûts (minimes) :
- La location d'un serveur (par exemple
CX22
d'Hetzner) : env. €10 par mois. - L'usage d'un LLM via une API, soit (sur la base d'OpenAI utilisée par défaut) :
– Génération de vecteurs : $0.13 / MTokens avectext-embedding-3-large
– Génération de textes : $0,15 (input) et $0,60 (output) / MTokens avecgpt-4o-mini
- (Optionnellement) Les conversations SMS :
– Location d'un numéro de téléphone : €10 par mois
– Envoi de SMS : €0.09 par conversation (= SMS illimités par fenêtre de 24h)
Avantages :
- Ne jamais avoir à se soucier de serveurs et d'API
- Bénéficier tout le temps (24h sur 24) de la toute dernière version de PIERRE
Adresser un email à [email protected].
Les instructions ci-après sont pour Windows
+WSL
(sous-système Windows pour Linux).
- Installer
WSL
et vérifier sa bonne installation (instructions). - Installer
Bun
(≥1.1.34
) et vérifier sa bonne installation (instructions). - Forker le présent dépôt.
- Lancer
bun install
dans votre terminal pour installer les dépendances. - Renommer le fichier
.env.example
en.env.production
et compléter le. - Lancer PIERRE avec
bun dev
. - Et voilà : PIERRE est accessible à http://localhost:3000 et répond à vos questions !
Pour déployer PIERRE sur votre propre serveur, il est indispensable d'être parvenu à le faire fonctionner en local (cf. supra).
- Installer
Docker Desktop
et le lancer (instructions).Docker
gérera la conteneurisation. - Lancer
gem install kamal
pour installerKamal
(≥2.3.0
) qui gérera le déploiement (instructions). - Disposer d'un compte
GitHub
et générer une clef.GitHub
sera le registre de conteneurs lors du déploiement. - Disposer d'un VPS (par exemple
CX22
d'Hetzner) et être en capacité de s'y connecter viassh
(avec une clef ou mot de passe). - Finaliser les modifications du fichier
.env.production
que vous avez créé précédemment. - Saississez dans votre terminal
dotenvx run -f .env.production -- kamal setup
et patientez quelques minutes (dotenvx run -f .env.production --
est indispensable pour interpoler les variables d'environnement). - Et voilà, PIERRE est accessible à l'adresse IP de votre serveur.
- Étapes suivantes (optionnelles et décrites ci-dessous) :
– Placer votre IP derrière un proxy pour le servir via un domaine
– Déployer PIERRE sur un second serveur de tests
– Personnaliser PIERRE
– Faire fonctionner PIERRE par SMS
– Afficher PIERRE sur votre site internet ou extranet-locataire
PIERRE — et notamment sa base de connaissances — évolue régulièrement et suit la convention semver
. Pour le mettre à jour :
- Consulter les releases pour connaitre les modifications et les éventuels breaking changes.
- Mettez à jour votre fork.
- Saississez
dotenvx run -f .env.production -- kamal deploy
dans votre terminal (ou le raccourcibun production:deploy
).
Pour tester en conditions réelles les mises à jour et nouveautés de PIERRE :
- Disposer d'un second VPS et être en capacité de s'y connecter via
ssh
(avec une clef ou mot de passe). - Dupliquer
.env.production
en.env.staging
et modifier le (a priori uniquement l'IP). - Lancer
dotenvx run -f .env.staging -- kamal setup
pour déployer la première fois. - Lancer
dotenvx run -f .env.staging -- kamal deploy
pour redéployer (ou le raccourcibun staging:deploy
).
Note
Il est très fortement recommandé que les environnements de production
et staging
aient le même système d'exploitation (Ubuntu, Debian, etc.) et la même architecture de processeur (x86).
Note
Dans les instructions ci-dessous, nous considérons un bailleur social fictif nommé Pierre Habitat
dont le site institutionnel est accessible à pierre-habitat.fr
et qui a déployé sa propre version de PIERRE à l'adresse/IP 180.81.82.83
, et le scénario en_agence
.
- Dans le répertoire
./assets
, dupliquer le dossierpierre-ia.org
et le nommerpierre-habitat.fr
. Les consignes suivantes s'appliquent à ce nouveau répertoire. - Supprimer les sous-répertoires
/dist
,/fonts
,/scripts
,/tailwind
. - Créer une icône
system.svg
et remplacer la précédente. Cette icône est celle qui apparait dans l'interface du chatbot (au dessus de « Bonjour 👋 »). - Générer les icônes qui permettront d'ajouter votre chatbot sur l'écran d'accueil des smartphones de vos utilisateurs et remplacer celles dans le dossier
icons
. Conservez la structure du répertoire et le nommage des fichiers (automatique). - Modifier
config.ts
:
–id
avecpierre-habitat.fr
–context.default.greeting
qui est le message d'accueil de votre chatbot
–context.default.examples
qui sont les exemples proposés après votre message d'accueil
–context.en_agence
pour créer des scénarios/personnalités supplémentaires. - Modifier dans
manifest.json
:
–short_name
par le nom souhaité de votre chatbot
–start_url
parhttps://180.81.82.83/?config=pierre-habitat.fr&context=en_agence
- Et voilà, votre chabot personnalisé est disponible à :
– http://localhost:3000/?config=pierre-habitat.fr
– http://localhost:3000/?config=pierre-habitat.fr&context=en_agence
Si vous avez à ce stade personnalisé visuellement votre chatbot (cf. supra), et bien qu'il affiche des icônes et les salutations de votre organisme, il ne se présente PAS encore comme le chatbot de votre organisme (essayez en lui demandant qui il est !).
Pour modifier cela, modifier dans le fichier config.ts
:
context.default.persona
qui définit l'identité et la personnalité du chatbotcontext.default.audience
qui définit le contexte dans lequel le chabot doit considérer son interlocuteur
Note
Pour faciliter la lecture et manipulation du fichier config.ts
dans VSCode, ou plus généralement activer le word wrap : utilisez le raccourci Alt
+ z
(Windows) ou ⌥
+ z
(Mac).
Important
Pour installer PIERRE sur votre site internet, il est indispensable de disposer d'une version fonctionnelle de PIERRE installée sur un VPS.
<script
crossorigin="anonymous"
src="http://180.81.82.83/assets/pierre-ia.org/dist/js/widget.js"
></script>
<p
id="pierre-ia"
data-url="http://180.81.82.83"
data-configuration="pierre-habitat.fr"
data-context="default"
style="
right: 20px;
bottom: 20px;
color: #000;
font-size: 30px;
font-weight: bold;
padding: 2px 12px;
background-color: #fff;
border-radius: 8px;
border: 4px solid black;
box-shadow: 2px 2px 6px #00000080;"
>
iA?
</p>
avec :
iA?
: le nom d'affichage du bouton (libre à vous de le modifier)style
: le style CSS du bouton (libre à vous de le modifier)180.81.82.83
dans l'URL du script le domaine/IP du serveur où le script est accessibledata-url
: le domaine/IP (sans slash de fin) du serveur où PIERRE est accessibledata-context
: le scénario (ou la personnalité) qu'utilise PIERREdata-configuration
: le nom de domaine de votre organisme qui est également le nom du répertoire que vous avez créé plus tôt dans./assets
(cf. supra) oupierre-ia.org
pour la version par défaut.
- Obtenir un numéro de téléphone compatible
- Paramétrer votre webhook
- Modifier
phone
dans votre fichierconfig.ts
avec votre numéro de téléphone
TODO/À FINALISER
Important
Il est très fortement recommandé de disposer d'une version fonctionnelle de PIERRE en local avant de changer le modèle de langage (LLM) et ce, pour être en mesure d'effectuer des tests. En effet, modifier le modèle de langage peut avoir quelques effets sur la qualité et vitesse des réponses de PIERRE.
Pour modifier le modèle de génération de textes
, il suffit de :
- Modifier
model
dans votre fichierconfig.ts
par la valeur souhaitée - Renseigner la clef d'API correspondante dans les variables d'environnement (
.env.production
)
PIERRE permet – à ce stade – l'usage des principaux modèles de langage, à savoir : Anthropic
, Cohere
, Google
, Mistral
et OpenAI
.
Si vous hébergez PIERRE :
- Rendez-vous à l'adresse https://180.81.82.83/a (à remplacer par votre domaine/IP).
- Saisissez (la première fois)
[email protected]
et le mot de passe contenu dans la variable d'environnementAUTH_PASSWORD
. - Vous pouvez désormais créer autant d'utilisateurs que nécessaire (n'oubliez pas de transmettre les mots de passe !) qui pourront modifier les utilisateurs ou l'encyclopédie, consulter les conversations ou les statistiques, et utiliser « l'aide de camp ».
Le code-source du présent dépôt est sous license GNU Affero General Public License Version 3. La base de connaissances (dossier knowledge
) et utils/knowledge/datastore.sqlite
sont sous license Creative Commons BY-NC-SA 4.0.
Copyright (c) 2024-aujourd'hui, Charles-Henri Arnould/BECKREL ([email protected]) et les contributeurs.