joedac-netvigie commited on
Commit
dfc18ca
·
1 Parent(s): 3c61e1f

remove loader

Browse files
Files changed (1) hide show
  1. ui/gradio_ui.py +31 -61
ui/gradio_ui.py CHANGED
@@ -9,9 +9,25 @@ class GradioUI:
9
 
10
  def search_products(self, query: str, max_results: int) -> str:
11
  """
12
- :param query:
13
- :param max_results:
14
- :return:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  """
16
  return self.food_service.search_products(query, max_results)
17
 
@@ -40,72 +56,26 @@ class GradioUI:
40
  )
41
 
42
  search_btn = gr.Button("🤖 Search", variant="primary", size="lg")
43
-
44
- # Message de statut
45
- with gr.Row():
46
- status_msg = gr.Markdown("", visible=False)
47
-
48
  search_output = gr.Markdown()
49
 
50
- def search_products(query: str, max_results: int):
51
- """
52
- Recherche des produits alimentaires dans la base de données OpenFoodFacts.
53
-
54
- Cette fonction MCP (Model Context Protocol) effectue une recherche intelligente
55
- de produits alimentaires en analysant la requête utilisateur avec Mistral AI
56
- pour extraire le nom du produit et la marque, puis interroge la base DuckDB.
57
-
58
- Args:
59
- query (str): Terme de recherche saisi par l'utilisateur.
60
- Peut contenir un nom de produit, une marque, ou une combinaison.
61
- Exemples: "pepito", "biscuits lu", "pizza picard", "yaourt danone"
62
- max_results (int): Nombre maximum de résultats à retourner.
63
- Doit être compris entre 1 et 20.
64
-
65
- Returns:
66
- str: Résultats de recherche formatés en Markdown contenant :
67
- - Informations nutritionnelles (Nutri-Score, Eco-Score, NOVA)
68
- - Liste des ingrédients et additifs
69
- - Allergènes potentiels
70
- - Analyse détaillée par Mistral AI
71
-
72
- Raises:
73
- Exception: En cas d'erreur de connexion à la base de données
74
- ou d'échec de l'analyse par Mistral AI.
75
-
76
- Note:
77
- La fonction utilise une approche hybride combinant l'IA générative (Mistral)
78
- pour l'analyse de requête et une base de données structurée (DuckDB/Parquet)
79
- pour la recherche de produits, optimisant ainsi précision et performance.
80
-
81
- Example:
82
- >>> search_products("coca cola zero", 3)
83
- "# 🥤 Coca-Cola Zero\\n\\n**Nutri-Score:** B\\n**Ingrédients:** ..."
84
- """
85
- yield (
86
- gr.Markdown("🔍 **Searching for products...** Please wait.", visible=True),
87
- gr.Markdown("")
88
- )
89
-
90
- result = self.search_products(query, max_results)
91
-
92
- yield (
93
- gr.Markdown("", visible=False),
94
- gr.Markdown(result)
95
- )
96
-
97
  search_btn.click(
98
- search_products,
99
  inputs=[search_input, max_results],
100
- outputs=[status_msg, search_output],
101
- show_progress="full"
102
  )
103
 
104
  search_input.submit(
105
- search_products,
106
  inputs=[search_input, max_results],
107
- outputs=[status_msg, search_output],
108
- show_progress="full"
109
  )
110
 
 
 
 
 
 
 
 
 
111
  return demo
 
9
 
10
  def search_products(self, query: str, max_results: int) -> str:
11
  """
12
+ Recherche des produits alimentaires dans la base de données OpenFoodFacts.
13
+
14
+ Cette fonction MCP (Model Context Protocol) effectue une recherche intelligente
15
+ de produits alimentaires en analysant la requête utilisateur avec Mistral AI
16
+ pour extraire le nom du produit et la marque, puis interroge la base DuckDB.
17
+
18
+ Args:
19
+ query (str): Terme de recherche saisi par l'utilisateur.
20
+ Peut contenir un nom de produit, une marque, ou une combinaison.
21
+ Exemples: "pepito", "biscuits lu", "pizza picard", "yaourt danone"
22
+ max_results (int): Nombre maximum de résultats à retourner.
23
+ Doit être compris entre 1 et 20.
24
+
25
+ Returns:
26
+ str: Résultats de recherche formatés en Markdown contenant :
27
+ - Informations nutritionnelles (Nutri-Score, Eco-Score, NOVA)
28
+ - Liste des ingrédients et additifs
29
+ - Allergènes potentiels
30
+ - Analyse détaillée par Mistral AI
31
  """
32
  return self.food_service.search_products(query, max_results)
33
 
 
56
  )
57
 
58
  search_btn = gr.Button("🤖 Search", variant="primary", size="lg")
 
 
 
 
 
59
  search_output = gr.Markdown()
60
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  search_btn.click(
62
+ fn=self.search_products,
63
  inputs=[search_input, max_results],
64
+ outputs=[search_output]
 
65
  )
66
 
67
  search_input.submit(
68
+ fn=self.search_products,
69
  inputs=[search_input, max_results],
70
+ outputs=[search_output]
 
71
  )
72
 
73
+ gr.Markdown("""
74
+ ### 💡 Exemples de recherches
75
+ - `nutella` - Recherche par nom de produit
76
+ - `pizza picard` - Recherche par produit + marque
77
+ - `yaourt sans lactose` - Recherche avec critères spécifiques
78
+ - `biscuits lu bio` - Recherche avec labels
79
+ """)
80
+
81
  return demo