LEXPRESA / app.py
sandrocalzada's picture
Update app.py
e243225 verified
raw
history blame
2.02 kB
import google.generativeai as genai
import gradio as gr
import numpy as np
import PIL.Image
import pandas as pd
import io
genai.configure(api_key="AIzaSyA7tPavobVN5_3-BJ0qhFT5HVjO4V19QWk")
def ImageChat(image):
# Configuración de la personalidad del sistema
system_prompt = "Sólo puedes responder en idioma español: Sí o No."
# Lista de preguntas preconfiguradas
questions = [
"¿La persona está utilizando auriculares?",
"¿La persona está utilizando capucha o algo que le cubra la cabeza?",
"¿Existe dinero como monedas o billetes que estén el piso?",
"¿La persona se encuentra interactuando con su teléfono móvil?"
]
# load model
model = genai.GenerativeModel("gemini-1.5-flash")
# check image file and convert to a Numpy array
try:
if isinstance(image, np.ndarray):
img = PIL.Image.fromarray(image)
else:
img = PIL.Image.open(io.BytesIO(image.read()))
except Exception as e:
return str(e)
# Initialize results list
results = []
# Process each question
for question in questions:
full_prompt = f"{system_prompt}\n\n{question}"
response = model.generate_content([full_prompt, img])
results.append(response.text)
# Create a DataFrame to display results as a table
df = pd.DataFrame({"Pregunta": questions, "Respuesta": results})
return df
# Define Gradio interface
preloaded_images = [
("chat_with_image.png", "Imagen Ejemplo 1"),
("chatwithimg_2.jpg", "Imagen Ejemplo 2"),
("chatwithimg3.png", "Imagen Ejemplo 3")
]
image_inputs = [gr.Image(label=label, source="upload", tool="editor", type="file") for _, label in preloaded_images]
app = gr.Interface(
ImageChat,
inputs=gr.inputs.Carousel(image_inputs, label="Selecciona una imagen"),
outputs=gr.Dataframe(headers=["Pregunta", "Respuesta"], label="Resultados"),
title="Análisis de Imagen",
theme="Taithrah/Minimal"
)
app.launch()