Spaces:
Running
Running
File size: 3,965 Bytes
84e07f0 f981512 8d45e13 f981512 5010813 f981512 56a81a0 81e1fd9 84e07f0 81e1fd9 84e07f0 99ca542 81e1fd9 acd8b76 62097fd acd8b76 62097fd acd8b76 81e1fd9 84e07f0 acd8b76 81e1fd9 9a58086 62097fd acd8b76 62097fd 81e1fd9 9a58086 84e07f0 acd8b76 0815875 acd8b76 84e07f0 acd8b76 81e1fd9 acd8b76 9a58086 acd8b76 9a58086 acd8b76 9a58086 84e07f0 62097fd 81e1fd9 62097fd 84e07f0 81e1fd9 62097fd 81e1fd9 84e07f0 62097fd 81e1fd9 62097fd 84e07f0 81e1fd9 84e07f0 62097fd 84e07f0 62097fd 84e07f0 81e1fd9 84e07f0 81e1fd9 84e07f0 81e1fd9 9a58086 84e07f0 62097fd 81e1fd9 9a58086 84e07f0 5010813 81e1fd9 |
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 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
TITLE = """<h1 align="center">Gemini Playground ✨</h1>"""
SUBTITLE = """<h2 align="center">Play with Gemini Pro and Gemini Pro Vision</h2>"""
import os
import time
import google.generativeai as genai
import gradio as gr
from dotenv import load_dotenv
# Cargar las variables de entorno desde el archivo .env
load_dotenv()
print("google-generativeai:", genai.__version__)
# Obtener la clave de la API de las variables de entorno
GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY")
# Verificar que la clave de la API esté configurada
if not GOOGLE_API_KEY:
raise ValueError("GOOGLE_API_KEY is not set in environment variables.")
# Configuración del modelo Gemini
generation_config = {
"temperature": 1,
"top_p": 0.95,
"top_k": 40,
"max_output_tokens": 8192,
"response_mime_type": "text/plain",
}
genai.configure(api_key=GOOGLE_API_KEY)
model = genai.GenerativeModel(
model_name="gemini-1.5-flash",
generation_config=generation_config
)
# Inicializar la sesión de chat
chat = model.start_chat(history=[])
# Función para transformar el historial de Gradio al formato de Gemini
def transform_history(history):
new_history = []
for chat_entry in history:
new_history.append({"parts": [{"text": chat_entry[0]}], "role": "user"})
new_history.append({"parts": [{"text": chat_entry[1]}], "role": "model"})
return new_history
# Función de respuesta que maneja el historial
def bot_response(
model_choice: str,
system_instruction: str,
text_prompt: str,
chatbot: list,
) -> Tuple[list, str]:
"""
Envía el mensaje al modelo, obtiene la respuesta y actualiza el historial.
"""
if not text_prompt.strip():
return chatbot, "Por favor, escribe un mensaje válido."
# Transformar el historial al formato que espera Gemini
transformed_history = transform_history(chatbot)
# Configurar el modelo
chat.history = transformed_history
# Enviar el mensaje y obtener la respuesta
response = chat.send_message(text_prompt)
response.resolve()
# Obtener el texto generado por el modelo
generated_text = response.text
# Actualizar el historial con la pregunta y la respuesta
chatbot.append((text_prompt, generated_text))
return chatbot, ""
# Componentes de la interfaz
chatbot_component = gr.Chatbot(label="Gemini", scale=2, height=300)
text_input_component = gr.Textbox(placeholder="Escribe un mensaje...", show_label=False, scale=8)
run_button_component = gr.Button(value="Enviar", variant="primary", scale=1)
model_dropdown_component = gr.Dropdown(
choices=["gemini-1.5-flash", "gemini-2.0-flash-exp", "gemini-1.5-pro"],
value="gemini-1.5-flash",
label="Selecciona el modelo",
scale=2
)
system_instruction_component = gr.Textbox(
placeholder="Escribe una instrucción para el sistema...",
label="Instrucción del sistema",
scale=8,
value="You are an assistant."
)
# Definir la interfaz
with gr.Blocks() as demo:
gr.HTML(TITLE)
gr.HTML(SUBTITLE)
with gr.Column():
model_dropdown_component.render()
chatbot_component.render()
with gr.Row():
text_input_component.render()
run_button_component.render()
with gr.Accordion("Instrucción del sistema", open=False):
system_instruction_component.render()
# Configurar eventos
run_button_component.click(
fn=bot_response,
inputs=[model_dropdown_component, system_instruction_component, text_input_component, chatbot_component],
outputs=[chatbot_component, text_input_component],
)
text_input_component.submit(
fn=bot_response,
inputs=[model_dropdown_component, system_instruction_component, text_input_component, chatbot_component],
outputs=[chatbot_component, text_input_component],
)
# Lanzar la aplicación
if __name__ == "__main__":
demo.queue(max_size=99).launch(debug=True, show_error=True)
|