He preparado esta página rápida de preguntas frecuentes para responder a las dudas más comunes que surgen en mis cursos de IA publicados en Frogames. Espero que esto solucione tu problema, pero si no, por favor no dudes en ponerte en contacto conmigo a través de Frogames Formación o por email en [email protected].
1. ¿En qué orden debería hacer tus cursos?
¡Ajá! Recibo esta pregunta muy a menudo, así que aquí tienes la ruta completa con un plan de estudios.
2. ¿Puedo hacer tus cursos sin Python / sin experiencia en programación?
He intentado diseñar mis cursos para que resulten atractivos al público más amplio posible; debería haber algo aquí para todo el mundo.
Pero voy a ser totalmente sincero: los cursos son más fáciles para personas que tienen al menos una base en Python. Es totalmente posible hacerlos sin Python en absoluto, y varias personas han completado todo el contenido y han informado de éxito y satisfacción. Pero sin duda es una curva de aprendizaje pronunciada.
Si eres nuevo en programación y decides lanzarte, entonces:
Por favor dedica tiempo a las guías de autoestudio, especialmente a las guías 1–6
Date mucho tiempo: mucha práctica y muchísima paciencia
Recorre los laboratorios despacio, añadiendo instrucciones
print()y haciendo pequeños cambiosSi no entiendes todo, sinceramente no importa; si captas la idea general, ¡eso está bien! Algunas personas incluso han visto el curso completo dos veces como forma de construir comprensión
¡Estoy aquí para ayudar! Escríbeme siempre que te quedes atascado.
3. ¿Podré conseguir trabajo como Ingeniero de IA después de hacer tu curso?
He basado el currículo de los cursos en:
Mi conocimiento de la industria
Lo que busco cuando contrato Ingenieros de IA
Una revisión de descripciones de puestos de ingeniería de IA
Pero, en mi opinión, completar los cursos es un paso importante, pero por sí solo esto no te cualificará para un trabajo como Ingeniero de IA.
Lo que sí te cualificará es: construir, construir, construir.
Crea proyectos de IA, especialmente proyectos que aborden un problema personal o profesional. Si los compartes en LinkedIn y me etiquetas con contenido relevante, participaré para amplificar tu logro. Esta es la forma perfecta de construir tu experiencia y mostrar tu conocimiento a posibles empleadores futuros.
4. Me aparece un Name Error
Los Name Errors son comunes en Python, pero son (casi) siempre solucionables al instante. Es útil construir confianza para poder abordar los Name Errors inmediatamente cuando aparezcan.
La razón más común es que no has ejecutado todas las celdas de tu notebook en orden, de arriba hacia abajo.
Por favor revisa la tercera sección de esta guía sobre Name Errors; completa ambos tutoriales y todos los ejercicios, y los Name Errors no deberían volver a darte problemas. Pero si aun así los tienes, avísame de inmediato.
5. Me aparece un Import Error – por ejemplo, no puedo importar OpenAI o dotenv
Esto ocurre con mayor frecuencia cuando no estás trabajando con el entorno correcto activado.
Si estás usando Jupyter Lab, ¿activaste tu entorno antes de iniciar Jupyter?
Si estás en Cursor, ¿estás seguro de que tienes seleccionado el Kernel correcto?
Busca el laboratorio de resolución de problemas (ya sea en el directorio week1 o en el directorio setup) y ejecuta las primeras comprobaciones; luego, si no se resuelve, ejecuta el script de Diagnóstico en la última celda y envíame los resultados por email. ¡Lo solucionaré rápido!
6. Mi clave de API de IA no se está configurando desde mi archivo .env o no funciona
La mayoría de las veces es uno de estos molestos problemas:
¿Guardaste el archivo
.envdespués de editarlo?¿El archivo
.envse llama EXACTAMENTE.env— solo esos 4 caracteres? No.env.txt, noenv. Debe llamarse exactamente.env, y debe estar ubicado en el directorio raíz del proyecto, no en un subdirectorio comoagents/.envSi estás usando OpenAI, ¿la clave está escrita exactamente como
OPENAI_API_KEY(noOPEN_API_KEY)?
Por favor revisa el laboratorio de resolución de problemas (en la carpeta week1 para LLM Engineering o la carpeta setup para Agentic AI). Eso te guiará paso a paso para configurar y comprobar tu archivo .env.
Si nada de eso funciona, por favor envíame una captura de pantalla mostrando el contenido del archivo .env y debería poder arreglarlo rápidamente.
Si estás usando Cursor, simplemente selecciona el archivo .env en el panel izquierdo.
De lo contrario, abre una Terminal o Powershell, ve al directorio raíz del proyecto y ejecuta:
o
Y envíame la captura por email a [email protected].
7. ¿Por qué Cursor muestra una señal de stop con “AI features disabled..” junto a mi archivo .env?
Primero, es importante entender qué te está comunicando Cursor y qué no.
Lo que Cursor está comunicando: el autocompletado de IA está desactivado para tu archivo .env.
Lo que Cursor NO está comunicando: Cursor no está diciendo que haya un error, y Cursor no te está diciendo que el archivo no se esté usando. Mientras hayas guardado el archivo, el archivo está ahí.
Entonces, ¿por qué Cursor ha desactivado las funciones de IA para este archivo?
Cursor está diciendo:
“oye, me doy cuenta de que el archivo .env contiene información secreta que podría estar vinculada a tu tarjeta de crédito, y probablemente no sería buena idea enviar esto a un proveedor externo para hacer una predicción de IA sobre ello… así que no voy a usar funciones de IA con este archivo”.
Es bueno desarrollar el instinto de un ingeniero en temas de seguridad. Tu guardia debería estar alta al introducir claves privadas en un archivo .env. Podrías pensar: “Espero que Cursor no envíe esto a IAs externas”. Entonces deberías alegrarte de ver este símbolo, y el mensaje de que las funciones de IA están desactivadas debería tener sentido y ser exactamente la protección que esperas.
Es por tu seguridad y protección, y deberías exigirlo a Cursor y a cualquier otra herramienta de IA que uses en el futuro.
8. ¿Tengo que pagar por APIs en este curso? Me gustaría usar algo distinto a OpenAI o Anthropic: un modelo gratuito, o Gemini, o OpenRouter, o algo más…
Absolutamente. Puedes usar modelos gratuitos en todos mis cursos. Muchísimas personas han completado todo usando modelos gratuitos.
Google Gemini tiene un nivel gratuito, y OpenRouter te da acceso a muchos modelos gratuitos, además de modelos muy baratos.
Los detalles están cubiertos en profundidad en la Guía 9 en la carpeta guides del repositorio. Hay una buena explicación de cómo funcionan las APIs de IA, seguida de código exacto para usar Gemini, OpenRouter, DeepSeek y modelos locales mediante Ollama.
Y, ejem, tengo una petición. La Guía 9 se enlaza con frecuencia en todos mis cursos. En el curso de agentes, está en el README, en las instrucciones de Setup, y con una enorme señal de STOP en la parte superior del Laboratorio 1. Siempre estoy encantado de responder preguntas e intento hacerlo rápido. Pero obtendrás las respuestas más rápidas manteniendo un ojo atento a la documentación. Es realmente buena. Es tu camino hacia el mayor éxito con el curso.
Nota al margen: el enfoque para Bedrock, Azure y Vertex AI es muy similar; solo tienes que buscar los detalles de los proveedores.
9. Me aparece un Archive Error al configurar mi entorno
Por favor busca “Archive” en SETUP-PC.md para ver la explicación completa y la solución.
10. Me aparece un error al intentar ejecutar CrewAI
a. Revisa que seguiste el README
Por favor revisa la sección sobre CrewAI en el archivo README.md en el directorio raíz del proyecto (agents/README.md) — asegúrate de haber instalado la herramienta CrewAI.
Si estás en un PC, asegúrate de haber instalado Microsoft Build Tools como se describe en el README, de lo contrario obtendrás un error extraño relacionado con Chroma.
b. Si CrewAI ha creado un archivo .env interno, elimínalo
Si tienes un problema en el que aparentemente no se están leyendo las claves de API, revisa dentro del subdirectorio del proyecto Crew para ver si Crew ha creado un nuevo archivo .env dentro de ese directorio.
Si es así, sobrescribirá tu propio archivo .env en el directorio agents. ¡Por favor elimina el .env interno de Crew!
c. Fija la herramienta CrewAI a una versión estable anterior
Siguiente cosa a probar: ejecuta este comando en la terminal de Cursor:
Para asegurarte de que CrewAI está instalado.
Y luego ejecuta este comando para volver CrewAI a una versión que sé que es estable:
Luego ejecuta uv tool list de nuevo para comprobarlo.
d. Solución para Intel Mac (onnxruntime)
En un Mac con Intel, si sigues teniendo un problema con “onnxruntime”, intenta ejecutar esto dentro del directorio del proyecto Crew:
11. Tengo problemas con uv
¡Lo siento mucho! Normalmente uv es muy fiable. La buena noticia es que esto suele ser rápido de arreglar. Por favor revisa estos problemas y soluciones comunes. Las secciones (f) y (g) suelen solucionar cualquier situación, pero deberías revisar primero las secciones anteriores.
(a) Antes de empezar – comprobando los “gotchas” como la longitud de los archivos
Asegúrate de haber revisado la lista de “gotchas” cerca de la parte superior de las instrucciones de Setup.
Usuarios de Windows PC: necesitas haber habilitado rutas de archivos más largas de 260 caracteres, y necesitas haber instalado Microsoft Build Tools.
Usuarios de Mac: necesitas haber instalado o actualizado las herramientas de XCode.
Además, confirma que tu directorio de proyectos NO está dentro de OneDrive (PC) o iCloud (Mac). Esto puede ser problemático; replicar directorios de proyectos en la nube puede causar fallos. Si es así, mueve tu directorio de proyectos a otro lugar, como C:\Users\username\projects.
(b) Errores relacionados con permisos (pero no certificados – ver más abajo)
Usuarios de PC: por favor lee el tutorial de permisos al inicio de las instrucciones de setup, o pregunta a ChatGPT.
Usuarios de Mac: por favor revisa la pregunta 14 más abajo para ver cómo arreglar problemas comunes de permisos con archivos de perfil — normalmente es un problema de configuración en tu Mac.
(c) uv no se encuentra cuando ejecutas el comando tras la instalación
¡Ajá! Lo más probable es que solo necesites abrir una nueva ventana de Terminal para que se apliquen los cambios.
Menú Terminal >> Nueva Terminal.
Si eso no funciona, prueba a reiniciar (lo siento).
Y si eso tampoco funciona, elige otro método de instalación desde la página de uv, como Winget para usuarios de Windows.
Si estás en Mac y obtuviste un error relacionado con permisos cuando intentaste instalar uv, revisa la pregunta 14 más abajo.
(d) Interferencia de Anaconda
Si has usado Anaconda antes, asegúrate de que tu entorno de Anaconda esté desactivado:
Y si sigues teniendo problemas con conda y versiones de Python, es posible que también necesites ejecutar:
(e) Problemas con SSL / Certificados
Si obtienes un error sobre “certificado inválido” al ejecutar uv sync, normalmente esto está causado por un entorno de seguridad corporativo. Esto se cubre completamente en la pregunta 15 más abajo, con las soluciones que abordarán esto para todo el curso.
Si quieres una solución rápida, uno de estos comandos debería funcionarte:
o
(f) Problemas con ordenadores antiguos, como Macs Intel, quizá con un error relacionado con “av” o pytorch / torch, o cualquier error sobre “missing wheels”
Esta solución debería funcionarte:
Edita el archivo
pyproject.tomlen el directorio raíz del proyecto y cambia la versión de Python especificada cerca de la parte superior de 3.12 a 3.11 (puede que ya esté en 3.11):
Cambia el archivo
.python-versionpara que contenga3.11y guárdaloSi el error era específicamente sobre pytorch / torch, ejecuta:
Elimina completamente el directorio
.venvVuelve a ejecutar:
Si eso no funciona, elimina también uv.lock y el directorio .venv, y ejecuta uv sync otra vez.
Y si eso tampoco funciona, repite el proceso usando 3.10 en lugar de 3.11.
(g) Otros problemas con tu entorno uv, como un error relacionado con “ipykernel”, ¡o cualquier otro problema!
La mayoría de los demás problemas están causados por un detalle extremadamente sutil.
Explicación del problema:
Tienes una instalación existente de Python 3.12 en tu sistema de un proyecto anterior
Ese Python tiene paquetes globales instalados mediante
pip installque hiciste en el pasadoEsos paquetes globales están entrando en conflicto con nuestro proyecto
Aquí está la solución, y ha funcionado bien para muchos estudiantes:
Ejecuta este comando:
Observa qué versiones de Python (“cpython”) ya tienes en tu ordenador
Elige una versión 3.12 que no aparezca como instalada, preferiblemente
3.12.10,3.12.11o3.12.9
Por ejemplo, si 3.12.10 no aparece en la lista o aparece como “download available”, sería una buena elección.
Elimina completamente la carpeta
.venven el directorio raíz del proyectoCambia el archivo
.python-versionpara que contenga el nombre completo de la nueva versión de Python que hayas elegido, como3.12.10, y guárdaloEjecuta:
Ejecuta
uv python listotra vez para confirmar que ahora tienes una versión nueva y limpia de Python y que está siendo usada por este proyecto
Si tienes dudas, vuelve al paso 1.
Esto debería instalar una versión nueva y limpia de Python e instalar los paquetes desde cero — debería ser infalible.
12. Curso agéntico: tengo problemas desplegando en HuggingFace Spaces
Primero, dentro del directorio que estás desplegando, comprueba si hay un archivo llamado README.md. Si es así, elimínalo.
En HuggingFace, asegúrate de que tu API key fue creada con permisos WRITE (no FINE GRAINED).
En la Terminal / Powershell, ejecuta:
O incluso pasa el token explícitamente así:
Y asegúrate de que inicia sesión correctamente con tu API key de WRITE. Hay un problema ocasional al pegar claves desde HuggingFace en la Terminal; puede que necesites probar distintas formas para asegurarte de que la clave se pega exactamente.
Comprueba que tienes un archivo llamado requirements.txt que enumera los paquetes que necesitas (como openai, openai-agents). Luego ejecuta:
Si es necesario, desde el propio Space de HuggingFace, haz clic en Settings, desplázate hasta Variables and Secrets, y añade Secrets para OPENAI_API_KEY, PUSHOVER_USER y PUSHOVER_TOKEN para que todo esté presente.
13. ¿Debería preocuparme por la privacidad al enviar mis datos a LLMs comerciales?
Cada vez que envías datos a un tercero, deberías realizar una revisión adecuada de seguridad de la información. OpenAI y Anthropic tienen políticas extremadamente claras y detalladas, al igual que otros proveedores.
OpenAI:
https://openai.com/security-and-privacy/
Anthropic:
https://trust.anthropic.com/
Ambas políticas dejan totalmente claro que, para cualquier servicio de pago, los datos no se utilizan para entrenamiento. Ambos están certificados a nivel SOC2 para la mayoría de los usos empresariales. Puede haber circunstancias en las que ciertos empleados puedan ver tus datos, por ejemplo durante una crisis en producción, lo cual es típico y esperable.
Existe mucha preocupación exagerada sobre la privacidad de los datos con los proveedores de modelos. Parte de ella está justificada: es importante entender qué ocurre con tus datos, y ha habido algunos incidentes. Pero la conclusión es la siguiente: deberías tratar a OpenAI, Anthropic, Google y otros como tratarías a cualquier otra dependencia de terceros. Realiza una revisión rigurosa, entiende los riesgos y las protecciones de seguridad, y toma una decisión equilibrada.
Tuve un estudiante que estaba entrenando Gemini con datos de sus correos personales de Gmail, y estaba muy preocupado de que Gemini tuviera acceso a sus correos personales.
“Pero esto dará a Google acceso a muchos de mis correos personales…”
¡Tuve que señalarle el pequeño fallo en su razonamiento!
Pero el corolario también aplica: si nunca has confiado en Gmail y usas un proveedor de correo como Proton Mail para mayor privacidad, entonces sin duda deberías revisar cuidadosamente las garantías de seguridad antes de entrenar Gemini con tus correos.
Muchas empresas tienen todo su correo en servidores de Microsoft, y sus datos de RRHH en Workday, etc. Las dependencias de proveedores cloud introducen riesgos de seguridad que deben considerarse y revisarse para decidir si los beneficios superan los riesgos. Recomiendo exactamente el mismo enfoque con las APIs de LLM.
14. Permission denied en Mac al intentar instalar
Si estás en un Mac, estás intentando instalar algo (como uv) y obtienes un mensaje de error como este:
Esto significa que tu Mac tiene un problema. Existen archivos especiales llamados “archivos de perfil” asociados a tu cuenta que contienen información importante. Estos archivos se han configurado incorrectamente y ya no tienes permiso para editarlos. No es una buena situación; deberías poder editar tus propios archivos de perfil.
¿Cómo llegué a este estado?
La razón más común es que en algún momento del pasado usaste la palabra sudo para instalar algo con permisos de administrador. Esto debe usarse con cuidado; un uso incorrecto de sudo puede cambiar los permisos de los archivos para que solo un administrador pueda editarlos.
Cómo arreglarlo
La forma fácil es usar una herramienta para usuarios finales que pueda arreglar permisos de disco. Creo que CleanMyMac (no la versión de la App Store, sino la versión de su web) tiene una función de reparación de permisos de disco.
Pero también es bastante rápido hacerlo tú mismo.
Para quienes estén familiarizados con esto, necesitas:
“usar chown para cambiar los permisos del archivo .zshrc para que vuelva a poder ser editado por tu usuario”.
Si no estás familiarizado con esto, pide a ChatGPT o Claude que te guíen paso a paso:
Explica los conceptos básicos sobre permisos de archivos en Mac
Explica los archivos ocultos en Mac que comienzan con un punto
Explica el significado del archivo
.zshrcen MacCreo que ya no tengo permisos para editar mi propio archivo
.zshrc— dime el comando que lo muestre y explique el problema (no lo arregles todavía)Ahora dame el comando simple
chownque me permita editar mi propio.zshrcen el futuro, y una prueba para comprobar que funcionó
¡Y todo quedará solucionado!
15. Estoy obteniendo un error SSL, error de certificado, error de red, fallo al descargar archivos de uv o Anaconda, o fallo de conexión de API relacionado con SSL
Quizá estés viendo algo como esto:
¡Ajá! Esto es bastante común y a menudo está relacionado con tu infraestructura de seguridad de red, ya sea porque estás en un entorno corporativo o porque estás detrás de una VPN o firewall.
Como primer paso, si puedes, desactiva VPNs, firewalls, etc. Si tienes un hotspot del móvil, puedes probar a usarlo para ayudar a identificar el problema.
Aquí tienes una guía muy completa para trabajar y resolver estos problemas, cortesía de ya-sabes-quién. Hay soluciones alternativas en la Parte 5 que probablemente te permitirán salir rápidamente de esta situación, pero es preferible arreglarlo correctamente si puedes:
https://chatgpt.com/share/68c2efc4-0280-8012-933b-5e89d7db6b58
Si tu problema es con la descarga de modelos de Ollama (un error de CloudFlare), entonces la solución es más sencilla: necesitas añadir 1.1.1.1 (CloudFlare) y/o 8.8.8.8 (Google) a las entradas DNS de tu ordenador. Puedes pedir a ChatGPT instrucciones para tu sistema — es una operación bastante común.
16. Cursor no me da sugerencias de autocompletado con IA
Primero, ve a la configuración de Cursor:
En PC: menú File >> Preferences >> Cursor Settings
En Mac: menú Cursor >> Settings >> Cursor Settings
Haz clic y asegúrate de que todas las configuraciones parecen razonables — que nada importante esté desactivado.
Si eso no ayuda, lo más probable es que Cursor haya decidido incorrectamente que ya has completado su prueba gratuita. (Creo que Cursor tiene software de “fingerprinting” para evitar que la gente se registre varias veces para pruebas gratuitas, pero a veces se equivoca).
Un email rápido a [email protected] diciendo que el autocompletado de IA no funciona debería arreglarlo rápidamente.
Mientras tanto, también puedes usar VS Code (con GitHub Copilot) para una experiencia muy similar. Cursor es simplemente un fork de VS Code, por lo que todo en el curso será prácticamente idéntico.
17. He completado la prueba gratuita de Cursor y no quiero pagarla
No hay ningún problema. Puedes seguir usando Cursor sin las funciones de pago (autocompletado con modelos Frontier) y funcionará perfectamente — básicamente es VS Code.
Además, deberías poder configurar Cursor para usar modelos open-source de forma gratuita — aunque la experiencia no es tan buena como Cursor + modelos Frontier.
Otra alternativa es usar las pruebas gratuitas de productos como GitHub Copilot y Windsurf. Pero con el tiempo, también te pedirán tarjeta de crédito.
Si te sientes frustrado por “otro coste más de API”, merece la pena hacer una comprobación de realidad rápida. El autocompletado con IA implica una cantidad enorme de trabajo computacional detrás de escena; cada fragmento de código implica quizá 1.000.000.000.000.000 cálculos de coma flotante. Si me hubieras pedido hace 5 años que predijera cuánto costaría esto, habría dicho: “no seas ridículo — no será posible en nuestras vidas”.
Si hubieras dicho: “¡De hecho, Juan Gabriel, sí lo será! ¡En 5 años! ¿Cuánto costará?”, yo habría estimado 2.000 – 20.000 dólares al mes, para un superordenador.
Con esto en mente, el hecho de que puedas tener esto por 20 $ al mes es un pequeño milagro. Lo entiendo — todos estos costes son molestos — pero conviene tener en cuenta la capacidad extraordinaria que obtenemos por esos 20 $.
18. La API de OpenAI (u otra IA) no funciona
Primero, revisa el mensaje de error que estás recibiendo de OpenAI — debería ser la última línea del mensaje de error. Esto debería permitirte determinar si el problema es:
(a) se proporcionó una clave incorrecta
(b) hay un error de conexión con la API
(c) hay un error de cuota, facturación o rate limiting
Si no puedes determinarlo, entonces recorre cada uno de estos pasos por turno.
(a) Clave incorrecta proporcionada
Si indica que se proporcionó una clave de API incorrecta, revisa la pregunta 6 anterior. En particular, completa el laboratorio de resolución de problemas para llegar al fondo del asunto.
(b) Error de conexión con la API
Consulta la pregunta 15 anterior. Esto probablemente sea una restricción de tu infraestructura de seguridad corporativa o tu VPN; hay soluciones y también una alternativa temporal.
(c) Error de cuota insuficiente, facturación o rate limiting
Si indica que hay un problema de facturación (“Insufficient quota”, “Rate Limiting” o errores de “insufficient funds”), entonces por favor sigue este plan de resolución a prueba de balas en 8 pasos.
Si no estás seguro de cómo hacer una captura de pantalla (no es lo mismo que hacer una foto a la pantalla), consulta esto:
https://chatgpt.com/share/681f691b-6644-8012-b07d-207c68f259d5
Vamos allá:
Visita
https://platform.openai.com/settings/organization/billing/overview
y asegúrate de que aparece un saldo positivo y que tienes un método de pago válido registrado.
Haz una captura de pantalla de esto y llámala Screenshot1.A continuación, visita
https://platform.openai.com/settings/organization/api-keys
y pulsa el botón rojo de la papelera junto a cada clave, de modo que elimines todas las claves que aparecen en pantalla.Luego, haz clic en “Create New Secret Key” en la parte superior derecha.
Para Project, selecciona “Default project” y para permisos, All.
Haz una captura de la siguiente pantalla con tu clave (llámala Screenshot2) y copia también la clave directamente a tu portapapeles.Después de crear la clave, vuelve a
https://platform.openai.com/settings/organization/api-keys
y haz otra captura de pantalla (llámala Screenshot3) mostrando que la nueva clave es tu única clave.A continuación, edita tu archivo
.envy pega la nueva clave directamente desde el portapapeles, de modo que tu archivo.envcontenga algo como:Después de guardarlo, haz una captura de pantalla del archivo guardado (llámala Screenshot4).
Si estás usando Cursor, haz una captura de Cursor con el archivo.envseleccionado a la izquierda y el contenido visible a la derecha.
Si no estás usando Cursor, abre una nueva Terminal o Powershell, ve al directorio raíz del proyecto y ejecutacat .envotype .envsegún tu sistema (prueba ambos) para listar el contenido, y luego haz la Screenshot4.A continuación, visita
https://platform.openai.com/chat/edit?models=gpt-4.1-nano
y en el panel de la derecha escribe “Hi there” y asegúrate de que responde.
Haz una captura de pantalla (llámala Screenshot5) mostrando la respuesta.Si esto no funciona, entonces tu problema es que OpenAI no puede acceder a tu tarjeta de crédito.
Por favor contacta con OpenAI a través del chat en help.openai.com o por email en [email protected].Para que conste, la mayoría de las veces esto acaba siendo un problema con tu compañía de tarjeta de crédito que no acepta el cargo de OpenAI… ¡OpenAI suele estar encantado de aceptar tu dinero si se lo permites!
También haz una captura de pantalla de:
https://platform.openai.com/settings/organization/limits
desplazándote hacia abajo en esa página web e incluyendo todas las secciones.
Llámalas Screenshot6a, Screenshot6b, etc.Finalmente, reinicia tu ordenador para limpiar cualquier variable de entorno.
Vuelve al laboratorio de resolución de problemas. Asegúrate de ejecutar:Ejecuta la celda que imprime la clave de API de OpenAI, y cuando se muestre en tu notebook, haz una captura de pantalla y llámala Screenshot7.
Luego ejecuta la llamada a OpenAI y haz una captura de pantalla del resultado incluyendo la traza completa del error, y llámala Screenshot8.
Y por último, envíame un email a [email protected] e incluye las 8 capturas de pantalla. Creo que podré detectar el problema rápidamente.
Al mismo tiempo, envía un email a [email protected]; envíales solo la Screenshot8, no las otras capturas. Indícales:
Tienes 1 clave de API con permisos completos
El playground en platform.openai.com funciona
Tienes
OPENAI_API_KEYconfigurada en tu código Python y coincideCuando llamas a la API de Chat Completions de OpenAI, falla (ver captura adjunta)
Entre OpenAI y yo, ¡lo resolveremos muy rápido!
19. MCP no funciona en el curso de Agentic AI – normalmente un error de Connection Refused o timeout
Si esto es la “vista previa” de MCP en la Semana 5 — entonces por favor espera hasta la Semana 6.
Si esto es en la Semana 6, Día 1…
Primero, si estás en un PC con Windows, asegúrate de haber completado todo lo indicado en SETUP-wsl.md.
Después, tanto usuarios de PC como de Mac deben haber completado todo lo indicado en SETUP-node.md.
(Y usuarios de PC, debéis aseguraros de que node y playwright estén instalados en vuestra caja Ubuntu, no en Windows).
A continuación, prueba todos los servidores MCP en el laboratorio 1 de la semana 6, para establecer en qué situación estás:
(a) ¡Ningún servidor MCP funciona!
(b) Los servidores MCP
uvxfuncionan (basados en Python) pero losnpxno (basados en node)(c) Los servidores MCP
uvxfuncionan, algunos servidoresnpxfuncionan, ¡pero Playwright no!
Teoría 1: Múltiples instalaciones de WSL
¡Este es el problema más común en PCs!
Si estás en las situaciones (a) o (b) y estás en Windows WSL, una posibilidad es que tu ordenador tenga múltiples “instancias” de WSL (diferentes instalaciones) y Cursor esté conectándose a la incorrecta. Esto suele ocurrir si ya tienes un WSL para Docker Desktop.
Desde Powershell, ejecuta:
¿Tienes varias? Prueba un comando como este para asegurarte de que estableces la correcta como distribución por defecto:
Y luego otra vez:
Y para iniciar la versión correcta de WSL:
Puedes intentar apagar o incluso desinstalar las que no estés usando.
Y en Cursor, cuando te conectes a WSL, asegúrate de seleccionar la distribución correcta.
Teoría 2: ruta de node
Si estás en la situación (b), entonces intenta ejecutar esto en el mismo laboratorio:
Y si eso no funciona, ve a una terminal en Cursor (que debería ser Ubuntu para usuarios de WSL) y ejecuta:
Eso debería darte una ruta completa; usa la ruta completa en el laboratorio:
Y si eso funciona, entonces sustituye “npx” por la ruta completa en tus parámetros.
Teoría 3: problemas de instalación de Playwright / Chromium
Si estás en el escenario (c), entonces intenta de nuevo instalar Playwright y Chromium.
Y si no consigues que funcione, te sugiero seguir adelante y dejar fuera el servidor MCP de Playwright.
Puedes usar “fetch” en su lugar para todo este curso — ¡funcionará perfectamente!
20. Estoy obteniendo un error permission denied al hacer git push al repositorio
Ajá — sí, eso es lo esperado y es lo habitual en el desarrollo Open Source. Con 250.000 estudiantes en los cursos, podría volverse caótico si todo el mundo tuviera la capacidad de hacer push al repositorio.
En su lugar, la práctica común es que hagas un fork del repositorio, hagas push a tu fork en tu cuenta y luego envíes un Pull Request (conocido como PR) para que yo pueda fusionar tu cambio en el repositorio principal.
Por favor consulta esta guía sobre Git y GitHub — la tercera sección — para instrucciones detalladas sobre cómo enviar un PR.
Asegúrate de que todos tus cambios estén en los directorios de contribuciones de la comunidad y que las salidas de los notebooks estén borradas.
¡Tengo muchas ganas de ver tu trabajo y compartirlo con todo el mundo!
21. ¿Qué significa “opinionated” y “batteries included” cuando se describen frameworks y librerías?
Sí — a menudo oyes a la gente describir frameworks como opinionated y batteries included. Esto es lo que significa:
Un framework opinionated es aquel que es prescriptivo sobre cómo deberían hacerse las cosas. A menudo viene con una estructura predefinida, arquitectura, terminología, abstracciones y convenciones.
Esto te permite avanzar rápido, tener consistencia y reutilizar.
La desventaja es que es menos flexible; necesitas hacer las cosas a su manera, de lo contrario puedes acabar luchando contra el framework. Además, las abstracciones pueden ocultar parte de lo que está ocurriendo, haciendo que la depuración sea más difícil.
Podrías decir: en el mundo frontend, React es opinionated frente a JQuery.
Así que CrewAI es un gran ejemplo. Escribes:
y genera un proyecto inicial completo para ti con unas 10 carpetas y 5 archivos. Crea archivos de configuración especiales en formato yaml. En lugar de un System Prompt, proporcionas campos como “role” y “backstory”. El equipo de desarrollo de Crew tiene una opinión fuerte de que esta es una buena forma de construir un system prompt, y su opinión está integrada en el framework — de ahí “opinionated”.
Y batteries-included es una expresión relacionada — solapada pero no idéntica — que significa que viene con muchas capacidades listas para usar, todo incluido.
Muchos frameworks son ambos o ninguno: CrewAI es ambos. Por ejemplo, CrewAI viene con muchas funcionalidades útiles, como herramientas para ejecutar código en un contenedor Docker seguro, y muchas formas de memoria, todo integrado en el framework.
Pero, por ejemplo:
React es opinionated pero no especialmente batteries-included. No incluye enrutado, gestión de estado, etc. Tú eliges y compones.
Por el contrario, podrías decir que la librería estándar de Python es batteries-included pero no especialmente opinionated. Hay muchísimas librerías como csv y concurrent.futures que aportan mucha funcionalidad, con gran flexibilidad sobre cómo usarlas.
Todo esto es totalmente subjetivo y relativo. Podrías considerar React opinionated comparado con JQuery, pero probablemente es menos opinionated comparado con Angular. Y yo considero FastAPI como poco opinionated, especialmente comparado con Django, pero es más opinionated que Flask.
22. Estoy usando VS Code (u otro IDE) en lugar de Cursor, y tengo problemas configurando el Kernel o el entorno, y obtengo errores de importación
Sí — VS Code puede ser un poco más complejo que Cursor para seleccionar el Kernel correcto. Aquí tienes instrucciones de un amigo; también puedes buscar en Google para aprender más sobre cómo elegir el Kernel y el entorno de Python correctos en VS Code:
https://chatgpt.com/share/68f2762d-3254-8012-9526-3544b17811d4
Para otros IDEs, pregunta a ChatGPT o Claude por instrucciones. Dile a ChatGPT que estás usando uv, que tienes una carpeta .venv en el directorio raíz del proyecto creada por uv sync, que estás usando un IDE concreto y que necesitas configurar el Kernel para un notebook. Debería ponerte en el camino correcto rápidamente, ¡y los errores de importación deberían ser cosa del pasado!
23. Estoy obteniendo un Internal Server Error u otro error al intentar desplegar mi aplicación en Vercel en el curso de producción
Mira, no me odies, pero tengo que señalar que la probabilidad abrumadora es que hayas cometido un error en algún punto del proceso. Siempre es posible que haya una caída de Vercel (eso afectó a algunos estudiantes), pero es más probable que haya un error.
Los problemas más comunes son que OPENAI_API_KEY no esté configurada en todos los entornos. Un estudiante escribió mal vercel.json, otro tenía requirements.txt en el lugar incorrecto, varios tenían errores tipográficos en los nombres de los paquetes.
La cuestión es esta: tú estás en una posición única para resolver esto, y es difícil que otra persona lo haga porque no tiene acceso a tu entorno. Existen técnicas para resolver problemas de entorno. La habilidad más importante que debes adquirir en este curso es el conjunto personal de herramientas para profundizar en problemas como este. Y esta es una gran oportunidad para hacerlo.
Paso 1: Recopila información
Es esencial empezar intentando identificar el problema subyacente, en lugar de adivinar soluciones. A los LLMs les encanta adivinar soluciones y poner parches por todas partes; a veces eso supera el problema, pero luego introduce nuevos problemas más adelante.
Mira la consola de JavaScript en tu navegador (si no sabes cómo, búscalo en Google para tu navegador). Haz clic por las pantallas de Vercel para encontrar los logs del servidor. Encuentra también las variables de entorno y comprueba que tienen buena pinta. Revisa las páginas de estado como:
Recopila toda la información posible para tener la mejor visión del problema.
Paso 2: Simplifica, simplifica, simplifica hasta obtener una base funcional
Este es el arte oscuro de la resolución de problemas de entorno. Es tedioso, pero casi siempre llega al problema.
Elimina funcionalidad hasta que funcione. ¿Estás obteniendo un internal server error? Sustituye tu servidor por:
Si eso no funciona, sigue simplificando hasta que sí funcione. Deberías llegar a un punto en el que puedas obtener una respuesta del servidor.
Paso 3: Añade funcionalidad gradualmente, un paso diminuto cada vez
Ahora añade funcionalidad muy lentamente. Por ejemplo, empieza con algo como esto:
Ve muy despacio. El problema casi siempre se revelará.
Reflexiones finales
Está bien pedir ayuda a un LLM, pero ten cuidado con la respuesta. Cuando un LLM no sabe algo, a menudo dará con mucha confianza basura de LLM (LLM slop). Tienden a sacar conclusiones precipitadas y a dar respuestas sin sentido.
Los LLMs tienden a decirte con mucha seguridad que necesitas configurar la clave de API de OpenAI, porque no son conscientes de que Vercel ya configura esta variable de entorno.
Y si tienes esta línea:
A los LLMs les encanta decirte que necesitas reemplazarla por:
¡Lo cual no hace ninguna diferencia! ¡Ambas líneas son funcionalmente idénticas!
Instruye siempre a un LLM como Cursor Agent o Claude Code para que identifique y demuestre la causa raíz de un problema antes de proponer soluciones.
Y por favor publica tu investigación en Udemy con todo el detalle posible, incluyendo la consola de JavaScript y la información de los logs, para que otros estudiantes y yo podamos ayudar. Pero nadie está en mejor posición que tú para llegar al fondo del problema. Es doloroso, pero normalmente acaba habiendo una explicación sencilla.
24. En Cursor o VS Code, no veo las mismas carpetas y archivos que tú
Primero, asegúrate de que estás viendo el Explorador de Archivos en el panel izquierdo. Si no, ve al menú View >> Explorer.
Ahora deberías ver el nombre del proyecto (como AGENTS, LLM_ENGINEERING o PRODUCTION) en mayúsculas en la parte superior izquierda. Si no lo ves, necesitas abrir el proyecto correctamente.
Ve al menú File >> New Window, luego Open Project, encuentra tu carpeta de proyectos y haz doble clic en la carpeta raíz del proyecto (como llm_engineering, agents o production).
Ahora deberías ver el contenido del repositorio, con carpetas como guides y otras. Ahora haz clic en el botón OPEN para abrir este proyecto en Cursor. ¡Deberías estar listo!
25. No puedo seleccionar el Kernel
Asumo que estás usando Cursor. Si estás usando VS Code, revisa la pregunta 22. También asumo que ves el nombre de este proyecto (como LLM_ENGINEERING, AGENTS o PRODUCTION) en mayúsculas en la parte superior izquierda. Si no, revisa la pregunta 24.
Contexto: ¿qué es un Kernel?
Estamos usando este estupendo entorno interactivo llamado “Jupyter Notebook”. Jupyter es la empresa que creó estos entornos — originalmente se llamaban iPython Notebooks, y aún verás ese nombre en algunos sitios. Estos notebooks son geniales para ejecutar experimentos.
En un notebook, el código está dividido en celdas, y puedes ejecutar cada celda pulsando Shift+Enter. Lo que realmente está ocurriendo es que hay una versión de Python ejecutándose entre bastidores. Cada vez que pulsas Shift+Enter, el código de esa celda se envía a ese programa Python y se ejecuta.
Ese programa Python que se ejecuta en segundo plano se llama el Kernel. Necesitamos usar la versión correcta de Python con los paquetes correctos instalados; de lo contrario, obtendremos errores de importación y otros problemas.
Primero: asegurarnos de que Cursor está bien configurado
Comencemos asegurándonos de que tienes las extensiones correctas de Cursor instaladas. Ve al menú View >> Extensions para ver las extensiones en la barra lateral izquierda.
Busca “Python”. Verás extensiones de Python de Anysphere (los creadores de Cursor) y de ms-python (¡Microsoft!). Asegúrate de que una de ellas esté instalada; cualquiera es válida.
Luego busca “Jupyter” y asegúrate de que la extensión de ms-toolsai esté instalada.
Nota al margen: al instalar extensiones, siempre merece la pena comprobar que parecen legítimas. Verás que ambas extensiones tienen millones de descargas y provienen de empresas reputadas — así que todo bien.
Ahora es el momento de seleccionar el Kernel
Ahora vuelve al menú View >> Explorer para recuperar los archivos. Vuelve a tu laboratorio. Haz clic en el botón Select Kernel.
Si te pide algo como “Install Recommended Extensions”, selecciónalo.
Si ves una opción “Select Another Kernel…”, elígela.
Puede que veas dos opciones: Python Environments y Existing Jupyter Server; si es así, elige Python Environments.
En este punto, deberías estar viendo una lista de posibles kernels de Python entre los que puedes elegir.
El Kernel que estás buscando será normalmente el primero. A menudo será el recomendado. Pero lo importante es que tenga esta forma:
Es importante que la ruta (la parte mostrada en texto más tenue) comience por .venv. Debe hacer referencia a la carpeta .venv en el directorio actual.
Si no ves este entorno entre los disponibles
Necesitaremos forzar a Cursor a que vea este Kernel. Si te sorprende el paso 1, debo mencionar que Cursor está construido sobre VS Code.
En Mac: desde el menú Cursor, elige Settings >> VS Code Settings
(IMPORTANTE: asegúrate de seleccionar VS Code Settings, no Cursor Settings)
En Windows PC: desde el menú File, elige Preferences >> VS Code Settings
(IMPORTANTE: selecciona VS Code Settings, no Cursor Settings)
En la barra de búsqueda de Settings, escribe “venv”.
En el campo “Path to folder with a list of Virtual Environments”, introduce la ruta al directorio raíz del proyecto, por ejemplo:
C:\Users\username\projects\llm_engineering(Windows)/Users/username/projects/llm_engineering(Mac o Linux)
(O sustituye llm_engineering por agents o production según el curso).
Después intenta seleccionar el Kernel de nuevo.
Y si eso no funciona, ¡avísame! Tengo formas aún más agresivas de forzar a Cursor a seleccionar el Kernel correcto como último recurso…
26. Tengo problemas con el servidor MCP mcp-memory-libsql
Puede que estés obteniendo un error como:
Por favor cambia este servidor MCP por el servidor MCP de referencia de Anthropic para memoria; utiliza archivos JSON en lugar de una base de datos SQL. Estos son los parámetros:
27. Mi script de Python no muestra Markdown — quizá con el error 'NoneType' object has no attribute 'display_id'
¡Ajá! Tienes algo que funciona bien en un laboratorio con Markdown visible. Luego lo conviertes en un módulo Python y ejecutas el módulo esperando ver la salida en la Terminal, y falla. ¿Por qué?
Primero, cubramos algunos fundamentos. Cuando ejecutas un script de Python desde la línea de comandos, estás ejecutando código como una CLI (Command Line Interface). Tu terminal lanza el proceso y observa si tiene salida. Si la tiene, los caracteres se muestran en la ventana de la Terminal. Esto se conoce como standard out.
Cuando ejecutas un notebook, en realidad estás ejecutando una aplicación web (Jupyter). La aplicación web gestiona un proceso de Python (el Kernel). Esta aplicación web toma fragmentos de código (las celdas) y te permite ejecutarlos. En función de los resultados, Jupyter muestra cosas en el área debajo de cada celda — la salida de la celda.
La salida de la celda es básicamente contenido web. Jupyter puede mostrar texto, imágenes, audio — o incluso HTML puro si quieres. Si tu código tiene salida estándar, Jupyter la muestra. Jupyter tiene código auxiliar que permite mostrar contenido gráfico, como:
Con esta base, la situación debería estar clara. Un proceso Python que se ejecuta en la línea de comandos no puede mostrar contenido web en la Terminal — imagina lo extraño que sería que aparecieran gráficos y sonido en la Terminal…
Markdown es una forma abreviada de contenido HTML, y Jupyter puede mostrarlo porque Jupyter es una plataforma basada en web.
Entonces, ¿cuál es la solución?
La más sencilla es usar una plataforma de interfaz adecuada como Gradio, que cubrimos en todos mis cursos. Gradio (semana 2 del Core Track) te permitirá mostrar contenido HTML en una ventana del navegador — que es donde el contenido HTML funciona, no en una Terminal.
Mientras tanto, limítate a mostrar texto en la Terminal.
Si quieres una solución provisional, hay un término medio. La Terminal permite algunos gráficos limitados basados en caracteres de control especiales. Puedes instalar un paquete llamado rich:
https://rich.readthedocs.io/en/latest/introduction.html
Y luego pedir a tu LLM que genere salida en el formato adecuado para imprimirse con rich. Verás texto que se parece un poco a herramientas de línea de comandos como Claude Code — semi-formateado, pero aún usando caracteres.
Pero recomiendo esperar a Gradio. Y para un módulo Python puro que se ejecute en la línea de comandos, quédate con texto plano usando print().
28. Tengo problemas con n8n (del curso Agentic Track)
Ah — tengo malas noticias y buenas noticias para ti. Empecemos por las malas.
Este curso no trata realmente sobre n8n, y no cubro n8n más allá de esta simple demo. Te muestro n8n al principio y te animo a probarlo para que tengas una idea de cómo es una solución agéntica. Quiero que experimentes la “autonomía” en acción.
n8n está pensado principalmente para usuarios de IA — personas que quieren usar IA para construir flujos de trabajo, ya sea sin código o con poco código, y que no quieren profundizar demasiado a nivel técnico.
El curso está pensado principalmente para aspirantes a ingenieros de IA — personas que quieren construir software agéntico preparado para la industria. El curso es un paso hacia convertirte en ingeniero de IA agéntica en la industria; un espacio emocionante y muy demandado. Este curso es para profesionales de IA en crecimiento. Al final del curso, serías capaz de crear tu propio n8n — eres un CREADOR de IA, no un USUARIO de IA.
Así que si tienes problemas con n8n, te pediría que veas el resto de las clases de la Semana 1, Día 1: explico rápidamente que este no es el propósito del curso y pasamos al trabajo fundamental en la frontera de la IA.
Siento si esto no es lo que esperabas del curso — revisa por favor el plan de estudios completo y los objetivos (ver preguntas 1 y 3 más arriba).
¿Y las buenas noticias? En realidad estoy preparando un curso de n8n, como parte de un itinerario para AI Builders en lugar de AI Engineers. Si eso suena a algo que te interesaría, dame unas semanas y debería tener algo genial para ti.
29. Tengo problemas enviando emails con SendGrid
Muchos estudiantes han reportado frustraciones al registrarse en SendGrid o al conseguir que los emails se envíen de forma fiable en el curso de agentes. Hay muchas alternativas, y hay un contexto comercial importante que explicar.
Primera alternativa – usar Resend
Muchos estudiantes han usado con éxito Resend como alternativa. Hay una implementación en el directorio community_contributions llamada 2_lab2_with_resend_email. Puedes crear tu cuenta en:
y luego usar código como este:
Segunda alternativa – usar PushOver
En la Semana 1 creamos una función para enviar una notificación push; puedes reutilizarla aquí directamente.
Tercera alternativa – simplemente imprimir o escribir a un archivo
El propósito de este laboratorio es demostrar IA agéntica, no enviar realmente emails. Es totalmente válido simplemente hacer print() del contenido del email o escribirlo en un archivo local para demostrar que funciona.
Contexto comercial crucial
Varios estudiantes se han frustrado con los controles de SendGrid. Un estudiante comentó en la plataforma:
“Sugeriría que el curso probablemente no debería dar publicidad gratuita a un sitio web claramente anti-consumidor.”
Puede ser útil que explique el contexto más amplio.
Enviar emails masivos es un tema delicado. Existen regulaciones estrictas y sanciones en algunas regiones contra el envío de emails comerciales no solicitados. Empresas como SendGrid están en una posición difícil: si envían muchos emails que se marcan como spam, pueden ser penalizadas por proveedores como Google, que dejarían de entregar emails desde SendGrid, lo que destruiría su negocio.
SendGrid pertenece a Twilio, una empresa bien considerada y común en la industria. Necesitan mantener su estatus como proveedor confiable de email.
Seamos honestos: en este ejemplo, estamos creando emails de ventas con nuestro SDR automatizado. Básicamente estamos generando emails que podrían considerarse spam. Los enviamos a nosotros mismos, y asumimos que se enviarían a listas con consentimiento, por lo que todo es correcto. Pero francamente, es completamente razonable que SendGrid levante una ceja — es una zona gris.
Quise usar SendGrid porque es un líder de la industria, pero es comprensible que en algunas regiones haya obstáculos adicionales, y hay buenas alternativas si SendGrid no funciona.
¡Espero que esto tenga sentido!
30. Estoy obteniendo un error de CrewAI: AttributeError: module ‘signal’ has no attribute ‘SIGHUP’
Este es un error de la versión más reciente de CrewAI que, con suerte, arreglarán pronto. Si buscas “SIGHUP” en las preguntas y respuestas de Udemy, verás a otros estudiantes que se han encontrado con esto.
Hasta que CrewAI lo solucione, la solución temporal es bajar la versión de la herramienta CrewAI a la versión anterior que funcionaba:
Si has creado un proyecto CrewAI con la versión defectuosa, necesitarás recrear el proyecto (crewai create crew …) después de hacer este downgrade. Esto debería resolver el problema.