biter-zephyr / app.py
askbyte's picture
Update app.py
ea665d9 verified
raw
history blame
3.87 kB
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."
# Detectar si es un saludo simple
saludos = ["hola", "buenos días", "buenas", "saludos", "hey", "qué tal", "como estás"]
if user_message.lower().strip() in saludos:
return "¡Hola! Soy BITER, tu mentor de negocios. ¿En qué puedo ayudarte hoy? Puedes preguntarme sobre estrategia, marketing, financiación o desarrollo de producto."
# Cargar el prompt del sistema
with open("prompt.txt", "r", encoding="utf-8") as f:
system_prompt = f.read().strip()
# Añadir instrucciones para respuestas concisas
system_prompt += "\n\nIMPORTANTE: Tus respuestas deben ser concisas (máximo 3-4 párrafos). Evita listas largas y sé directo. 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. Por favor, configura la variable de entorno DEEPINFRA_API_KEY."
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": 300, # Reducido para respuestas más 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)