Spaces:
Sleeping
Sleeping
Create client-example.js
Browse files- client-example.js +100 -0
client-example.js
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/**
|
| 2 |
+
* Ejemplo de c贸digo para integrar BITER en justbyte.es
|
| 3 |
+
* Este archivo muestra c贸mo implementar la comunicaci贸n con la API de BITER
|
| 4 |
+
* desde tu sitio web.
|
| 5 |
+
*/
|
| 6 |
+
|
| 7 |
+
// URL de tu Hugging Face Space
|
| 8 |
+
const BITER_API_URL = "https://tu-usuario-huggingface.hf.space/generate"
|
| 9 |
+
|
| 10 |
+
// Elementos del DOM
|
| 11 |
+
const chatForm = document.getElementById("chat-form")
|
| 12 |
+
const userInput = document.getElementById("user-input")
|
| 13 |
+
const chatMessages = document.getElementById("chat-messages")
|
| 14 |
+
const loadingIndicator = document.getElementById("loading-indicator")
|
| 15 |
+
|
| 16 |
+
// Manejar env铆o del formulario
|
| 17 |
+
chatForm.addEventListener("submit", async (e) => {
|
| 18 |
+
e.preventDefault()
|
| 19 |
+
|
| 20 |
+
// Obtener mensaje del usuario
|
| 21 |
+
const userMessage = userInput.value.trim()
|
| 22 |
+
if (!userMessage) return
|
| 23 |
+
|
| 24 |
+
// Limpiar input
|
| 25 |
+
userInput.value = ""
|
| 26 |
+
|
| 27 |
+
// Mostrar mensaje del usuario
|
| 28 |
+
appendMessage("user", userMessage)
|
| 29 |
+
|
| 30 |
+
// Mostrar indicador de carga
|
| 31 |
+
loadingIndicator.style.display = "block"
|
| 32 |
+
|
| 33 |
+
try {
|
| 34 |
+
// Enviar solicitud a la API de BITER
|
| 35 |
+
const response = await fetch(BITER_API_URL, {
|
| 36 |
+
method: "POST",
|
| 37 |
+
headers: {
|
| 38 |
+
"Content-Type": "application/json",
|
| 39 |
+
},
|
| 40 |
+
body: JSON.stringify({
|
| 41 |
+
message: userMessage,
|
| 42 |
+
}),
|
| 43 |
+
})
|
| 44 |
+
|
| 45 |
+
// Verificar si la respuesta es exitosa
|
| 46 |
+
if (!response.ok) {
|
| 47 |
+
throw new Error("Error en la respuesta de la API")
|
| 48 |
+
}
|
| 49 |
+
|
| 50 |
+
// Obtener datos de la respuesta
|
| 51 |
+
const data = await response.json()
|
| 52 |
+
|
| 53 |
+
// Mostrar respuesta de BITER
|
| 54 |
+
appendMessage("assistant", data.response)
|
| 55 |
+
} catch (error) {
|
| 56 |
+
console.error("Error:", error)
|
| 57 |
+
appendMessage(
|
| 58 |
+
"system",
|
| 59 |
+
"Lo siento, ha ocurrido un error al conectar con BITER. Por favor, intenta de nuevo m谩s tarde.",
|
| 60 |
+
)
|
| 61 |
+
} finally {
|
| 62 |
+
// Ocultar indicador de carga
|
| 63 |
+
loadingIndicator.style.display = "none"
|
| 64 |
+
}
|
| 65 |
+
})
|
| 66 |
+
|
| 67 |
+
// Funci贸n para a帽adir mensajes al chat
|
| 68 |
+
function appendMessage(role, content) {
|
| 69 |
+
const messageDiv = document.createElement("div")
|
| 70 |
+
messageDiv.className = `message ${role}-message`
|
| 71 |
+
|
| 72 |
+
// Crear avatar
|
| 73 |
+
const avatar = document.createElement("div")
|
| 74 |
+
avatar.className = "avatar"
|
| 75 |
+
|
| 76 |
+
// Icono seg煤n el rol
|
| 77 |
+
if (role === "user") {
|
| 78 |
+
avatar.innerHTML = "馃懁"
|
| 79 |
+
} else if (role === "assistant") {
|
| 80 |
+
avatar.innerHTML = "馃"
|
| 81 |
+
} else {
|
| 82 |
+
avatar.innerHTML = "鈿狅笍"
|
| 83 |
+
}
|
| 84 |
+
|
| 85 |
+
// Crear contenido del mensaje
|
| 86 |
+
const messageContent = document.createElement("div")
|
| 87 |
+
messageContent.className = "message-content"
|
| 88 |
+
messageContent.textContent = content
|
| 89 |
+
|
| 90 |
+
// A帽adir elementos al mensaje
|
| 91 |
+
messageDiv.appendChild(avatar)
|
| 92 |
+
messageDiv.appendChild(messageContent)
|
| 93 |
+
|
| 94 |
+
// A帽adir mensaje al contenedor
|
| 95 |
+
chatMessages.appendChild(messageDiv)
|
| 96 |
+
|
| 97 |
+
// Scroll al 煤ltimo mensaje
|
| 98 |
+
chatMessages.scrollTop = chatMessages.scrollHeight
|
| 99 |
+
}
|
| 100 |
+
|