Saltar al contenido principal

Google Gemini

Definición

Google Gemini es la familia insignia de modelos de lenguaje grande multimodales de Google y la plataforma que los rodea. Anunciada a finales de 2023 y sucediendo a la familia PaLM 2, Gemini fue diseñada desde cero para razonar sobre texto, imágenes, video, audio y código dentro de una única arquitectura de modelo unificada. A diferencia de los sistemas que añaden visión mediante pipelines separados, la multimodalidad nativa de Gemini significa que el modelo procesa todas las modalidades de forma conjunta durante el entrenamiento y la inferencia, lo que permite un razonamiento entre modalidades más rico.

La familia Gemini abarca cuatro niveles ajustados para diferentes casos de uso: Gemini Ultra (el más capaz, orientado a tareas empresariales e investigación complejas), Gemini Pro (el equilibrado para uso comercial amplio), Gemini Flash (optimizado para aplicaciones de baja latencia y alto rendimiento a costo reducido) y Gemini Nano (inferencia en dispositivo para Android y hardware de borde). Cada nivel tiene versión (p. ej., Gemini 1.5 Pro, Gemini 2.0 Flash) y Google publica nuevas versiones de forma continua.

Los desarrolladores acceden a Gemini a través de dos interfaces complementarias. Google AI Studio es un entorno de prototipado gratuito basado en navegador que proporciona claves de API y permite experimentar con prompts, instrucciones del sistema y entradas multimodales sin ninguna configuración de infraestructura. Vertex AI es la plataforma ML gestionada de Google Cloud y el camino recomendado para cargas de trabajo de producción — añade controles empresariales como VPC Service Controls, IAM, registro de auditoría, pipelines de ajuste fino y endpoints con SLA. Ambas interfaces consumen los mismos modelos Gemini subyacentes a través de la Generative Language API.

Cómo funciona

Generative Language API

La Generative Language API (generativelanguage.googleapis.com) es la interfaz REST unificada para todos los modelos Gemini. Las solicitudes se estructuran como un array contents — cada elemento tiene un role (user o model) y una o más parts (texto, datos en línea o URIs de archivo). La API devuelve un array candidates con content, finishReason y safetyRatings. Los recuentos de tokens, los metadatos de fundamentación y las respuestas de llamadas a funciones se devuelven en el mismo envelope. Las claves de API de AI Studio funcionan para el desarrollo; las cargas de trabajo de producción usan credenciales de cuenta de servicio a través de Vertex AI.

Entradas multimodales — imagen, video y audio

Gemini acepta imágenes (JPEG, PNG, WebP, HEIC), video (MP4, MOV, AVI hasta varias horas) y audio (MP3, WAV, FLAC) directamente junto con texto en una sola solicitud. Las imágenes pueden enviarse como datos base64 en línea o mediante URIs de Cloud Storage. Para videos largos, la File API sube el recurso de forma asíncrona y devuelve un URI de archivo que puede referenciarse en llamadas posteriores a generateContent. El modelo tokeniza las modalidades no textuales internamente, por lo que se aplica la misma contabilidad de ventana de contexto y los mismos mecanismos de atención de forma uniforme, lo que permite tareas como "resume la pista de audio de este video e identifica cuándo el hablante cambia de tema".

Gemini admite generación fundamentada mediante recuperación a través de un parámetro tools opcional que habilita google_search_retrieval. Cuando esta herramienta está activa, el modelo puede emitir consultas de búsqueda durante la generación, recuperar resultados web en tiempo real y sintetizarlos en su respuesta — devolviendo citas junto al texto generado. Esto es especialmente valioso para consultas densas en hechos o sensibles al tiempo donde un modelo paramétrico estático alucinería o devolvería información desactualizada. La fundamentación está disponible tanto en AI Studio como en Vertex AI y puede combinarse con otras herramientas.

Integración con Vertex AI

En Vertex AI, se accede a Gemini a través del SDK de Python vertexai (aiplatform). Vertex añade ajuste fino (pipelines de ajuste fino supervisado y RLHF), conjuntos de datos de evaluación de modelos, jardines de modelos para comparar modelos, despliegue en endpoints dedicados con escalado automático y Vertex AI Pipelines para orquestar flujos de trabajo ML de extremo a extremo. Los clientes empresariales se benefician de garantías de residencia de datos, redes privadas mediante VPC Service Controls y Cloud Audit Logs para cada llamada API — características no disponibles en AI Studio.

Cuándo usar / Cuándo NO usar

Usar cuandoEvitar cuando
Se necesita razonamiento multimodal nativo sobre imágenes, video o audio junto con textoLa carga de trabajo es solo texto y se prefiere un proveedor con un historial más largo de API pública
Ya se trabaja en Google Cloud y se desea una integración profunda con Vertex AI / GCP (IAM, VPC, Audit Logs)Existen requisitos estrictos de residencia de datos en regiones donde Vertex AI aún no está disponible
Se requiere fundamentación en tiempo real mediante Google SearchLa aplicación necesita salidas deterministas y reproducibles (la fundamentación introduce variabilidad por la búsqueda en vivo)
La eficiencia de costos a escala importa — Gemini Flash es muy competitivo en precio por tokenSe necesita un modelo de pesos abiertos ampliamente documentado para ejecutar en instalaciones propias
Se desea un entorno de prototipado gratuito y sin fricción sin tarjeta de crédito (nivel gratuito de AI Studio)El equipo ya está profundamente invertido en la superficie de la API de OpenAI y el costo de migración es alto

