Spaces:
Running
Running
/** | |
* Ejemplo de código para integrar BITER en justbyte.es | |
* Este archivo muestra cómo implementar la comunicación con la API de BITER | |
* desde tu sitio web. | |
*/ | |
// URL de tu Hugging Face Space | |
const BITER_API_URL = "https://tu-usuario-huggingface.hf.space/generate" | |
// Elementos del DOM | |
const chatForm = document.getElementById("chat-form") | |
const userInput = document.getElementById("user-input") | |
const chatMessages = document.getElementById("chat-messages") | |
const loadingIndicator = document.getElementById("loading-indicator") | |
// Manejar envío del formulario | |
chatForm.addEventListener("submit", async (e) => { | |
e.preventDefault() | |
// Obtener mensaje del usuario | |
const userMessage = userInput.value.trim() | |
if (!userMessage) return | |
// Limpiar input | |
userInput.value = "" | |
// Mostrar mensaje del usuario | |
appendMessage("user", userMessage) | |
// Mostrar indicador de carga | |
loadingIndicator.style.display = "block" | |
try { | |
// Enviar solicitud a la API de BITER | |
const response = await fetch(BITER_API_URL, { | |
method: "POST", | |
headers: { | |
"Content-Type": "application/json", | |
}, | |
body: JSON.stringify({ | |
message: userMessage, | |
}), | |
}) | |
// Verificar si la respuesta es exitosa | |
if (!response.ok) { | |
throw new Error("Error en la respuesta de la API") | |
} | |
// Obtener datos de la respuesta | |
const data = await response.json() | |
// Mostrar respuesta de BITER | |
appendMessage("assistant", data.response) | |
} catch (error) { | |
console.error("Error:", error) | |
appendMessage( | |
"system", | |
"Lo siento, ha ocurrido un error al conectar con BITER. Por favor, intenta de nuevo más tarde.", | |
) | |
} finally { | |
// Ocultar indicador de carga | |
loadingIndicator.style.display = "none" | |
} | |
}) | |
// Función para añadir mensajes al chat | |
function appendMessage(role, content) { | |
const messageDiv = document.createElement("div") | |
messageDiv.className = `message ${role}-message` | |
// Crear avatar | |
const avatar = document.createElement("div") | |
avatar.className = "avatar" | |
// Icono según el rol | |
if (role === "user") { | |
avatar.innerHTML = "👤" | |
} else if (role === "assistant") { | |
avatar.innerHTML = "🤖" | |
} else { | |
avatar.innerHTML = "⚠️" | |
} | |
// Crear contenido del mensaje | |
const messageContent = document.createElement("div") | |
messageContent.className = "message-content" | |
messageContent.textContent = content | |
// Añadir elementos al mensaje | |
messageDiv.appendChild(avatar) | |
messageDiv.appendChild(messageContent) | |
// Añadir mensaje al contenedor | |
chatMessages.appendChild(messageDiv) | |
// Scroll al último mensaje | |
chatMessages.scrollTop = chatMessages.scrollHeight | |
} |