Spaces:
Sleeping
Sleeping
File size: 4,748 Bytes
44b6564 |
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 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
import torch
from transformers import pipeline
import gradio as gr
import time
# Cargar el modelo al iniciar
def load_model():
print("🚀 Cargando Mistral-7B-Grok...")
model = pipeline(
"text-generation",
model="HuggingFaceH4/mistral-7b-grok",
torch_dtype=torch.float16,
device_map="auto",
max_new_tokens=256,
temperature=0.7,
do_sample=True
)
print("✅ Modelo cargado exitosamente!")
return model
# Cargar modelo
model = load_model()
# Función para generar respuestas educativas
def cosmobot_response(message, history):
"""Genera respuesta usando Mistral-7B con contexto educativo"""
# Crear prompt educativo
system_prompt = """Eres CosmoBot, un asistente educativo especializado en exploración espacial, astronomía y cosmología.
Tu misión es proporcionar explicaciones claras, precisas y accesibles para estudiantes de todos los niveles. Mantén un tono amigable y entusiasta sobre el cosmos.
Áreas de expertise:
- Planetas y sistema solar
- Estrellas y astrofísica
- Galaxias y cosmología
- Exploración espacial y misiones
- Agujeros negros y fenómenos cósmicos
- Historia de la astronomía
Responde de manera educativa e inspiradora:"""
# Construir conversación
conversation = system_prompt + "\n\n"
# Agregar historial de conversación
for user_msg, bot_msg in history:
conversation += f"Usuario: {user_msg}\nCosmoBot: {bot_msg}\n"
# Agregar mensaje actual
conversation += f"Usuario: {message}\nCosmoBot:"
try:
# Generar respuesta
start_time = time.time()
response = model(
conversation,
max_new_tokens=300,
temperature=0.7,
do_sample=True,
top_p=0.9
)[0]['generated_text']
# Extraer solo la última respuesta
bot_response = response.split("CosmoBot:")[-1].strip()
# Limpiar respuesta
if "Usuario:" in bot_response:
bot_response = bot_response.split("Usuario:")[0].strip()
response_time = time.time() - start_time
print(f"⏱️ Tiempo de respuesta: {response_time:.2f}s")
return bot_response
except Exception as e:
print(f"❌ Error: {e}")
return "🔧 Error temporal. Por favor, intenta nuevamente."
# Crear interfaz Gradio
with gr.Blocks(
theme=gr.themes.Soft(),
title="🚀 CosmoBot - Asistente Espacial con Mistral-7B"
) as demo:
gr.Markdown(
"""
# 🚀 CosmoBot
### Asistente Educativo Espacial con Mistral-7B-Grok
¡Hola! Soy **CosmoBot**, tu guía personal para explorar el universo.
Puedo explicarte sobre planetas, estrellas, galaxias, exploración espacial y más.
**Ejemplos de preguntas:**
- "Explícame qué son los agujeros negros"
- "Háblame sobre la exploración de Marte"
- "Qué es la materia oscura?"
- "Cuéntame sobre las misiones de la NASA"
"""
)
# Chatbot interactivo
chatbot = gr.Chatbot(
label="Conversación con CosmoBot",
height=500,
show_copy_button=True
)
with gr.Row():
msg = gr.Textbox(
label="Escribe tu pregunta sobre el espacio",
placeholder="Pregunta sobre astronomía, planetas, estrellas...",
scale=4
)
submit = gr.Button("🚀 Enviar", scale=1)
# Ejemplos rápidos
gr.Examples(
examples=[
"Explícame qué son los agujeros negros",
"Háblame sobre la misión Artemis de la NASA",
"Cómo se forman las estrellas?",
"Qué sabemos sobre el planeta Marte?",
"Explica la teoría del Big Bang"
],
inputs=msg
)
# Funcionalidad de limpiar
clear = gr.Button("🧹 Limpiar conversación")
# Manejar envío de mensajes
def respond(message, chat_history):
if not message.strip():
return "", chat_history
bot_message = cosmobot_response(message, chat_history)
chat_history.append((message, bot_message))
return "", chat_history
# Conectar eventos
msg.submit(respond, [msg, chatbot], [msg, chatbot])
submit.click(respond, [msg, chatbot], [msg, chatbot])
clear.click(lambda: None, None, chatbot, queue=False)
# Lanzar aplicación
if __name__ == "__main__":
demo.launch(
server_name="0.0.0.0",
share=False
) |