La guía del módulo entra siempre por la izquierda. El ejercicio de Imagen te obliga a entrar por la derecha, y ahí es donde suele romperse la intuición: no falla el modelo, falla que estás llamando a otra puerta con la llave de la primera.
.env.| Decisión | AI Studio | Vertex AI |
|---|---|---|
| Qué guardas en secreto | Una cadena | Un fichero JSON de credenciales |
| Vida de la credencial | Indefinida | Corta: el token expira y se renueva |
| La URL identifica… | Nada tuyo | Proyecto y región |
| Quién paga | Tu cuenta personal | El proyecto de Cloud, con su facturación |
| Coste de arranque | Minutos | Varios pasos de IAM antes de la primera llamada |
La fila de la vida de la credencial es la que más código cambia. Con AI Studio lees la clave una vez al arrancar y ya no vuelves a pensar en ella. Con Vertex AI, la credencial es un objeto con estado: pedir un token y guardarlo para siempre funciona en la primera ejecución y falla en la siguiente.
// una clave que no caduca es cómoda hasta el día que aparece en un commitY una consecuencia menos obvia: el 400 Bad Request / User location is not supported que la
guía lista en su tabla de errores es un problema del plano, no del modelo. La disponibilidad por
región no es la misma en las dos puertas, así que un mismo modelo puede responderte por una y rechazarte
por la otra.
Antes de copiar un GenerativeModel('…') de la guía, mira lo que la propia guía escribe. Esto
es un inventario literal, no una interpretación:
| Dónde aparece | Nombre que escribe la guía |
|---|---|
| Primer script de generación de texto | gemini-1.5-flash |
Ejemplo de GenerationConfig, misma lección | gemini-1.2-flash |
| Puente con LangChain, misma lección | gemini-2.5-flash |
| Validación de esa misma lección | models/gemini-2.5-flash |
Cuatro nombres en una sola lección de treinta minutos. Ese models/ del cuarto no es un
descuido: es el identificador completo que devuelve el listado de la API, mientras que el constructor acepta
la forma corta. Los otros tres sí piden explicación.
# El listado es la fuente de verdad, no el PDF
for m in genai.list_models():
if 'generateContent' in m.supported_generation_methods:
print(m.name)
gemini-1.2? Si no aparece,
¿es un error tipográfico de la guía o un modelo retirado? Dos: la guía instala
google-generativeai y hace import google.generativeai as genai en los cinco
scripts del módulo. ¿Sigue siendo ese el paquete que Google recomienda para código nuevo, o hay un SDK
posterior con otro nombre de import? La respuesta no cambia una línea: cambia la primera línea de todos
los scripts que escribas a partir de aquí.
Corre el listado de arriba con tu clave y compara la salida con los cuatro nombres de la tabla. Anota en
auditoria/ cuáles existen, cuáles no y qué versión del paquete tienes instalada
(pip show google-generativeai). Es un minuto de trabajo y te ahorra depurar un
404 creyendo que el problema es tu clave.