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." # Cargar el prompt del sistema with open("prompt.txt", "r", encoding="utf-8") as f: system_prompt = f.read().strip() # 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", # Modelo disponible en DeepInfra "messages": messages, "max_tokens": 500, "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)