import gradio as gr import google.generativeai as genai import os from dotenv import load_dotenv from gradio import Markdown import textwrap # Cargar variables de entorno load_dotenv() # Configurar la API de Google Gemini genai.configure(api_key=os.getenv("GEMINI_API_KEY")) def upload_to_gemini(path, mime_type=None): """Sube el archivo a Google Gemini.""" file = genai.upload_file(path, mime_type=mime_type) print(f"Uploaded file '{file.display_name}' as: {file.uri}") return file def to_markdown(text): text = text.replace('•', ' *') return Markdown(textwrap.indent(text, '> ', predicate=lambda _: True)) def identify_plant(image, model_name, temperature, top_p, top_k, max_output_tokens): if image is None: return "Por favor, carga una imagen." # Subir la imagen a Gemini uploaded_file = upload_to_gemini(image, mime_type="image/jpeg") # Configurar el modelo seleccionado generation_config = { "temperature": temperature, "top_p": top_p, "top_k": top_k, "max_output_tokens": max_output_tokens, "response_mime_type": "text/plain", } model = genai.GenerativeModel( model_name=model_name, generation_config=generation_config, ) # Crear una sesión de chat para interactuar con Gemini chat_session = model.start_chat( history=[ { "role": "user", "parts": [ uploaded_file, # El archivo subido a Gemini """ Analiza esta imagen de una planta e identifica su especie. Proporciona la siguiente información: 1. Nombre común 2. Nombre científico 3. Familia 4. Características principales 5. Cuidados básicos 6. Simbolismo histórico (Este apartado analizará el significado cultural e histórico de la planta, explorando cómo se ha utilizado en mitologías, rituales o medicinas tradicionales en diferentes culturas. ¡Una manera de conectar con el pasado a través de la naturaleza!) 7. Compatibilidad emocional (Esta sección explora cómo la planta podría influir en el ambiente emocional de un espacio. Basado en la cromoterapia, la energía vital de la planta, o su apariencia, podríamos descubrir qué emociones o vibraciones aporta, lo cual podría interesar a los usuarios que buscan mejorar el bienestar personal o la atmósfera en sus hogares.) 8. Interacción con la tecnología (Una visión futurista sobre cómo la planta podría tener un papel en el avance de tecnologías emergentes, como la biotecnología, la ingeniería genética, o incluso su rol en ambientes que dependen de IA. ¡Una conexión interesante entre la naturaleza y el futuro tecnológico!) """, ], }, ] ) # Enviar el mensaje y obtener la respuesta response = chat_session.send_message("Analiza la planta") # Usar to_markdown para formatear la respuesta return to_markdown(response.text) # Configurar la interfaz de Gradio css = """ """ with gr.Blocks(css=css) as iface: gr.HTML("