(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:
- Combien d'habitants compte Fribourg ?
- Est-ce que les vacances scolaires sont les mêmes dans tout le canton ?
- Comment puis-je obtenir un nouveau passeport ?
- Quel est le plus haut sommet fribourgeois?
- Quelle est la stratégie cantonale climatique ?
- Que fait le canton pour promouvoir les vélos ?
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.