Volver a todos los articulos
Guias

Usar el SDK de OpenAI con la API de Gemini: cómo configurar base_url, el nombre del modelo y el precio de Gemini 3.5 Flash

14 de junio de 2026 · 10 min de lectura · Claude / GPT / Gemini

Ilustración de migración de API para desarrolladores sobre fondo marfil: a la izquierda, una tarjeta de código del SDK de OpenAI en gris carbón; en el centro, un interruptor base_url en color terracota; a la derecha, una tarjeta del modelo Gemini 3.5 Flash; abajo, pequeñas etiquetas de precio indican entrada $1.50/M y salida $9.00/M

La documentación compatible con OpenAI de Google se actualizó el 2026-05-18 y lo dice directamente: los modelos Gemini pueden invocarse mediante los SDK de OpenAI para Python / JavaScript, y en esencia solo hay que cambiar tres cosas: api_key, base_url, model (Google). Hoy es 2026-06-14, y la página de precios indica que el nivel estándar de pago de gemini-3.5-flash cuesta: entrada $1.50 / 100 万 token, salida incluyendo tokens de pensamiento $9.00 / 100 万 token (Google Pricing).

Mi criterio es muy simple: si ya tienes un proyecto con el SDK de OpenAI, no lo reescribas todavía. Primero conecta Gemini como un backend compatible con OpenAI, valida costes, streaming y llamadas a herramientas, y luego decide si vale la pena migrar al SDK nativo de Gemini.

Diagrama comparativo antes y después de la migración sobre fondo beige claro; a la izquierda una tarjeta de configuración de OpenAI SDK, a la derecha una tarjeta de configuración de Gemini, con solo tres líneas resaltadas en el centro: api_key, base_url y model, conectadas por una flecha color terracota

1. Cambio mínimo: sustituir solo el endpoint y el nombre del modelo

En Python, instala primero el SDK oficial de OpenAI:

pip install openai
export GEMINI_API_KEY="你的 Gemini API Key"

Luego cambia el cliente así:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["GEMINI_API_KEY"],
    base_url="https://generativelanguage.googleapis.com/v1beta/openai/",
)

resp = client.chat.completions.create(
    model="gemini-3.5-flash",
    reasoning_effort="low",
    messages=[
        {"role": "system", "content": "你是一个直接、准确的代码助手。"},
        {"role": "user", "content": "用三句话解释 SSE 流式输出。"},
    ],
)

print(resp.choices[0].message.content)

chat.completions.create, messages y tools siguen teniendo la forma del estilo OpenAI Chat Completions; la propia referencia de la API de OpenAI también sigue definiendo Chat Completions como una interfaz que genera respuestas a partir de una lista de mensajes (OpenAI). Por tanto, el foco de la migración no está en el código de negocio, sino en la capa de configuración.

2. No olvides la barra final en base_url

La dirección que aparece en la documentación de Google es:

https://generativelanguage.googleapis.com/v1beta/openai/

Si omites la / final, algunos clientes pueden generar problemas raros al componer rutas. En código de producción se recomienda extraerlo como variable de entorno:

OPENAI_BASE_URL="https://generativelanguage.googleapis.com/v1beta/openai/"
OPENAI_API_KEY="$GEMINI_API_KEY"
OPENAI_MODEL="gemini-3.5-flash"

Si quieres evitar cambiar entre cuentas, cuotas y facturación de varios proveedores, onehop es una vía más sencilla: cambia base_url a https://api.onehop.ai/v1 y llama a Claude, GPT y Gemini con el mismo conjunto de interfaces compatibles con OpenAI / Anthropic. Las cuentas nuevas reciben $10 sin necesidad de vincular tarjeta; es adecuado para hacer primero una PoC y luego decidir si conectas directamente con el proveedor oficial.

from openai import OpenAI

client = OpenAI(
    api_key="你的 onehop key",
    base_url="https://api.onehop.ai/v1",
)

resp = client.chat.completions.create(
    model="gemini-3.5-flash",
    messages=[{"role": "user", "content": "给我一个 FastAPI 健康检查接口"}],
)
print(resp.choices[0].message.content)

La entrada está aquí: Llamar a Claude y otros modelos en onehop, Regístrate y recibe $10 de crédito de prueba.

3. Calcula primero el precio según los tokens de salida

gemini-3.5-flash en el nivel estándar no es “tan barato como para no preocuparse”. El precio de salida es 6 veces el de entrada:

Modelo Nivel Entrada / 1 millón de tokens Salida / 1 millón de tokens
gemini-3.5-flash Estándar $1.50 $9.00
gemini-3.5-flash Batch $0.75 $4.50
gemini-3.5-flash Flex $0.75 $4.50

Las cifras de Batch y Flex también proceden de la misma página de precios de Google. Al desarrollar aplicaciones, debes limitar max_completion_tokens, especialmente en resúmenes, generación de código y bucles de herramientas de agentes. Una entrada más larga aún puede cachearse; una salida fuera de control es gasto real.

Gráfico de barras compacto; el eje horizontal muestra tres niveles: estándar, Batch y Flex, y el eje vertical dólares por millón de tokens; cada grupo tiene dos barras, entrada en gris carbón y salida en color terracota, destacando que el precio de salida es más alto

4. Cómo se mapea reasoning_effort

La capa compatible de Google acepta el reasoning_effort de estilo OpenAI y lo mapea a la configuración de thinking de Gemini (Google):

reasoning_effort Gemini 3 Flash thinking_level
minimal minimal
low low
medium medium
high high

Si no se pasa, se usa el valor predeterminado del modelo. La documentación de Google también menciona una restricción clave: Gemini 3 no permite desactivar thinking; none solo es aplicable a algunos modelos 2.5. Mi recomendación es usar low por defecto en producción, y subir a medium o high solo para planificación compleja o llamadas a herramientas de cadena larga. Como el precio de salida incluye tokens de pensamiento, la intensidad de razonamiento no es un interruptor gratuito.

5. Streaming y llamadas a funciones: funcionan, pero hay que protegerse de bloques vacíos

La llamada en streaming mantiene la forma del SDK de OpenAI:

stream = client.chat.completions.create(
    model="gemini-3.5-flash",
    messages=[{"role": "user", "content": "写一个 Redis 缓存封装"}],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

El if delta aquí es muy práctico. En una respuesta en streaming puede haber roles, llamadas a herramientas o incrementos vacíos; no asumas que cada chunk contiene texto.

Las llamadas a funciones también usan tools y tool_choice="auto". La documentación compatible de Google incluye un ejemplo de función meteorológica y confirma que la API de Gemini admite function calling (Google). En proyectos reales, no te limites a imprimir lo que devuelve el modelo; debes comprobar message.tool_calls, ejecutar la función local y luego alimentar de vuelta al modelo el resultado de la herramienta como mensaje de la siguiente ronda.

Conclusión: el coste mínimo de migrar a Gemini son tres líneas de configuración; lo que realmente hay que vigilar son los tokens de salida, la intensidad de thinking, los chunks vacíos en streaming y el cierre del ciclo de llamadas a herramientas. Si solo quieres incorporar rápidamente Claude, GPT y Gemini en un mismo proyecto con el SDK de OpenAI, usar directamente la entrada unificada de onehop te ahorrará bastante tiempo de configuración: Llamar a Claude y otros modelos en onehop, o primero reclama Regístrate y recibe $10 de crédito de prueba.