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
| Elemento | Formato compatible con OpenAI (esta página) | API nativa de Gemini (otros documentos de esta sección) |
|---|---|---|
| Rutas típicas | POST /v1/chat/completions, POST /v1/embeddings | POST /v1beta/models/{model}:generateContent, etc. |
| Cuerpo de solicitud | Campos OpenAI: messages, model, stream | Campos Gemini: contents, generationConfig |
| Cuándo usarlo | Cliente OpenAI existente, puerta de enlace multi-modelo, migración rápida | Funciones exclusivas de Gemini (thinkingConfig, parámetros Imagen, etc.) |
| Documentación | Esta página + sección Chat | Pá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
geminidel catálogo en el campomodel
SDK de OpenAI (recomendado)
Apunte base_url del SDK oficial a Fast-Token; el resto es igual que OpenAI:
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)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.
| Capacidad | Descripción | Referencia |
|---|---|---|
| Creación de imágenes Gemini | Generar o editar a partir de texto (e imagen de referencia opcional) | Crear imagen en chat (sin streaming) |
| Chat | Diálogo multi-turno, con o sin streaming | Sin streaming, Con streaming |
| Chat - pensamiento 1 | Diálogo con salida de «pensamiento» (variante 1) | Streaming (extra_body.enable_thinking) |
| Chat - pensamiento 2 | Diálogo con salida de «pensamiento» (variante 2) | Igual que arriba; modelos según el catálogo |
| Visión | Subir imagen para comprender, describir o preguntar | Visión (streaming), sin streaming |
| Chat + lectura de archivos | Adjuntar documentos al diálogo | Vea «Archivos y multimodal» más abajo |
| Embeddings de texto | Texto a vectores | Crear 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
messagespara multi-turno;role:system/user/assistant(como OpenAI) - Sin streaming:
stream: falseu omitirstream; 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:
{
"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).
{
"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 + modelos Gemini de imagen para texto→imagen y edición con referencia
- Describa la necesidad en lenguaje natural en
messages; referencia:text+image_urlencontent - Estructura: Crear imagen en chat (sin streaming)
- Relación de aspecto y resolución: Generación de imágenes nativa
Chat + archivos
Bajo el formato compatible puede incluir documentos, PDF, etc. (tipos MIME y límites según el catálogo):
- Primero en
messages[].contentsegún convenciones multimodales de OpenAI - Archivos grandes: Comprensión de documentos nativa (
fileData/inlineData), integrar en el flujo de chat en la aplicación
Embeddings de texto
- Endpoint:
POST /v1/embeddings - Cuerpo:
model+input(cadena o array), como OpenAI Embeddings - Ejemplos: Crear embeddings; Objeto embedding
- Opciones solo Gemini: Embeddings nativos
Compatible o API nativa
| Necesidad | Recomendación |
|---|---|
| Integración rápida, SDK OpenAI / código existente | Formato compatible con OpenAI (esta página) |
Pensamiento en streaming, generationConfig, Google Search Grounding | API nativa (p. ej. Texto + pensamiento (streaming), Google Search) |
| Imagen Imagen, TTS, vídeo/audio | Secciones de API nativa |
| Chat + visión + imágenes + embeddings con cliente OpenAI | El 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
- Primeros pasos
- Guía rápida de API
- Listar modelos
- Otras páginas de esta sección — API REST nativa de Gemini