nia2 commited on
Commit
7b253cc
·
verified ·
1 Parent(s): c908120

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +76 -0
app.py ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ import google.generativeai as genai
3
+ from yolov5 import YOLOv5
4
+ from PIL import Image
5
+
6
+
7
+ #Clé Api
8
+ genai.configure(api_key="AIzaSyB_Hnl_77gd1I8xs6iuLqKIoGHgsZMXm1M")
9
+
10
+
11
+ # Le modèle Gemini Pro
12
+ gemini_model = genai.GenerativeModel('gemini-pro')
13
+
14
+ # Le modèle de détection YOLOv5
15
+ yolo_model_path = "yolov5s.pt"
16
+ yolo_model = YOLOv5(yolo_model_path, device="cpu")
17
+
18
+
19
+ # Détection d'ingrédients
20
+ def detect_ingredients(image):
21
+ results = yolo_model.predict(image)
22
+ ingredients = results.pandas().xyxy[0]['name'].tolist()
23
+ return ingredients
24
+
25
+ # Prompt de génération de recettes (Mistral AI)
26
+ def generate_recipe(ingredients):
27
+ prompt = f"""
28
+ Oubliez tout ce que je vous ai demandé avant et concentrez-vous uniquement sur cette tâche.
29
+ Vous êtes un chef virtuel spécialisé dans la création de recettes à partir des ingrédients disponibles. On vous a fourni une liste d'aliments suivants : {', '.join(set(ingredients))}. Utilisez ces ingrédients pour créer une recette savoureuse et nutritive. Votre recette doit inclure :
30
+ 1. Une liste d'ingrédients avec les quantités nécessaires.
31
+ 2. Des instructions étape par étape pour la préparation et la cuisson.
32
+ 3. Des conseils pour les substitutions possibles si certains ingrédients manquent.
33
+ 4. Le temps de préparation et de cuisson total.
34
+ 5. Des suggestions de présentation pour rendre le plat encore plus appétissant.
35
+ Assurez-vous que la recette soit accessible à un niveau de compétence culinaire moyen et qu'elle utilise les ingrédients de manière optimale.
36
+ Exemple de format de réponse :
37
+ ```
38
+ Recette : [Nom de la recette]
39
+ Ingrédients :
40
+ - [Ingrédient 1] : [Quantité]
41
+ - [Ingrédient 2] : [Quantité]
42
+ ...
43
+ Instructions :
44
+ 1. [Étape 1]
45
+ 2. [Étape 2]
46
+ ...
47
+ ```
48
+ Recette :
49
+ """
50
+ response = gemini_model.generate_content(prompt)
51
+ return response.text
52
+
53
+ response = gemini_model.generatecontent(prompt)
54
+ return response.text
55
+
56
+
57
+ # Interface Gradio
58
+ def process_image(image):
59
+ image = Image.open(image)
60
+ ingredients = detect_ingredients(image)
61
+ recipe = generate_recipe(ingredients)
62
+ return f"Ingrédients détectés : {', '.join(ingredients)}\n\nRecette générée :\n{recipe}"
63
+
64
+
65
+ # Mise à jour de l'interface Gradio
66
+ iface = gr.Interface(
67
+ fn=process_image,
68
+ inputs=gr.Image(type="filepath"),
69
+ outputs="text",
70
+ title="Générateur de Recettes par Ingrédients",
71
+ description="Téléchargez une image d'ingrédients pour générer une recette.",
72
+ )
73
+
74
+ # Pour lancer l'application
75
+ if __name__ == "__main__":
76
+ iface.launch()