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()