Comparaciones

CriterioGoogle GeminiOpenAI GPT-4oAnthropic Claude 3.5
Capacidad multimodalNativa — texto, imagen, video, audio en un modeloTexto + imagen (GPT-4V); audio mediante APIs Whisper/TTS separadasTexto + imagen (Claude 3); sin video/audio nativo
Integración empresarial / nubeIntegración profunda con GCP via Vertex AI — IAM, VPC, Audit Logs, ajuste finoAzure OpenAI Service para empresas; portabilidad limitada fuera de AzureAWS Bedrock y API directa; sin integración GCP nativa
Fundamentación / recuperación en tiempo realHerramienta de fundamentación Google Search integradaPlugin de navegación web (ChatGPT); sin fundamentación de API nativaSin búsqueda integrada; depende del RAG proporcionado por el usuario
Ventana de contextoHasta 1M tokens (Gemini 1.5 Pro)128k tokens (GPT-4o)200k tokens (Claude 3.5 Sonnet)
Disponibilidad de pesos abiertosSolo API cerradaSolo API cerradaSolo API cerrada
Modelo de preciosPor token; nivel Flash muy competitivoPor token; GPT-4o rango medioPor token; comparable a GPT-4o
Ajuste finoAjuste fino supervisado en Vertex AIAPI de ajuste fino para GPT-3.5/4o-miniSin API de ajuste fino pública

Ejemplos de código

# google_gemini_examples.py
# Demonstrates text generation, multimodal image input, and embeddings
# using the google-generativeai SDK.
# pip install google-generativeai pillow

import google.generativeai as genai
import pathlib

# ── Configuration ─────────────────────────────────────────────────────────────
# Set your API key from https://aistudio.google.com/app/apikey
genai.configure(api_key="YOUR_API_KEY")


# ── 1. Text generation ────────────────────────────────────────────────────────
def text_generation_example():
"""Simple single-turn text completion with Gemini Flash."""
model = genai.GenerativeModel(
model_name="gemini-1.5-flash",
system_instruction="You are a concise technical writer.",
)

response = model.generate_content(
"Explain the difference between supervised and unsupervised learning "
"in three sentences.",
generation_config=genai.GenerationConfig(
temperature=0.4,
max_output_tokens=256,
),
)

print("=== Text Generation ===")
print(response.text)
print(f"Finish reason : {response.candidates[0].finish_reason}")
print(f"Total tokens : {response.usage_metadata.total_token_count}")


# ── 2. Multimodal — image input ───────────────────────────────────────────────
def multimodal_image_example(image_path: str):
"""
Send a local image alongside a text prompt to Gemini Pro.
The model reasons over both modalities jointly.
"""
model = genai.GenerativeModel("gemini-1.5-pro")

image_data = pathlib.Path(image_path).read_bytes()
# Inline image part
image_part = {
"mime_type": "image/jpeg", # adjust to image/png, image/webp as needed
"data": image_data,
}

response = model.generate_content(
[image_part, "Describe this image and identify any text present in it."]
)

print("\n=== Multimodal Image Input ===")
print(response.text)


# ── 3. Embeddings ─────────────────────────────────────────────────────────────
def embeddings_example(texts: list[str]):
"""
Generate text embeddings using the text-embedding-004 model.
Embeddings can be used for semantic search, clustering, and classification.
"""
result = genai.embed_content(
model="models/text-embedding-004",
content=texts,
task_type="retrieval_document", # or retrieval_query, semantic_similarity
)

print("\n=== Embeddings ===")
for text, embedding in zip(texts, result["embedding"]):
print(f"Text : {text[:60]}...")
print(f"Dims : {len(embedding)}")
print(f"First 5 : {embedding[:5]}\n")


# ── 4. Multi-turn chat ────────────────────────────────────────────────────────
def multi_turn_chat_example():
"""Maintain conversational context using the chat interface."""
model = genai.GenerativeModel("gemini-1.5-flash")
chat = model.start_chat(history=[])

turns = [
"What is gradient descent?",
"How does the learning rate affect it?",
"What is Adam optimizer and how does it improve on basic gradient descent?",
]

print("\n=== Multi-turn Chat ===")
for user_message in turns:
response = chat.send_message(user_message)
print(f"User : {user_message}")
print(f"Model : {response.text}\n")


# ── Entry point ───────────────────────────────────────────────────────────────
if __name__ == "__main__":
text_generation_example()

# Provide a path to a local JPEG/PNG for multimodal demo
# multimodal_image_example("path/to/your/image.jpg")

embeddings_example([
"Machine learning is a subset of artificial intelligence.",
"Deep learning uses neural networks with many layers.",
"Reinforcement learning trains agents through reward signals.",
])

multi_turn_chat_example()

Recursos prácticos

Ver también