ruben garcia
Erasmo Hernández
ProfesorJose rodolfo Escalante
Byron Loarte
Marco Aurelio
Yuly Fuentes
Marco Aurelio
Jesus Armando Tapia Gallegos
Erasmo Hernández
ProfesorDaniel Andres Rojas Paredes
Santiago Pineda Botero
Gabriel Obregón
Katherine Colmenares
John Salcedo
Daniel Andres Rojas Paredes
Maria José Alvarez Perez
Erasmo Hernández
ProfesorJoel David Valverde Gonzalez
Erasmo Hernández
ProfesorJose Gomez Lobelo
Erasmo Hernández
Profesorrealmente es muy facil. sin embargo, una vez haciendolo supongo que vendran los retos.
Hola Ruben, es que el concepto de facilidad es relativo a quién lo emite. Alguien que no conoce cómo funciona una API no va a entender mucho de esto y puede parecerle completamente imposible de hacer; mientras que alguien que conoce APIs y fundamentos de IA, se moverá como pez en el agua en estos conceptos y prácticas, así que veo que eres de los segundos, basado en tu comentario. Igual cualquier duda o aporte, siempre déjalo por esta vía para poder responderte!
😃
Para hacer esta práctica se requiere tener saldo en la cuenta de Open AI API Developers ?
¡¡¡HOLA A TODOS!!!
para quienes no puedan o quieran dar dinero a openAI par ausar la API pero igualmente quieren practicar este módulo✨, AQUÍ está la solución :
baseURL: "https://generativelanguage.googleapis.com/v1beta/openai",
Agregando esa simple línea de código a client podrás usar los modelos gratuitos de google (GEMINI) con la API de openAI🎉
para quienes quieran un ejemplo, dejaré una script que puedes ejecutar así como vez en la clase, solo recuerda instalar openai dotenv ¡¡¡ES CRUCIAL!!!, esto como parte de que sepas que funciona✅
import readline from "readline"; import dotenv from "dotenv"; import OpenAI from "openai"; dotenv.config(); const client = new OpenAI({ apiKey: "tu llave secreta AQUÍ", baseURL: "https://generativelanguage.googleapis.com/v1beta/openai" }); let historial = [ { role: "system", content: "personalizame AQUÍ" } ]; async function llamarIA(mensaje) { historial.push({ role: "user", content: mensaje }); process.stdout.write("\nIA: "); const stream = await client.chat.completions.create({ model: "gemini-3.1-pro-preview", messages: historial, temperature: 1, stream: true }); let respuestaCompleta = ""; for await (const chunk of stream) { const texto = chunk.choices?.[0]?.delta?.content; if (texto) { process.stdout.write(texto); respuestaCompleta += texto; } } process.stdout.write("\n\n"); historial.push({ role: "assistant", content: respuestaCompleta }); } async function main() { console.log("=== Chat IA (streaming) ==="); console.log("Escribe 'salir' para terminar\n"); console.log("dejame un corazón en el comentario de la clase 🤗\n"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); const preguntar = (texto) => new Promise((resolve) => rl.question(texto, resolve)); while (true) { const mensaje = await preguntar("Tú: "); if (["salir", "exit", "quit"].includes(mensaje.toLowerCase())) { console.log("Cerrando chat..."); rl.close(); break; } await llamarIA(mensaje); } } main();
una vez comprobado que funciona, puedes continuar con el curso haciendo todo lo que vez cada clase siempre asegurandote de que client tenga la línea :
baseURL: "https://generativelanguage.googleapis.com/v1beta/openai"
🎉Y LISTO🎉 agradecería que dejes tu corazón 🤗
Lo intenté con bun y node pero no funciona.
¡¡¡Hola @Yuly Fuentes!!! La comunidad ama los retos ( al menos yo ), y así como yo estaría dispuesto a ayudarte, otros también siempre que dejes tus errores que te dan los códigos que ejecutes, de esa forma todos podremos aprender algo nuevo juntos 😄😄😄
Al segundo intento lo logré, primero empecé con VS Code, y cambié a Windsurf, pero quedo claro al final como se configura, después los cambios y ajustes. Bien explicado, en el paso por paso.
Bienvenido entonces al Windsurf team, Jesús!
bun es otro runtime the java script nuevo optimizado y que supuestamente no es tan chevre para aprender fundamentos
Contexto del curso: Introducción técnica a la integración de la API de OpenAI mediante Node.js y Bun.js, enfocada en la configuración del entorno, autenticación y ejecución de llamadas básicas a modelos.
Conceptos clave: npm init, package.json (type: module), variables de entorno (.env), OpenAI SDK, log level: debug, runtime (Node vs Bun), API Key y endpoints.
Preguntas avanzadas:
type: module?log level: debug al rendimiento en producción?.env.local?dotenv en lugar de export?chat.completions y responses?debug en la privacidad de los datos?client instance en el SDK de OpenAI?node_modules y por qué es necesario?console.log para depuración?require); type: module habilita ES Modules (import).dotenv.process.env; si no está en el shell, el proceso no la ve..env.local puede filtrarse en repositorios si no está en .gitignore..env en Node.try/catch en la promesa del cliente.chat.completions es el estándar actual; responses es una simplificación.max_tokens y el historial.debug (npm package) o inspectores de VS Code.Fuentes: Documentación oficial de OpenAI (implícita en el SDK). Ausencia de fuentes externas citadas.
Vacíos y límites: Omite el manejo de errores (try/catch), seguridad avanzada (secret management), gestión de historial de chat y costos por token.
Aportes publicables:
type: module es obligatorio en proyectos modernos de JS."dotenv y variables de entorno del sistema."Recomendación: Cómo funciona la API de OpenAI
• 🧠 Meta principal: conectar un proyecto de JavaScript con la API de OpenAI.
• ⚙️ Primero necesitas: terminal, editor de código y Node.js v20+ o Bun.js.
• 📁 Luego creas el proyecto: carpeta nueva, npm init -y y ajuste de "type": "module".
• 📦 Después instalas la librería oficial: npm i openai.
• 🔐 La API key es obligatoria: se genera en OpenAI y se guarda en .env.
• ⚠️ Diferencia importante: Bun carga .env automáticamente, Node normalmente requiere configuración manual.
• 🚀 La conexión real ocurre al hacer una solicitud con client.responses.create(...).
• 🔑 Elementos clave de la solicitud: • model = modelo de IA. • input = instrucción que recibe el modelo.
• 💬 Resultado esperado: el modelo responde según el idioma, la temática y la longitud pedida.
• 🔍 Idea central: OpenAI funciona como cualquier API.
• Envías una petición.
• Agregas parámetros.
• Recibes una respuesta.
• 🔮 Lo aprendido aquí es solo el inicio: además de texto, OpenAI también permite trabajar con imágenes, audio, evaluaciones y conversaciones.
• 🎯 En una frase:
• Preparas el entorno.
• Configuras la clave.
• Instalas la librería.
• Haces la petición.
• Obtienes la respuesta.
Me gusto, solo que si tuve que hacer varias integraciones porque use phyton, pero muy bien.
me sirvio con este comando:
node --env-file=.env.local index.js
Node soporta dos sistemas de módulos:
require(...) y module.exportsimport y exportTu archivo usa import OpenAI from "openai" → sintaxis ES Modules. Pero Node por default asume CommonJS, y require no entiende import. Por eso el SyntaxError.
Las dos soluciones:
"type": "module" en package.json → le dice a Node "todos los .js de este proyecto son ES Modules".mjs → la extensión sola indica ES ModuleEl tutorial eligió opción 1 porque es más limpio para un proyecto entero.
¿Por qué existen los dos? Node nació antes de que JS estándar tuviera módulos, así que inventó CommonJS. Años después el estándar oficial llegó (ES Modules). Node mantiene ambos por compatibilidad.
es facil para poder realizarlo
Una vez tienes los conocimientos, es mucho más fácil. Pero eso depende del background de cada quien, si para ti es fácil es porque ya tienes una base de conocimientos importante, reconócetelo siempre. :)
Profesor de donde sacas el primer codigo con que configuras el json por qué en la pagina de OpenAi aparece uno parecido pero no es igual?
import OpenAI from "openai"; const client = new OpenAI(); const response = await client.responses.create({ model: "gpt-5.4", tools: [ { type: "web_search" }, ], input: "What was a positive news story from today?", }); console.log(response.output_text);
Pueden irse cambiando, recuerda que esto cambia todos los días, la idea de esto es hacer las pruebas con lo que vas encontrando. De hecho, durante la grabación de este curso, nos pasó que el modelo más poderoso que existía al inicio fue reemplazado/superado...
Me pedí con que software es que lo haremos
Puedes usar el editor que prefieras, yo uso Windsurf, pero tu puedes usar el que quieras.