Spaces:
Running
Running
File size: 5,385 Bytes
4ad23c1 55e6cbd d8257da 1d5b573 26e838b 721590a fda4c03 9ac84ea 229d90b 9ac84ea ea665d9 55e6cbd fda4c03 229d90b 9ac84ea ea665d9 26e838b d8257da 55e6cbd 9ac84ea fda4c03 55e6cbd fda4c03 26e838b d8257da 26e838b 55e6cbd ea665d9 d8257da 9ac84ea 55e6cbd d8257da 55e6cbd fda4c03 55e6cbd d8257da 55e6cbd dc63621 55e6cbd 26e838b fda4c03 721590a fda4c03 d8257da 4ad23c1 1d5b573 dc63621 721590a 26e838b |
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 |
import gradio as gr
import requests
import json
import os
# Función para generar respuestas usando DeepInfra
def generate_response(user_message):
try:
if not user_message.strip():
return "Por favor, escribe una pregunta para que pueda ayudarte."
# Respuestas predefinidas para preguntas simples
user_message_lower = user_message.lower().strip()
# Mapa de respuestas cortas para preguntas comunes
respuestas_cortas = {
"hola": "¡Hola! ¿En qué puedo ayudarte hoy?",
"buenos días": "¡Buenos días! ¿En qué puedo ayudarte?",
"buenas": "¡Buenas! ¿En qué puedo ayudarte?",
"saludos": "¡Saludos! ¿En qué puedo ayudarte?",
"hey": "¡Hey! ¿En qué puedo ayudarte?",
"qué tal": "Muy bien, ¿y tú? ¿En qué puedo ayudarte hoy?",
"como estas": "Estoy listo para ayudarte con tu negocio. ¿Qué necesitas?",
"cómo estás": "Estoy listo para ayudarte con tu negocio. ¿Qué necesitas?",
"que es byte": "Byte es un proyecto para emprendedores que ofrece herramientas de IA, desarrollo web y servicios de contenido. ¿En qué puedo ayudarte?",
"qué es byte": "Byte es un proyecto para emprendedores que ofrece herramientas de IA, desarrollo web y servicios de contenido. ¿En qué puedo ayudarte?"
}
# Verificar si es una pregunta simple
for pregunta, respuesta in respuestas_cortas.items():
if pregunta in user_message_lower or user_message_lower in pregunta:
return respuesta
# Contexto sobre Byte (versión corta)
byte_context = "Byte es un proyecto para emprendedores con herramientas de IA, desarrollo web y servicios de contenido. BITER es el asistente de IA de Byte."
# Cargar el prompt del sistema
with open("prompt.txt", "r", encoding="utf-8") as f:
system_prompt = f.read().strip()
# Combinar el contexto de Byte con el prompt original
system_prompt = byte_context + "\n\n" + system_prompt
# Instrucciones muy estrictas sobre brevedad
system_prompt += """
INSTRUCCIONES DE FORMATO CRÍTICAS:
1. Sé EXTREMADAMENTE conciso. Máximo 1-2 párrafos cortos.
2. Para preguntas simples o saludos, responde en una sola línea.
3. Solo para preguntas técnicas complejas puedes usar hasta 3 párrafos.
4. NUNCA uses listas largas ni explicaciones extensas.
5. Habla como un CEO ocupado: directo, práctico y sin rodeos.
6. Adapta la longitud de tu respuesta a la complejidad de la pregunta.
"""
# Configurar la solicitud a DeepInfra
api_key = os.environ.get("DEEPINFRA_API_KEY", "")
if not api_key:
return "Error: No se ha configurado la clave API."
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
# Formato de prompt para modelos de chat
messages = [
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_message}
]
# Usar un modelo que sí está disponible en DeepInfra
data = {
"model": "meta-llama/Llama-2-7b-chat-hf",
"messages": messages,
"max_tokens": 200, # Reducido aún más para forzar respuestas cortas
"temperature": 0.7,
"top_p": 0.9
}
# Enviar solicitud a la API
response = requests.post(
"https://api.deepinfra.com/v1/openai/chat/completions",
headers=headers,
json=data
)
# Procesar la respuesta
if response.status_code == 200:
result = response.json()
return result["choices"][0]["message"]["content"]
else:
# Intentar con otro modelo si el primero falla
data["model"] = "mistralai/Mistral-7B-Instruct-v0.2"
response = requests.post(
"https://api.deepinfra.com/v1/openai/chat/completions",
headers=headers,
json=data
)
if response.status_code == 200:
result = response.json()
return result["choices"][0]["message"]["content"]
else:
return f"Error en la API: {response.status_code} - {response.text}"
except Exception as e:
return f"Lo siento, ha ocurrido un error: {str(e)}"
# Crear la interfaz de Gradio
demo = gr.Interface(
fn=generate_response,
inputs=gr.Textbox(
placeholder="Escribe tu pregunta sobre emprendimiento aquí...",
label="Tu pregunta"
),
outputs=gr.Textbox(label="Respuesta de BITER"),
title="BITER - Tu Mentor en Tiempo Real para Decisiones de Negocio",
description="BITER es un asistente de IA que responde dudas de emprendedores como si fuera un CEO experimentado.",
examples=[
["¿Cómo puedo validar mi idea de negocio con poco presupuesto?"],
["¿Cuál es la mejor estrategia para conseguir mis primeros clientes?"],
["¿Debería invertir en publicidad en redes sociales o en SEO?"]
],
allow_flagging="never",
theme=gr.themes.Soft(primary_hue="blue")
)
# Lanzar la aplicación
if __name__ == "__main__":
demo.queue(max_size=1).launch(share=False, debug=False) |