CoolFace
Apppublic

jcharlet/rimay_search

sourceHugging Facemitupdated 3y agoView on Hugging Face
0likes
visualize.py234 linesDownload Raw Back to visualization
1from ast import List2import os3import streamlit as st4from src.models.predict_model import (5    run_query_with_qa_with_sources,6    COL_STATE_OF_THE_UNION,7    COL_OPEN_MINDFULNESS,8    ResponseSize,9    remove_embeddings,10)11 12 13# Define function to run query and display results14def run_query(15    query,16    mocked=False,17    collection_name=COL_OPEN_MINDFULNESS,18    response_size=ResponseSize.MEDIUM,19):20    if mocked:21        answer = """La méthode en trois temps pour intégrer ses émotions consiste à reconnaître et accueillir la présence de l'émotion, à respirer avec et à répondre harmonieusement en état d'observateur abstrait."""22        sources_json = [23            {24                "id": "3.5.20.01",25                "document": "6. L’intégration des émotions avec la méthode en trois temps\n\nLes trois méthodes d’intégration des pensées (dans l’ouverture relâchée, dans l’observateur abstrait, avec et sans étiquetage) sont susceptibles d’être transposées à l’intégration des émotions, qui sont, comme nous l’avons dit, des pensées « énergétisées », investies d’une charge affective. Vous extrapolerez donc ces trois méthodes, l’approche est exactement la même.\nL’entrainement progressif consiste à commencer à s’entrainer en situation facile avec les pensées habituelles. Puis, lorsque l’on s’est habitué à intégrer les pensées habituelles il devient plus facile d’intégrer d’abord des petites émotions, puis progressivement de fortes émotions et finalement toutes les émotions.\nMaintenant nous allons voir une pratique spécifique d’intégration et de libération des émotions dans la pleine présence. Elle a trois étapes :\n\nLa première étape consiste à reconnaître et accueillir la présence de l’émotion.\nLa deuxième étape consiste à respirer avec l’émotion. En respirant nous incorporons l’émotion et la laissons se décharger dans l’ouvert.\nLa troisième étape consiste, apaisé après la décharge de l’émotion, à rester en l’état d’observateur abstrait en harmonie avec la situation.\n\n Nous allons développer et expérimenter ces trois étapes :\nPremière étape : la reconnaissance et l’accueil\nDescriptif\nLe propos de cet exercice est de reconnaitre la présence de l’émotion. Habituellement, nous ne repérons pas l’arrivée d’une émotion. Si nous pouvions voir l’émotion dès qu’elle apparaît, nous pourrions ne pas nous laisser emporter par son énergie. Pour ce faire, « le tableau de bord corporel » présenté dans la première étape est très utile. Ce que nous avons alors nommé « le baromètre corporel » nous permet de déceler l’émergence d’une émotion à partir de nos sensations corporelles, en étant attentifs à la sensation de notre corps.\nExercice (Durée : 5 mn)\n\nComme d’habitude : installez-vous dans une posture confortable, les sens tout ouverts, détendus dans le regard panoramique, ça respire.\n……\n\n\nDans cet état : sentez votre corps, observez-le. Observez ce qui s’y passe et déceler y les signes d’émergence d’une émotion.\n……\n\n\nNotez particulièrement comment est votre respiration, comment bat votre cœur, les petites sensations dans votre ventre, gorge ou ailleurs, traduisant la présence d’une émotion. Cette attention à la sensation du corps vous aide à reconnaitre l’apparition d’une émotion.\n……\n\n\nSi vous n’avez dans l’instant aucune émotion décelable vous pouvez évoquer une situation émotionnelle de votre vie récente. Vous trouverez certainement facilement une situation qui vous a provoqué une émotion. Evoquez-la et sentez l’émotion.\n……\n\n\nA présent ayant reconnu la présence d’une émotion, vous l’accueillez. Plutôt que de vouloir la suivre ou la fuir, vous accueillez et acceptez simplement sa présence, sans jugement. Vous sentez pleinement son énergie, sa chaleur : cela peut se manifester de différentes façons suivant la nature de l’émotion. Se peut être « la moutarde qui monte au nez », une production accrue d’adrénaline, une respiration plus intense, un rythme cardiaque accéléré… Quoi qu’il en soit, vous accueillez simplement cette émotion et son énergie avec bienveillance, dans une sorte de « oui » qui est comme un sourire bienveillant, un accueil sans jugement.\n……\n\n\nNe vous demandez pas s’il est bien que cette émotion soit là ou pas. Restez simplement dans un état d’attention relâché, accueillant l’émotion, la laissant venir.\n……\nSi cela vous aide, vous pouvez comme pour les pensées avoir recours à la reconnaissance verbale avec l’étiquetage : « émotion » ou encore à la simple reconnaissance non verbale. Cette reconnaissance permet un accueil neutre et bienveillant des émotions, permet d’entrer en amitié avec ce que l’on porte d’émotionnel et de conflictuel en soi.\n……\n\nDeuxième étape : Respirer dans l’émotion, l’incorporant et la laissant se décharger\nDescriptif\nLa deuxième étape consiste à respirer dans l’émotion en l’incorporant et la laissant se décharger dans l’ouvert. Ayant accueilli et accepté la présence de l’émotion nous utilisons l’alternance du cycle respiratoire pour incorporer et laisser se décharger l’émotion. Particulièrement dans l’inspiration nous accueillons son énergie et l’incorporons, faisons corps avec elle. Dans l’expiration nous nous relâchons complètement et laissons cette énergie se décharger dans l’ouvert.\nExercice (Durée : 5 mn)\n\nToujours installé dans la posture confortable, les sens tout ouverts et détendu dans le regard panoramique, ça respire naturellement.\n……\n\n\nA présent, après avoir accueilli l’émotion, vous vous familiarisez avec sa présence et entrez en son énergie sans peur ni résistance. Vous restez dans son ressenti en respirant dans sa sensation.\n……\n\n\nVous incorporez l’émotion, vous vous laissez aller dans la sensation de son énergie, faisant de plus en plus corps avec elle.\n……\n\n\nCette incorporation de l’émotion se vit associée à la respiration, à la pulsation du souffle. Vous vous laissez aller dans celle-ci au rythme de l’inspiration et de l’expiration. Particulièrement, vous associez l’accueil avec l’inspiration et le lâcher prise dans l’ouvert avec l’expiration.\n……\n\n\nEn respirant ainsi, vous vous détendez et vous vous abandonnez dans l’énergie de l’émotion. Dans le va-et-vient de la respiration, progressivement, vous incorporez l’émotion et la laissez se décharger.\n……\n\n\nVous continuez ainsi laissant l’énergie de l’émotion être telle qu’elle est. Dans le lâcher prise associé à la détente la distance entre vous et l’émotion se réduit et finalement disparaît, laissant simplement son énergie dans l’ouvert. L’émotion devient alors une énergie qui n’est pas possédée, une énergie libre qui rayonne et se décharge.\n……\n\n\nEn pratiquant ainsi le temps nécessaire, l’intensité émotionnelle diminue, retombe et finalement se dissout. Le reliquat de son énergie n’est plus conflictuel et peut même devenir source d’une intelligence qui va animer la troisième étape.\n……\n\nTroisième étape : Rester apaisé dans l’état d’observateur abstrait en harmonie avec la situation\nDescriptif\nDans cette troisième étape, une fois que l’émotion s’est déchargée nous  restons tel quel dans la simple présence ouverte globale, en état d’observateur abstrait. Nous sommes alors en harmonie avec la situation et pouvons, si la situation le demande, y répondre de façon adaptée.\n Exercice (Durée : 5 à 10 mn)\n\nToujours installé confortablement, les sens tout ouverts et détendu dans le regard panoramique, ça respire.\n……\n\n\nPour cette troisième étape d’intégration de l’émotion, vous restez apaisé dans l’ouvert, en l’état d’observateur abstrait. Lors de la deuxième étape la charge émotionnelle s’est déchargée, le corps et l’esprit sont maintenant relâchés. Vous restez au repos, tel quel, dans la simple présence ouverte de l’observateur abstrait.\n……\n\n\nNaturellement et tranquillement, ça respire. Vous êtes un, apaisé dans la situation.\n……\n\n\nDans cet état de pleine présence, attentive, ouverte et empathique, vous êtes en harmonie avec la situation et son intelligence, et ainsi, une réponse adaptée peut émerger, que ce soit de dire ou faire quelque chose ou de ne rien dire ni rien faire.\n……\n\n\nAu départ, quand l’émotion était virulente, vous auriez réagi émotionnellement. Mais à présent, l’émotion s’étant déchargée, vous pouvez répondre de façon harmonieuse et empathique, en percevant la situation sur un mode beaucoup plus ouvert, réaliste et bienveillant. Cette réponse harmonieuse peut prendre n’importe quelle forme. Vous êtes libres de répondre de façon appropriée et intelligente, adaptée aux circonstances. Dans tous les cas, la réponse harmonieuse se fera dans l’empathie et la bienveillance plutôt que dans l’agression du conflit émotionnel.\n\n",26                "metadata": {27                    "sort_chapter": 3,28                    "sort_step_nb": 5,29                    "sort_section_nb": 20,30                    "sort_paragraph_nb": 1,31                    "page_title": "PRATIQUE 32",32                    "contents_to_embed_length": 1178,33                    "url": "https://www.openmindfulness.net/20-etape-5-p32/",34                    "source": "3.5.20.01",35                },36            },37            {38                "id": "3.5.20.02",39                "document": " Nous allons développer et expérimenter ces trois étapes :\n\nPremière étape : la reconnaissance et l’accueil\nDescriptif\nLe propos de cet exercice est de reconnaitre la présence de l’émotion. Habituellement, nous ne repérons pas l’arrivée d’une émotion. Si nous pouvions voir l’émotion dès qu’elle apparaît, nous pourrions ne pas nous laisser emporter par son énergie. Pour ce faire, « le tableau de bord corporel » présenté dans la première étape est très utile. Ce que nous avons alors nommé « le baromètre corporel » nous permet de déceler l’émergence d’une émotion à partir de nos sensations corporelles, en étant attentifs à la sensation de notre corps.\nExercice (Durée : 5 mn)\n\nComme d’habitude : installez-vous dans une posture confortable, les sens tout ouverts, détendus dans le regard panoramique, ça respire.\n……\n\n\nDans cet état : sentez votre corps, observez-le. Observez ce qui s’y passe et déceler y les signes d’émergence d’une émotion.\n……\n\n\nNotez particulièrement comment est votre respiration, comment bat votre cœur, les petites sensations dans votre ventre, gorge ou ailleurs, traduisant la présence d’une émotion. Cette attention à la sensation du corps vous aide à reconnaitre l’apparition d’une émotion.\n……\n\n\nSi vous n’avez dans l’instant aucune émotion décelable vous pouvez évoquer une situation émotionnelle de votre vie récente. Vous trouverez certainement facilement une situation qui vous a provoqué une émotion. Evoquez-la et sentez l’émotion.\n……\n\n\nA présent ayant reconnu la présence d’une émotion, vous l’accueillez. Plutôt que de vouloir la suivre ou la fuir, vous accueillez et acceptez simplement sa présence, sans jugement. Vous sentez pleinement son énergie, sa chaleur : cela peut se manifester de différentes façons suivant la nature de l’émotion. Se peut être « la moutarde qui monte au nez », une production accrue d’adrénaline, une respiration plus intense, un rythme cardiaque accéléré… Quoi qu’il en soit, vous accueillez simplement cette émotion et son énergie avec bienveillance, dans une sorte de « oui » qui est comme un sourire bienveillant, un accueil sans jugement.\n……\n\n\nNe vous demandez pas s’il est bien que cette émotion soit là ou pas. Restez simplement dans un état d’attention relâché, accueillant l’émotion, la laissant venir.\n……\nSi cela vous aide, vous pouvez comme pour les pensées avoir recours à la reconnaissance verbale avec l’étiquetage : « émotion » ou encore à la simple reconnaissance non verbale. Cette reconnaissance permet un accueil neutre et bienveillant des émotions, permet d’entrer en amitié avec ce que l’on porte d’émotionnel et de conflictuel en soi.\n……\n\nDeuxième étape : Respirer dans l’émotion, l’incorporant et la laissant se décharger\nDescriptif\nLa deuxième étape consiste à respirer dans l’émotion en l’incorporant et la laissant se décharger dans l’ouvert. Ayant accueilli et accepté la présence de l’émotion nous utilisons l’alternance du cycle respiratoire pour incorporer et laisser se décharger l’émotion. Particulièrement dans l’inspiration nous accueillons son énergie et l’incorporons, faisons corps avec elle. Dans l’expiration nous nous relâchons complètement et laissons cette énergie se décharger dans l’ouvert.\nExercice (Durée : 5 mn)\n\nToujours installé dans la posture confortable, les sens tout ouverts et détendu dans le regard panoramique, ça respire naturellement.\n……\n\n\nA présent, après avoir accueilli l’émotion, vous vous familiarisez avec sa présence et entrez en son énergie sans peur ni résistance. Vous restez dans son ressenti en respirant dans sa sensation.\n……\n\n\nVous incorporez l’émotion, vous vous laissez aller dans la sensation de son énergie, faisant de plus en plus corps avec elle.\n……\n\n\nCette incorporation de l’émotion se vit associée à la respiration, à la pulsation du souffle. Vous vous laissez aller dans celle-ci au rythme de l’inspiration et de l’expiration. Particulièrement, vous associez l’accueil avec l’inspiration et le lâcher prise dans l’ouvert avec l’expiration.\n……\n\n\nEn respirant ainsi, vous vous détendez et vous vous abandonnez dans l’énergie de l’émotion. Dans le va-et-vient de la respiration, progressivement, vous incorporez l’émotion et la laissez se décharger.\n……\n\n\nVous continuez ainsi laissant l’énergie de l’émotion être telle qu’elle est. Dans le lâcher prise associé à la détente la distance entre vous et l’émotion se réduit et finalement disparaît, laissant simplement son énergie dans l’ouvert. L’émotion devient alors une énergie qui n’est pas possédée, une énergie libre qui rayonne et se décharge.\n……\n\n\nEn pratiquant ainsi le temps nécessaire, l’intensité émotionnelle diminue, retombe et finalement se dissout. Le reliquat de son énergie n’est plus conflictuel et peut même devenir source d’une intelligence qui va animer la troisième étape.\n……\n\nTroisième étape : Rester apaisé dans l’état d’observateur abstrait en harmonie avec la situation\nDescriptif\nDans cette troisième étape, une fois que l’émotion s’est déchargée nous  restons tel quel dans la simple présence ouverte globale, en état d’observateur abstrait. Nous sommes alors en harmonie avec la situation et pouvons, si la situation le demande, y répondre de façon adaptée.\n Exercice (Durée : 5 à 10 mn)\n\nToujours installé confortablement, les sens tout ouverts et détendu dans le regard panoramique, ça respire.\n……\n\n\nPour cette troisième étape d’intégration de l’émotion, vous restez apaisé dans l’ouvert, en l’état d’observateur abstrait. Lors de la deuxième étape la charge émotionnelle s’est déchargée, le corps et l’esprit sont maintenant relâchés. Vous restez au repos, tel quel, dans la simple présence ouverte de l’observateur abstrait.\n……\n\n\nNaturellement et tranquillement, ça respire. Vous êtes un, apaisé dans la situation.\n……\n\n\nDans cet état de pleine présence, attentive, ouverte et empathique, vous êtes en harmonie avec la situation et son intelligence, et ainsi, une réponse adaptée peut émerger, que ce soit de dire ou faire quelque chose ou de ne rien dire ni rien faire.\n……\n\n\nAu départ, quand l’émotion était virulente, vous auriez réagi émotionnellement. Mais à présent, l’émotion s’étant déchargée, vous pouvez répondre de façon harmonieuse et empathique, en percevant la situation sur un mode beaucoup plus ouvert, réaliste et bienveillant. Cette réponse harmonieuse peut prendre n’importe quelle forme. Vous êtes libres de répondre de façon appropriée et intelligente, adaptée aux circonstances. Dans tous les cas, la réponse harmonieuse se fera dans l’empathie et la bienveillance plutôt que dans l’agression du conflit émotionnel.\n\n",40                "metadata": {41                    "sort_chapter": 3,42                    "sort_step_nb": 5,43                    "sort_section_nb": 20,44                    "sort_paragraph_nb": 2,45                    "page_title": "PRATIQUE 32",46                    "contents_to_embed_length": 1000,47                    "url": "https://www.openmindfulness.net/20-etape-5-p32/",48                    "source": "3.5.20.02",49                },50            },51            {52                "id": "3.5.20.03",53                "document": "Première étape : la reconnaissance et l’accueil\n\nDescriptif\nLe propos de cet exercice est de reconnaitre la présence de l’émotion. Habituellement, nous ne repérons pas l’arrivée d’une émotion. Si nous pouvions voir l’émotion dès qu’elle apparaît, nous pourrions ne pas nous laisser emporter par son énergie. Pour ce faire, « le tableau de bord corporel » présenté dans la première étape est très utile. Ce que nous avons alors nommé « le baromètre corporel » nous permet de déceler l’émergence d’une émotion à partir de nos sensations corporelles, en étant attentifs à la sensation de notre corps.\nExercice (Durée : 5 mn)\n\nComme d’habitude : installez-vous dans une posture confortable, les sens tout ouverts, détendus dans le regard panoramique, ça respire.\n……\n\n\nDans cet état : sentez votre corps, observez-le. Observez ce qui s’y passe et déceler y les signes d’émergence d’une émotion.\n……\n\n\nNotez particulièrement comment est votre respiration, comment bat votre cœur, les petites sensations dans votre ventre, gorge ou ailleurs, traduisant la présence d’une émotion. Cette attention à la sensation du corps vous aide à reconnaitre l’apparition d’une émotion.\n……\n\n\nSi vous n’avez dans l’instant aucune émotion décelable vous pouvez évoquer une situation émotionnelle de votre vie récente. Vous trouverez certainement facilement une situation qui vous a provoqué une émotion. Evoquez-la et sentez l’émotion.\n……\n\n\nA présent ayant reconnu la présence d’une émotion, vous l’accueillez. Plutôt que de vouloir la suivre ou la fuir, vous accueillez et acceptez simplement sa présence, sans jugement. Vous sentez pleinement son énergie, sa chaleur : cela peut se manifester de différentes façons suivant la nature de l’émotion. Se peut être « la moutarde qui monte au nez », une production accrue d’adrénaline, une respiration plus intense, un rythme cardiaque accéléré… Quoi qu’il en soit, vous accueillez simplement cette émotion et son énergie avec bienveillance, dans une sorte de « oui » qui est comme un sourire bienveillant, un accueil sans jugement.\n……\n\n\nNe vous demandez pas s’il est bien que cette émotion soit là ou pas. Restez simplement dans un état d’attention relâché, accueillant l’émotion, la laissant venir.\n……\nSi cela vous aide, vous pouvez comme pour les pensées avoir recours à la reconnaissance verbale avec l’étiquetage : « émotion » ou encore à la simple reconnaissance non verbale. Cette reconnaissance permet un accueil neutre et bienveillant des émotions, permet d’entrer en amitié avec ce que l’on porte d’émotionnel et de conflictuel en soi.\n……\n\nDeuxième étape : Respirer dans l’émotion, l’incorporant et la laissant se décharger\nDescriptif\nLa deuxième étape consiste à respirer dans l’émotion en l’incorporant et la laissant se décharger dans l’ouvert. Ayant accueilli et accepté la présence de l’émotion nous utilisons l’alternance du cycle respiratoire pour incorporer et laisser se décharger l’émotion. Particulièrement dans l’inspiration nous accueillons son énergie et l’incorporons, faisons corps avec elle. Dans l’expiration nous nous relâchons complètement et laissons cette énergie se décharger dans l’ouvert.\nExercice (Durée : 5 mn)\n\nToujours installé dans la posture confortable, les sens tout ouverts et détendu dans le regard panoramique, ça respire naturellement.\n……\n\n\nA présent, après avoir accueilli l’émotion, vous vous familiarisez avec sa présence et entrez en son énergie sans peur ni résistance. Vous restez dans son ressenti en respirant dans sa sensation.\n……\n\n\nVous incorporez l’émotion, vous vous laissez aller dans la sensation de son énergie, faisant de plus en plus corps avec elle.\n……\n\n\nCette incorporation de l’émotion se vit associée à la respiration, à la pulsation du souffle. Vous vous laissez aller dans celle-ci au rythme de l’inspiration et de l’expiration. Particulièrement, vous associez l’accueil avec l’inspiration et le lâcher prise dans l’ouvert avec l’expiration.\n……\n\n\nEn respirant ainsi, vous vous détendez et vous vous abandonnez dans l’énergie de l’émotion. Dans le va-et-vient de la respiration, progressivement, vous incorporez l’émotion et la laissez se décharger.\n……\n\n\nVous continuez ainsi laissant l’énergie de l’émotion être telle qu’elle est. Dans le lâcher prise associé à la détente la distance entre vous et l’émotion se réduit et finalement disparaît, laissant simplement son énergie dans l’ouvert. L’émotion devient alors une énergie qui n’est pas possédée, une énergie libre qui rayonne et se décharge.\n……\n\n\nEn pratiquant ainsi le temps nécessaire, l’intensité émotionnelle diminue, retombe et finalement se dissout. Le reliquat de son énergie n’est plus conflictuel et peut même devenir source d’une intelligence qui va animer la troisième étape.\n……\n\nTroisième étape : Rester apaisé dans l’état d’observateur abstrait en harmonie avec la situation\nDescriptif\nDans cette troisième étape, une fois que l’émotion s’est déchargée nous  restons tel quel dans la simple présence ouverte globale, en état d’observateur abstrait. Nous sommes alors en harmonie avec la situation et pouvons, si la situation le demande, y répondre de façon adaptée.\n Exercice (Durée : 5 à 10 mn)\n\nToujours installé confortablement, les sens tout ouverts et détendu dans le regard panoramique, ça respire.\n……\n\n\nPour cette troisième étape d’intégration de l’émotion, vous restez apaisé dans l’ouvert, en l’état d’observateur abstrait. Lors de la deuxième étape la charge émotionnelle s’est déchargée, le corps et l’esprit sont maintenant relâchés. Vous restez au repos, tel quel, dans la simple présence ouverte de l’observateur abstrait.\n……\n\n\nNaturellement et tranquillement, ça respire. Vous êtes un, apaisé dans la situation.\n……\n\n\nDans cet état de pleine présence, attentive, ouverte et empathique, vous êtes en harmonie avec la situation et son intelligence, et ainsi, une réponse adaptée peut émerger, que ce soit de dire ou faire quelque chose ou de ne rien dire ni rien faire.\n……\n\n\nAu départ, quand l’émotion était virulente, vous auriez réagi émotionnellement. Mais à présent, l’émotion s’étant déchargée, vous pouvez répondre de façon harmonieuse et empathique, en percevant la situation sur un mode beaucoup plus ouvert, réaliste et bienveillant. Cette réponse harmonieuse peut prendre n’importe quelle forme. Vous êtes libres de répondre de façon appropriée et intelligente, adaptée aux circonstances. Dans tous les cas, la réponse harmonieuse se fera dans l’empathie et la bienveillance plutôt que dans l’agression du conflit émotionnel.\n\n",54                "metadata": {55                    "sort_chapter": 3,56                    "sort_step_nb": 5,57                    "sort_section_nb": 20,58                    "sort_paragraph_nb": 3,59                    "page_title": "PRATIQUE 32",60                    "contents_to_embed_length": 991,61                    "url": "https://www.openmindfulness.net/20-etape-5-p32/",62                    "source": "3.5.20.03",63                },64            },65            {66                "id": "3.5.24.01",67                "document": "Le conseil pour intégrer les émotions dans la pleine présence\n\nLe conseil pour intégrer les émotions dans la pleine présence est de les reconnaitre puis de les incorporer et de les laisser se libérer d’elles-mêmes.\n\n\nLe résumé de l’intégration des émotions dans la pleine présence\n\nLa pratique de la pleine présence dans les émotions nous apprend à les intégrer dans une méthode à trois temps :\n1- Reconnaître les émotions\n2- Les incorporer et les laisser se décharger en respirant avec elles\n3- Répondre harmonieusement en état d’observateur abstrait, en une présence sans saisie en laquelle une réponse adaptée et bienveillante émerge naturellement.\n",68                "metadata": {69                    "sort_chapter": 3,70                    "sort_step_nb": 5,71                    "sort_section_nb": 24,72                    "sort_paragraph_nb": 1,73                    "page_title": "Conseil et résumé pour l'intégration des émotions",74                    "contents_to_embed_length": 103,75                    "url": "https://www.openmindfulness.net/24-etape-5-conseil-et-resume-emotions/",76                    "source": "3.5.24.01",77                },78            },79        ]80        metadata = {81            "cost": {82                "Total Cost (USD)": 0.23,83                "Successful Requests": 2,84            },85            "tokens": {86                "Total Tokens": 11618,87                "Prompt Tokens": 10650,88                "Completion Tokens": 968,89            },90        }91    else:92        answer, sources_json, metadata = run_query_with_qa_with_sources(93            query, collection_name=collection_name, response_size=response_size94        )95 96    sources = format_sources(sources_json, mocked, collection_name)97    # = "Total Tokens: 2854 \nPrompt Tokens: 2688 \nCompletion Tokens: 166 \nSuccessful Requests: 2 \nTotal Cost (USD): $0.05708"98    return answer, sources, metadata, sources_json99 100 101def format_sources(sources_json, mocked, collection_name) -> list[str]:102    documents = {}103    sources_markdown = ""104    if collection_name == COL_STATE_OF_THE_UNION:105        for source in sources_json:106            documents[source["id"]] = {107                "title": source["id"],108                "contents": f"{source['document']}",109            }110 111    elif mocked or collection_name == COL_OPEN_MINDFULNESS:112        for source in sources_json:113            metadata = source["metadata"]114            url = metadata["url"]115 116            if url in documents:117                doc = documents[url]118                doc["contents"] = (119                    doc["contents"] + f"\n\n[...]\n\n {source['document']}"120                )121            else:122                title = f"Chapitre {metadata['sort_chapter']}"123                if metadata["sort_section_nb"] != 0:124                    title += f" Étape {metadata['sort_step_nb']}"125                if metadata["page_title"] != "":126                    title += f": {metadata['page_title']}"127 128                doc = {"title": title, "contents": f"{source['document']}"}129 130            documents[url] = doc131 132    return documents133 134 135def make_grid(cols, rows):136    grid = [0] * cols137    for i in range(cols):138        with st.container():139            grid[i] = st.columns(rows)140    return grid141 142 143# Define main function for Streamlit app144def main():145    st.title("Moteur de recherche - pleine présence")146    st.write(147        "Ce moteur de recherche vous permet de trouver des réponses à vos questions sur la pleine présence."148    )149    st.write(150        "Il utilise les contenus du site [Open Mindfulness](https://www.openmindfulness.net/)."151    )152    st.divider()153    user_type = st.sidebar.selectbox("Type d'utilisateur", ["yogi", "admin"])154    if user_type == "yogi":155        is_mocked = False156        # is_mocked = True157        collection_name = COL_OPEN_MINDFULNESS158        response_size = ResponseSize.SMALL159 160        openai_token = st.sidebar.text_input("OpenAPI Token", type="password")161    else:162        st.sidebar.title("Settings")163 164        # # Add language selector to sidebar165        # language = st.sidebar.selectbox("Language", ["English", "French"])166        is_mocked = st.sidebar.selectbox("is mocked", [True, False])167 168        if is_mocked:169            collection_name = COL_OPEN_MINDFULNESS170            response_size = ResponseSize.SMALL171        else:172            openai_token = st.sidebar.text_input("OpenAPI Token", type="password")173            if openai_token != "":174                collection_name = st.sidebar.selectbox(175                    "Collection name", [COL_OPEN_MINDFULNESS, COL_STATE_OF_THE_UNION]176                )177                response_size = st.sidebar.selectbox(178                    "Response size",179                    [ResponseSize.SMALL, ResponseSize.MEDIUM, ResponseSize.LARGE],180                )181 182    if not is_mocked and openai_token != "":183        os.environ["OPENAI_API_KEY"] = openai_token184        185    if not is_mocked and openai_token == "":186        st.info(187            "Veuillez pour commencer fournir une clé OpenAI dans le menu de gauche pour lancer une requête. Voir ce [tuto](https://www.commentcoder.com/api-chatgpt/#comment-avoir-sa-cl%C3%A9-dapi-chatgpt-)."188        )189        remove_embeddings()190    else:191        if collection_name == COL_STATE_OF_THE_UNION:192            query = st.text_input(193                "Enter your query here",194                "What did the president say about Justice Breyer ?",195            )196        elif collection_name == COL_OPEN_MINDFULNESS:197            query = st.text_input(198                "Entrez votre requête ci-dessous",199                "Comment intégrer ses émotions avec la méthode en trois temps ?",200            )201 202        if st.button("🔍 Recherche") and query != "":203            answer, sources, metadata, sources_json = run_query(204                query,205                mocked=is_mocked,206                collection_name=collection_name,207                response_size=response_size,208            )209            st.header("Réponse")210            st.markdown(answer)211            st.header("Sources")212            tab1, tab2 = st.tabs(["Sources", "data"])213            # tab1.markdown(sources)214            for url in sources:215                with tab1.expander(sources[url]["title"]):216                    st.markdown(f"[{url}]({url})")217                    st.markdown(sources[url]["contents"])218            tab2.json(sources_json)219            st.header("Metadata")220            for k, v in metadata.items():221                # st.subheader(k)222                grid = make_grid(1, len(v.items()))223                for index, (k2, v2) in enumerate(v.items()):224                    if k2 == "Total Cost (USD)":225                        v2 = f"${v2:.2f}"226                    elif user_type == "yogi":227                        break228                    grid[0][index].metric(k2, v2)229 230 231# Run main function232if __name__ == "__main__":233    main()234