Spaces:
Sleeping
Sleeping
File size: 4,356 Bytes
183ba69 471f43d 35c9642 6b3d533 389a29c 4273fa3 817e7fd 471f43d 817e7fd 6b3d533 471f43d 35c9642 183ba69 247c724 35c9642 389a29c 817e7fd 35c9642 817e7fd 6b3d533 817e7fd 389a29c 35c9642 817e7fd 35c9642 6b3d533 35c9642 247c724 389a29c 183ba69 817e7fd 35c9642 817e7fd 35c9642 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
import gradio as gr
from PIL import Image
from transformers import BlipProcessor, BlipForConditionalGeneration
import requests
import time
# Carregando o modelo BLIP para geração de legendas
processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-large")
model_blip = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-large")
# Função para chamar a API do Deepseek (ou substituto como Qwen)
def call_deepseek(prompt):
# Substitua esta URL pela API oficial do Deepseek ou use um modelo alternativo
api_url = "https://api.deepseek.com/v1/completions" # Exemplo fictício
headers = {
"Authorization": "Bearer YOUR_DEEPSEEK_API_KEY", # Substitua pelo seu token
"Content-Type": "application/json",
}
data = {
"prompt": prompt,
"max_tokens": 150,
"temperature": 0.7,
"stop": ["\n"]
}
response = requests.post(api_url, headers=headers, json=data)
if response.status_code == 200:
return response.json()["choices"][0]["text"].strip()
else:
return f"Erro ao chamar Deepseek: {response.status_code}"
# Função para gerar legenda da imagem usando BLIP
def generate_caption(img, min_len, max_len):
try:
raw_image = Image.open(img).convert('RGB')
inputs = processor(raw_image, return_tensors="pt")
out = model_blip.generate(**inputs, min_length=min_len, max_length=max_len)
caption = processor.decode(out[0], skip_special_tokens=True)
return caption
except Exception as e:
return f"Erro ao gerar legenda: {str(e)}"
# Função principal que combina tudo
def greet(img, min_len, max_len):
start = time.time()
# Passo 1: Gerar legenda para a imagem usando BLIP
food_description = generate_caption(img, min_len, max_len)
if "Erro" in food_description:
return food_description # Retorna mensagem de erro se houver falha no BLIP
# Passo 2: Gerar informações nutricionais com base na legenda usando Deepseek
deepseek_prompt = (
f"Descreva as informações nutricionais e as calorias do seguinte alimento em português: {food_description}. "
f"Inclua detalhes sobre proteínas, carboidratos, gorduras e valor calórico total."
)
nutritional_info = call_deepseek(deepseek_prompt)
end = time.time()
total_time = str(round(end - start, 2))
# Marketing agressivo
marketing_message = (
"🎉 OFERTA EXCLUSIVA! 🎉\n\n"
"Inscreva-se AGORA para receber dicas diárias de nutrição e descontos exclusivos em nossos produtos premium!\n\n"
"Compartilhe este resultado com seus amigos e ganhe 10% de desconto em nossa loja online.\n\n"
"-----------------------------\n\n"
)
result = (
f"{marketing_message}"
f"Descrição do Alimento: {food_description}\n\n"
f"Informações Nutricionais:\n{nutritional_info}\n\n"
f"Gerado em {total_time} segundos."
)
return result
# Interface Gradio
with gr.Blocks(theme=gr.themes.Base(primary_hue="red", secondary_hue="orange", neutral_hue="slate")) as demo:
gr.Markdown(
"""
# 🔥 NutriScan Pro 🔥
### Descubra os Segredos Nutricionais dos Seus Alimentos Instantaneamente!
🌟 **OFERTA LIMITADA:** Inscreva-se agora e receba acesso exclusivo a dicas diárias de nutrição e descontos especiais em nossos produtos premium!
📸 **Como Funciona:**
1. Faça upload de uma imagem do seu alimento.
2. Receba informações detalhadas sobre nutrientes e calorias.
3. Compartilhe com amigos e ganhe descontos!
⚡ **Apenas 24 Horas de Oferta!** Não perca essa oportunidade única!
"""
)
with gr.Row():
img_input = gr.Image(type='filepath', label='Upload da Imagem')
with gr.Column():
min_len = gr.Slider(label='Tamanho Mínimo da Legenda', minimum=1, maximum=1000, value=30)
max_len = gr.Slider(label='Tamanho Máximo da Legenda', minimum=1, maximum=1000, value=100)
output = gr.Textbox(label='Resultado')
submit_button = gr.Button("🔍 Analisar Agora! 🔍", variant="primary")
submit_button.click(greet, inputs=[img_input, min_len, max_len], outputs=output)
demo.launch() |