(Cet article de blog fait suite Ă cet article focalisé sur ZurichGPT, premier test appliquĂ© au site de Zurich, ayant donnĂ© lieu Ă cette version lausannoise que nous dĂ©crivons ici.)
Tu peux désormais poser à LausanneGPT toute question sur Lausanne, et obtenir une réponse directe à ta question, pas seulement une collection de liens de pages potentiellement pertinentes.
Le bot aura tendance Ă renvoyer des rĂ©ponses utiles, pour autant que le contenu du site puisse couvrir la requĂȘte. Et pas nĂ©cessaire de poser sa question en français, d'autres langues fonctionnent Ă©galement, le robot rĂ©pondant dans la mĂȘme langue.
Alors, quelles questions poser? Voici quelques exemples:
- Combien d'habitants compte Lausanne?
- Qui est syndic de Lausanne?
- Quelles sont les dates d'ouverture des piscines en plein air en 2023?
- Quelles sont les dates de vacances scolaires 2023?
- Que faire pour obtenir un nouveau passeport?
- Quel est le plus haut bâtiment lausannois?
- Comment puis-je recycler mes pneus?
- Que fait Lausanne pour la protection du climat?
- Pierre de Coubertin a-t-il vécu à Lausanne?
- Comment puis-je devenir pompier?
- Y a-t-il du nucléaire dans le mix électrique lausannois?
- Où puis-je louer un vélo?
- Pourquoi dois-je payer des impôts?
Et ce ne sont lĂ que quelques exemples de questions Ă poser.
Le bot n'est pas infaillible, et il est fortement recommandé de vérifier les réponses avec les pages officielles fournies pour s'assurer de leur exactitude.
Au niveau technique: comment a été développé LausanneGPT
Inspiré par un article de blog de Supabase partagé sur notre Slack, voici ce que nous avons fait:
Récupérer et indexer le contenu:
- Pour le backend, nous avons utilisé NestJS.
- Le frontend est une application react trÚs simple, qui envoie la question au backend et affiche le résultat.
- Nous avons mis en place une base de données utilisant PostgreSQL et l'extension pgvector.
- Nous avons parcouru l'intégralité du site web de maniÚre responsable en utilisant SimpleCrawler et avons introduit les données dans la base de données.
- Nous avons extrait le contenu pertinent grùce à Cheerio et l'avons intégré dans la base de données.
- Nous avons ensuite envoyé ces extraits de texte aux API d'intégration d'OpenAI et avons stocké les intégrations reçues dans la base de données.
Interroger le contenu:
- DÚs réception d'une question, nous l'envoyons aux API d'intégration d'OpenAI pour obtenir un vecteur d'intégration.
- Nous utilisons ce vecteur pour rechercher dans la base de données, extrayant des extraits de textes et URLs.
- Un prompt est créé, incluant les extraits jusqu'à ce que la taille limite des soit atteinte.
- Ces informations sont ensuite envoyées à l'API d'OpenAI "createChatCompletion" et le résultat est renvoyé au navigateur avec Server Sent Events.
- Tous les liens utiles trouvés dans notre base de données sont aussi affichés pour référence et source.
Nous avons procĂ©dĂ© Ă quelques ajustements pour amĂ©lioration ultĂ©rieure. Nous n'utilisons dĂ©sormais que les premiers extraits de contenu pour le prompt, en remplissant la fin avec les liens et le titre uniquement. Cela donne un peu plus de contexte Ă ChatGPT, mais apparemment pas autant que le contenu entier. Au dĂ©part, nous avons essayĂ© d'envoyer uniquement des liens, mais cela n'a pas toujours fourni des rĂ©sultats satisfaisants et a mĂȘme conduit Ă des rĂ©ponses "hallucinĂ©es", puisque gpt-3.5 ne rĂ©sout pas rĂ©ellement tous ces liens.
Attention, cet outil n'est pas affilié à Lausanne et il sert principalement d'étude de faisabilité.
Cependant, nous sommes ravis du potentiel de cette technologie pour améliorer l'accessibilité à l'information publique, et nous espérons que vous prendrez plaisir à explorer Lausanne avec LausanneGPT.
Photo de IvĂĄn Guerrero sur Unsplash