DHEIVER commited on
Commit
6b3d533
·
verified ·
1 Parent(s): 35c9642

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -38
app.py CHANGED
@@ -1,20 +1,32 @@
1
  import gradio as gr
2
  from PIL import Image
3
  from transformers import BlipProcessor, BlipForConditionalGeneration
 
4
  import time
5
 
6
  # Carregando o modelo BLIP para geração de legendas
7
  processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-large")
8
  model_blip = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-large")
9
 
10
- # Base de dados nutricionais simples (em português)
11
- nutritional_database = {
12
- "bife": {"calorias": 250, "proteinas": 26, "carboidratos": 0, "gorduras": 15},
13
- "feijão": {"calorias": 120, "proteinas": 8, "carboidratos": 20, "gorduras": 1},
14
- "arroz": {"calorias": 130, "proteinas": 2.7, "carboidratos": 28, "gorduras": 0.3},
15
- "salada": {"calorias": 30, "proteinas": 1, "carboidratos": 5, "gorduras": 0.2},
16
- "tomate": {"calorias": 18, "proteinas": 0.9, "carboidratos": 3.9, "gorduras": 0.2},
17
- }
 
 
 
 
 
 
 
 
 
 
 
18
 
19
  # Função para gerar legenda da imagem usando BLIP
20
  def generate_caption(img, min_len, max_len):
@@ -27,33 +39,6 @@ def generate_caption(img, min_len, max_len):
27
  except Exception as e:
28
  return f"Erro ao gerar legenda: {str(e)}"
29
 
30
- # Função para gerar informações nutricionais com base na descrição
31
- def generate_nutritional_info(food_description):
32
- try:
33
- # Dividir a descrição em palavras-chave
34
- keywords = food_description.lower().split(", ")
35
-
36
- total_calories = 0
37
- nutritional_summary = []
38
-
39
- for keyword in keywords:
40
- if keyword in nutritional_database:
41
- info = nutritional_database[keyword]
42
- total_calories += info["calorias"]
43
- nutritional_summary.append(
44
- f"- {keyword.capitalize()}: {info['calorias']} calorias, "
45
- f"{info['proteinas']}g proteínas, {info['carboidratos']}g carboidratos, "
46
- f"{info['gorduras']}g gorduras"
47
- )
48
-
49
- if not nutritional_summary:
50
- return "Desculpe, não encontramos informações nutricionais detalhadas para este alimento."
51
-
52
- summary = "\n".join(nutritional_summary)
53
- return f"Informações Nutricionais:\n{summary}\n\nTotal de Calorias: {total_calories} kcal"
54
- except Exception as e:
55
- return f"Erro ao gerar informações nutricionais: {str(e)}"
56
-
57
  # Função principal que combina tudo
58
  def greet(img, min_len, max_len):
59
  start = time.time()
@@ -63,8 +48,12 @@ def greet(img, min_len, max_len):
63
  if "Erro" in food_description:
64
  return food_description # Retorna mensagem de erro se houver falha no BLIP
65
 
66
- # Passo 2: Gerar informações nutricionais com base na legenda
67
- nutritional_info = generate_nutritional_info(food_description)
 
 
 
 
68
 
69
  end = time.time()
70
  total_time = str(round(end - start, 2))
@@ -80,7 +69,7 @@ def greet(img, min_len, max_len):
80
  result = (
81
  f"{marketing_message}"
82
  f"Descrição do Alimento: {food_description}\n\n"
83
- f"{nutritional_info}\n\n"
84
  f"Gerado em {total_time} segundos."
85
  )
86
 
 
1
  import gradio as gr
2
  from PIL import Image
3
  from transformers import BlipProcessor, BlipForConditionalGeneration
4
+ import requests
5
  import time
6
 
7
  # Carregando o modelo BLIP para geração de legendas
8
  processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-large")
9
  model_blip = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-large")
10
 
11
+ # Função para chamar a API do Deepseek (ou substituto como Qwen)
12
+ def call_deepseek(prompt):
13
+ # Substitua esta URL pela API oficial do Deepseek ou use um modelo alternativo
14
+ api_url = "https://api.deepseek.com/v1/completions" # Exemplo fictício
15
+ headers = {
16
+ "Authorization": "Bearer YOUR_DEEPSEEK_API_KEY", # Substitua pelo seu token
17
+ "Content-Type": "application/json",
18
+ }
19
+ data = {
20
+ "prompt": prompt,
21
+ "max_tokens": 150,
22
+ "temperature": 0.7,
23
+ "stop": ["\n"]
24
+ }
25
+ response = requests.post(api_url, headers=headers, json=data)
26
+ if response.status_code == 200:
27
+ return response.json()["choices"][0]["text"].strip()
28
+ else:
29
+ return f"Erro ao chamar Deepseek: {response.status_code}"
30
 
31
  # Função para gerar legenda da imagem usando BLIP
32
  def generate_caption(img, min_len, max_len):
 
39
  except Exception as e:
40
  return f"Erro ao gerar legenda: {str(e)}"
41
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  # Função principal que combina tudo
43
  def greet(img, min_len, max_len):
44
  start = time.time()
 
48
  if "Erro" in food_description:
49
  return food_description # Retorna mensagem de erro se houver falha no BLIP
50
 
51
+ # Passo 2: Gerar informações nutricionais com base na legenda usando Deepseek
52
+ deepseek_prompt = (
53
+ f"Descreva as informações nutricionais e as calorias do seguinte alimento em português: {food_description}. "
54
+ f"Inclua detalhes sobre proteínas, carboidratos, gorduras e valor calórico total."
55
+ )
56
+ nutritional_info = call_deepseek(deepseek_prompt)
57
 
58
  end = time.time()
59
  total_time = str(round(end - start, 2))
 
69
  result = (
70
  f"{marketing_message}"
71
  f"Descrição do Alimento: {food_description}\n\n"
72
+ f"Informações Nutricionais:\n{nutritional_info}\n\n"
73
  f"Gerado em {total_time} segundos."
74
  )
75