Initializing...
Liveweave
expand_more
home
Home
data_object
CSS Explorer
arrow_outward
Palette
Color Explorer
arrow_outward
Polyline
Graphics Editor
arrow_outward
outbox_alt
Generative AI
arrow_outward
build
Tools
expand_more
restart_alt
Load base template
post_add
Generate Lorem ipsum...
code
Format HTML
code_blocks
Format CSS
data_object
Format JavaScript
library_add
Library
expand_more
A
Algolia JS
Animate CSS
Apex Charts JS
B
Bulma CSS
Bootstrap
C
Chart JS
Chartist
Create JS
D
D3
Dojo
F
Foundation
Fullpage JS
G
Granim JS
Google Charts
H
Halfmoon
J
jQuery
M
Materialize
Moment JS
Masonry JS
Milligram CSS
P
Pure CSS
Primer CSS
Popper JS
Pattern CSS
Picnic CSS
R
React JS
Raphael JS
Raisin CSS
S
Semantic UI
Skeleton CSS
Spectre CSS
Tachyons CSS
T
Tailwind
Three JS
U
UI Kit
Vis JS
W
Water CSS
download
Download
expand_more
developer_mode
Download as HTML
folder_zip
Download as .ZIP
cloud_upload
Save
account_circle
Login
settings
Settings
expand_more
14
px
Live mode
Night mode
Line number
Mini map
Word wrap
sync_alt
Reset Settings
smart_display
Run
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <title>Chat con Asistente Virtual</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div class="chat-container"> <div class="chat-box" id="chat-box"> <!-- Mensajes serán añadidos aquí dinámicamente --> </div> <input type="text" id="user-input" placeholder="Escribe tu mensaje aquí..." autocomplete="off"/> <button onclick="sendMessage()">Enviar Mensaje</button> </div> <script src="script.js"></script> </body> </html> </html>
.chat-container { width: 300px; margin: auto; background-color: #f4f4f8; border: 1px solid #ddd; padding: 10px; } .chat-box { height: 300px; overflow-y: scroll; border: 1px solid #ccc; margin-bottom: 10px; padding: 5px; } #user-input { width: calc(100% - 90px); padding: 10px; border: 1px solid #ccc; } button { padding: 10px; background-color: #5c54a4; color: white; border: none; cursor: pointer; } button:hover { background-color: #6c63b6; }
// Reemplaza 'YOUR_API_KEY' con tu clave API de OpenAI const OPENAI_API_KEY = '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'; // Nunca expongas tu clave API en el cliente. async function sendMessage() { const userInput = document.getElementById('user-input'); const message = userInput.value; if (message) { addMessageToChatBox('Usuario', message); userInput.value = ''; userInput.focus(); await fetchResponseFromOpenAI(message); // Asegúrate de esperar la respuesta } } function addMessageToChatBox(sender, message) { const chatBox = document.getElementById('chat-box'); const messageDiv = document.createElement('div'); messageDiv.textContent = `${sender}: ${message}`; chatBox.appendChild(messageDiv); } async function fetchResponseFromOpenAI(message) { try { const response = await fetch('https://api.openai.com/v1/engines/davinci-codex/completions', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${OPENAI_API_KEY}` // Esta llamada debe hacerse en el servidor. }, body: JSON.stringify({ prompt: message, max_tokens: 150 }) }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const data = await response.json(); addMessageToChatBox('Asistente', data.choices[0].text.trim()); } catch (error) { // Aquí agregamos el mensaje de error al chat en lugar de solo imprimirlo en la consola. addMessageToChatBox('Error', 'Lo sentimos, ha ocurrido un error al procesar tu mensaje.'); console.error('Error al obtener la respuesta de OpenAI:', error); } }