(Cet article de blog fait suite Ă  cet article focalisé sur ZurichGPT et ses versions lausannoises et genevoises)

Tu peux désormais poser à FribourgGPT toute question sur l' Etat de Fribourg. Et obtenir une réponse directe à ta question, et pas uniquement une collection de liens de pages potentiellement pertinentes.

Le bot va pouvoir renvoyer des rĂ©ponses utiles, pour autant que le contenu du site puisse couvrir la requĂȘte. Pas nĂ©cessaire de poser sa question en français ou allemand (les langues de fr.ch), d'autres langues fonctionnent Ă©galement, le bot rĂ©pondant dans la mĂȘme langue.

Alors, quelles questions poser? Voici quelques exemples:

Ce ne sont là que quelques exemples, n'hésite pas à poser tes propres questions.

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é FribourgGPT

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 caractĂšres 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 rĂ©cemment procĂ©dĂ© Ă  quelques ajustements. 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 concluants 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é à l'Etat de Fribourg et il sert principalement d'étude de faisabilité.

Cependant, nous sommes ravis du potentiel de cette technologie pour améliorer l'accÚs à l'information publique, et nous espérons que tu prendras plaisir à explorer Fribourg avec FribourgGPT.

Photo de Janesca sur Unsplash