Skip to content

Gemini: formato compatible con OpenAI

Fast-Token permite llamar a los modelos Google Gemini mediante el protocolo de API de OpenAI. Si ya usa el SDK de OpenAI o /v1/chat/completions, normalmente basta con cambiar base_url y model para conectar Gemini, sin reescribir a la API nativa de Gemini.

Esta página se centra en cómo usar el formato compatible. Para cuerpos de solicitud, campos de respuesta y depuración en línea, consulte la documentación de ChatGPT y los enlaces de la tabla de capacidades.

Dos formas de integración

ElementoFormato compatible con OpenAI (esta página)API nativa de Gemini (otros documentos de esta sección)
Rutas típicasPOST /v1/chat/completions, POST /v1/embeddingsPOST /v1beta/models/{model}:generateContent, etc.
Cuerpo de solicitudCampos OpenAI: messages, model, streamCampos Gemini: contents, generationConfig
Cuándo usarloCliente OpenAI existente, puerta de enlace multi-modelo, migración rápidaFunciones exclusivas de Gemini (thinkingConfig, parámetros Imagen, etc.)
DocumentaciónEsta página + sección ChatPáginas de API en Chat, Imágenes, Archivos, etc.

Ambos modos comparten la misma API Key y la URL de la puerta de enlace. La facturación sigue el modelo en el catálogo de modelos.

Configuración

Puerta de enlace y autenticación

  • Base URL: https://fast-token.com/v1 (igual que Primeros pasos)
  • Autenticación: cabecera Authorization: Bearer <Fast-Token_API_KEY>
  • Nombre del modelo: copie un ID con gemini del catálogo en el campo model

SDK de OpenAI (recomendado)

Apunte base_url del SDK oficial a Fast-Token; el resto es igual que OpenAI:

python
from openai import OpenAI

client = OpenAI(
    base_url="https://fast-token.com/v1",
    api_key="<Fast-Token_API_KEY>",
)

completion = client.chat.completions.create(
    model="gemini-2.5-pro",  # 以模型广场为准
    messages=[
        {"role": "user", "content": "用一句话介绍你自己"},
    ],
)
print(completion.choices[0].message.content)
javascript
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://fast-token.com/v1",
  apiKey: "<Fast-Token_API_KEY>",
});

const completion = await client.chat.completions.create({
  model: "gemini-2.5-pro",
  messages: [{ role: "user", content: "用一句话介绍你自己" }],
});
console.log(completion.choices[0].message.content);

Para streaming, establezca stream: true. Vea Crear finalización de chat (streaming).

Resumen de capacidades en formato chat compatible

Todo lo siguiente usa rutas compatibles con OpenAI, a menudo agrupadas como «formato chat compatible» en la consola o Apifox. En la práctica suele ser el mismo POST /v1/chat/completions (embeddings: POST /v1/embeddings), diferenciado por modelo y estructura de mensajes.

CapacidadDescripciónReferencia
Creación de imágenes GeminiGenerar o editar a partir de texto (e imagen de referencia opcional)Crear imagen en chat (sin streaming)
ChatDiálogo multi-turno, con o sin streamingSin streaming, Con streaming
Chat - pensamiento 1Diálogo con salida de «pensamiento» (variante 1)Streaming (extra_body.enable_thinking)
Chat - pensamiento 2Diálogo con salida de «pensamiento» (variante 2)Igual que arriba; modelos según el catálogo
VisiónSubir imagen para comprender, describir o preguntarVisión (streaming), sin streaming
Chat + lectura de archivosAdjuntar documentos al diálogoVea «Archivos y multimodal» más abajo
Embeddings de textoTexto a vectoresCrear embeddings

Elección del modelo

El ID del modelo de cada escenario está en el catálogo. Pruebe modelos Gemini con gemini y capacidades de chat/visión/imagen/embeddings; si aparece «modelo no encontrado» o capacidad no soportada, use otra entrada Gemini del mismo escenario.

Notas por escenario

Chat estándar

  • Endpoint: POST /v1/chat/completions
  • Array messages para multi-turno; role: system / user / assistant (como OpenAI)
  • Sin streaming: stream: false u omitir stream; con streaming: stream: true
  • Parámetros comunes (temperature, max_tokens, top_p, etc.) como OpenAI; vea Crear finalización de chat (sin streaming)

Modo pensamiento (1 / 2)

Algunos modelos de pensamiento de Gemini exponen la salida en solicitudes con streaming mediante un campo de extensión:

json
{
  "model": "gemini-2.5-pro",
  "messages": [{ "role": "user", "content": "解释相对论的核心思想" }],
  "stream": true,
  "extra_body": {
    "enable_thinking": true
  }
}
  • Pensamiento 1 y 2 corresponden a modelos o rutas distintas en la puerta de enlace; elija modelos marcados como «thinking» en el catálogo
  • Para control completo de thinkingConfig, use la API nativa de Gemini

Visión

En un mensaje user, array multimodal en content: text + image_url (URL o Base64).

json
{
  "model": "gemini-2.5-pro",
  "messages": [
    {
      "role": "user",
      "content": [
        { "type": "text", "text": "这张图里有什么?" },
        {
          "type": "image_url",
          "image_url": { "url": "https://example.com/photo.jpg" }
        }
      ]
    }
  ],
  "stream": true
}

Base64: Visión en chat (streaming) Base64. Parámetros nativos: Comprensión de imágenes.

Creación de imágenes

Chat + archivos

Bajo el formato compatible puede incluir documentos, PDF, etc. (tipos MIME y límites según el catálogo):

  1. Primero en messages[].content según convenciones multimodales de OpenAI
  2. Archivos grandes: Comprensión de documentos nativa (fileData / inlineData), integrar en el flujo de chat en la aplicación

Embeddings de texto

Compatible o API nativa

NecesidadRecomendación
Integración rápida, SDK OpenAI / código existenteFormato compatible con OpenAI (esta página)
Pensamiento en streaming, generationConfig, Google Search GroundingAPI nativa (p. ej. Texto + pensamiento (streaming), Google Search)
Imagen Imagen, TTS, vídeo/audioSecciones de API nativa
Chat + visión + imágenes + embeddings con cliente OpenAIEl formato compatible cubre la ruta principal

Preguntas frecuentes

P: ¿Por qué no coincide exactamente con la documentación de OpenAI?
R: La capa de compatibilidad alinea solicitud/respuesta con OpenAI; debajo ejecuta Gemini. Algunos parámetros solo de OpenAI pueden ignorarse.

P: ¿Qué poner en model?
R: El ID completo del catálogo (suele incluir gemini), no abreviaturas.

P: ¿Formato de respuesta en streaming?
R: SSE, líneas data: {...} y data: [DONE]; vea Objeto fragmento de finalización.

P: ¿Estructura JSON completa de la respuesta?
R: Objeto de finalización de chat.

Lecturas adicionales