Skip to main content

Descripcion general

Google ofrece dos SDKs oficiales: @google/genai (JavaScript / TypeScript) y google-genai (Python), que cubren todos los endpoints de la API de Gemini. Al apuntar la baseUrl al gateway de AIHubMix y usar tu API Key de la plataforma, puedes invocar Interactions, Embeddings, Context Caching y otras capacidades no cubiertas por la capa compatible con OpenAI a traves del SDK nativo, sin modificar ningun codigo de negocio.

Inicio rapido

Instalacion

La Interactions API requiere @google/genai >= 2.0.0 o google-genai >= 2.0.0. Las solicitudes con versiones anteriores del SDK seran rechazadas por el backend de Google (legacy Interactions schema no longer supported).

Inicializar el cliente

La baseUrl es fija: https://aihubmix.com/gemini, diferente del endpoint compatible con OpenAI https://aihubmix.com/v1.

Interactions API

Interactions es la interfaz de inferencia de nueva generacion de Gemini. Devuelve objetos Interaction estructurados y admite generacion de texto, generacion nativa de imagenes (Nano Banana) y razonamiento en multiples pasos. Se admiten tanto el modo sincrono (interactions.create()) como el modo asincrono (Background Interactions: create(background: true) + get / cancel / delete).

Generacion de texto

Llama a interactions.create() para iniciar una inferencia. El objeto Interaction devuelto proporciona la propiedad de conveniencia output_text para obtener directamente la ultima salida de texto del modelo.

Generacion nativa de imagenes

Configura la modalidad de salida como imagen mediante response_format. El objeto Interaction devuelto proporciona la propiedad de conveniencia output_image, cuyo campo data contiene los datos de imagen codificados en Base64.
  • Modelo recomendado: gemini-3.1-flash-image (Nano Banana 2, modelo universal de generacion de imagenes).
  • Los valores de response_modalities deben estar en minusculas: ['text', 'image']; las mayusculas son la sintaxis de la API generateContent y devuelven un 400 en la Interactions API.
  • No envies delivery: 'inline' (400 Image delivery mode is not supported) — la Interactions API devuelve datos de imagen en modo inline por defecto.
Parametros de response_format:

Salida en streaming

Pasa stream: true para habilitar la transmision en streaming mediante Server-Sent Events (SSE). Los eventos llegan en el siguiente orden:
El texto incremental se obtiene mediante event.delta.text; el campo de tipo de evento es event_type.
JavaScript

Modo asincrono (Background Interactions)

Pasa background: true para iniciar una inferencia en segundo plano. La solicitud devuelve de inmediato un objeto Interaction con status igual a in_progress y con id como identificador de la tarea, mientras el modelo continua la inferencia en segundo plano. Consulta interactions.get(id) mediante polling para obtener el resultado, con un intervalo recomendado de 3 a 5 segundos. Resulta adecuado para inferencias largas y evita mantener una conexion persistente.
Mientras el resultado no esta listo, get() devuelve 400 o 403. Esto indica que la generacion aun no ha terminado, asi que continua con el polling en lugar de darlo por fallido. Solo una respuesta 200 incluye un status terminal (completed / failed / cancelled).
El id empieza por iact1_. Guardalo tal cual y usalo en todas las llamadas posteriores a get / cancel / delete. No lo truncues ni lo modifiques.

Cancelar y eliminar

JavaScript
  • background y stream no pueden usarse a la vez. Si se envian ambos, stream no surte efecto y se devuelve una respuesta JSON normal, por lo que el SDK falla al no poder obtener el objeto de stream.
  • Los modelos de imagen (como gemini-3.1-flash-image) no admiten el modo asincrono. Enviar background: true devuelve 400 Model 'xxx' does not support background interactions. Usa el modo sincrono para la generacion de imagenes.

Embeddings

Obtiene representaciones vectoriales (embeddings) de contenido textual o multimodal a traves del endpoint embedContent.
Para el endpoint compatible con OpenAI /v1/embeddings, consulta Embeddings vectoriales.

embedContent

Obtener embeddings por lotes

Pasa un array de Content al parametro contents de embedContent para obtener embeddings de multiples textos en una sola llamada:
JavaScript

Modelos y parametros disponibles

gemini-embedding-001 admite la especificacion del proposito del embedding mediante config.taskType para optimizar la calidad vectorial en tareas posteriores especificas:
gemini-embedding-2-preview no admite el parametro taskType. En su lugar, el tipo de tarea se especifica mediante un prefijo en el prompt (p. ej., search_query: ... o search_document: ...).

Context Caching (Cache explicito)

El cache explicito permite a los desarrolladores crear, consultar, referenciar y eliminar manualmente objetos CachedContent, ideal para escenarios donde el mismo contexto extenso necesita reutilizarse en multiples solicitudes. A diferencia del cache implicito, el cache explicito gestiona activamente el ciclo de vida desde el lado de la aplicacion.
El cache explicito solo esta disponible para la API generateContent. La Interactions API solo admite cache implicito.
Los modelos sin precios de almacenamiento configurados seran bloqueados por el gateway en solicitudes de creacion de cache (context caching is not available for model), para evitar costos de almacenamiento no contabilizados. Los modelos principales (gemini-2.5-flash, gemini-2.5-pro, etc.) ya estan configurados.

Crear CachedContent

Crea un cache mediante caches.create(). ttl (Time-To-Live) controla el periodo de validez del cache; al expirar, se elimina automaticamente.

Referenciar cache en generateContent

Pasa cache.name al parametro cachedContent (JS) o cached_content (Python) para utilizar el cache durante la inferencia. El numero de tokens acertados se refleja en usageMetadata.cachedContentTokenCount.

Consultar y eliminar


Matriz de capacidades admitidas


Preguntas frecuentes

La version del SDK es demasiado antigua. @google/genai debe ser >= 2.0.0 y google-genai debe ser >= 2.0.0. Ejecuta npm install @google/genai@latest o pip install -U google-genai para actualizar a la ultima version.
Algunos nombres de modelos anteriores (como gemini-2.5-flash-image-preview) han sido retirados de la Interactions API. Usa identificadores de modelo actuales como gemini-3.1-flash-image (Nano Banana 2). La API generateContent no se ve afectada.
Los valores de response_modalities en la Interactions API deben estar en minusculas ("text", "image"). Las mayusculas "TEXT" / "IMAGE" son la sintaxis de la API generateContent y no son aceptadas en la Interactions API.
El resultado aun no esta listo. Antes de que termine la generacion, interactions.get() devuelve 400 o 403. Continua el polling cada 3 a 5 segundos en lugar de darlo por fallido. Cuando se devuelva 200, lee status para determinar el estado terminal.
La tarea aun no ha alcanzado un estado terminal. Recupera primero el resultado terminal con polling de interactions.get() y llama despues a interactions.delete().
No. El modo vertexai: true del SDK requiere GCP OAuth + parametros project/location, y es incompatible con apiKey (el SDK lanza Project/location and API key are mutually exclusive). Al integrarte a traves de AIHubMix, usa la forma Gemini Developer API — el backend enruta automaticamente.
El gateway bloquea las solicitudes caches.create() para modelos sin precios de almacenamiento configurados, para evitar costos de almacenamiento no contabilizados. Los modelos principales (gemini-2.5-flash, gemini-2.5-pro, etc.) ya estan configurados. Si encuentras este error, verifica que el modelo admita cache explicito.

Ultima actualizacion: 2026-08-14