(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:

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