En esta página se explica cómo dar formato a las solicitudes de API de Gemini en Google Distributed Cloud (GDC) air-gapped mediante los detalles del cuerpo de la solicitud del endpoint Chat Completions de OpenAI. Si sigues este formato, podrás integrar las funciones avanzadas de Gemini en tus aplicaciones sin problemas y, al mismo tiempo, usar la estructura de la API de OpenAI.
La familia de modelos Gemini incluye modelos que funcionan con peticiones multimodales. El término "multimodal" indica que puedes usar más de una modalidad o tipo de entrada en una petición. Para obtener más información, consulta Peticiones de diseño.
Para obtener más información sobre las descripciones genéricas de los tipos, métodos y campos generados para la biblioteca gRPC, consulta la referencia de gRPC de Gemini.
Antes de empezar
Antes de dar formato a tus solicitudes de API, asegúrate de que cumples los siguientes requisitos previos:
- Consulta las funciones de Gemini en GDC.
- Empieza con los requisitos mínimos del proyecto para hacer solicitudes a la API de Gemini.
- Identifica el ID del endpoint del modelo de Gemini que quieras usar en tus solicitudes. Si seleccionas un modelo específico, podrás usar sus funciones únicas para tus tareas. Consulta los modelos de Gemini disponibles en GDC.
- Descubre cómo redactar tus peticiones con cuidado para obtener las respuestas esperadas de Gemini. Experimenta con diferentes estilos y formatos de peticiones para optimizar los resultados. Para obtener más información, consulta la introducción a las peticiones.
- Consulta los distintos parámetros disponibles en el endpoint Chat Completions de OpenAI para controlar el comportamiento de Gemini. Ajusta parámetros como
temperature,max_completion_tokensytop_ppara controlar la creatividad, la longitud y la diversidad del texto generado. Para obtener más información, consulta Experimentar con parámetros.
Sintaxis de la solicitud
En los siguientes ejemplos se muestra la sintaxis que debes usar en tus solicitudes a la API para generar una respuesta del modelo:
Python
import openai
client = openai.OpenAI()
model_response = client.chat.completions.create(
model = "MODEL_ID",
messages = [
{
...
}
]
...
)
print(model_response)
curl
curl \
-X POST "https://ENDPOINT:443/v1/projects/PROJECT/locations/PROJECT/chat/completions" \
-H "Content-Type: application/json; charset=utf-8" \
-H "Authorization: Bearer $(gdcloud auth print-identity-token)" \
-d '{
"model_id": "MODEL_ID",
"messages" = [
{
...
}
]
...
}'
Parámetros de la API
En esta sección se incluye una lista de los parámetros más importantes que puedes definir en el cuerpo de la solicitud de tus solicitudes a la API de Gemini en GDC, así como el cuerpo de la respuesta que debe devolver el modelo. Para consultar la referencia completa de la API del endpoint Chat Completions de OpenAI, visita https://platform.openai.com/docs/api-reference/chat.
Cuerpo de la solicitud
{
"messages" = [
{
"role": string,
"content": [
{
"type": "image_url",
"image_url": {
"url": string
}
},
{
"type": "input_audio",
"input_audio": {
"data": string,
"format": string
}
},
{
"type": "audio_url",
"audio_url": {
"url": string
}
},
{
"type": "input_video",
"input_video": {
"data": string,
"format": string
}
},
{
"type": "video_url",
"video_url": {
"url": string
}
},
{
"type": "input_document",
"input_document": {
"data": string,
"format": string
}
},
{
"type": "document_url",
"document_url": {
"url": string
}
}
]
}
],
"temperature": number,
"max_completion_tokens": integer,
"top_p": number,
"n": integer,
"stop": string,
"user": string
}
En la siguiente tabla se indican los campos clave y sus descripciones en el cuerpo de la solicitud del endpoint Chat Completions de OpenAI cuando se usa con Gemini:
| Parámetros | ||
|---|---|---|
| Nombre del campo | Descripción | |
|
Obligatorio: El modelo de Gemini que se va a usar. Para obtener más información, consulta los modelos de Gemini disponibles. |
|
|
Obligatorio: Una lista de mensajes que componen la conversación actual con el modelo. Cada mensaje tiene un Se admiten diferentes tipos de mensajes (modalidades), como texto, imágenes, audio, vídeos y documentos. |
|
|
Obligatorio: El rol del autor del mensaje, que puede ser uno de los siguientes:
|
|
|
Obligatorio: El contenido del mensaje del sistema, del usuario o del asistente. El valor es una sola instancia para las consultas de un solo turno. En las consultas multiturno, |
|
|
Opcional: La aleatoriedad del texto generado. Los valores más bajos (más cercanos a El valor predeterminado es |
|
|
Opcional: Número máximo de tokens que se generarán en la respuesta, incluidos los tokens de salida visibles y los tokens de razonamiento. |
|
|
Opcional: La probabilidad de muestreo del núcleo. Los valores más altos (más cercanos a El valor predeterminado es |
|
|
Opcional: El número de finalizaciones que se generarán para cada petición. El valor predeterminado es |
|
|
Opcional: Lista de cadenas que, cuando se encuentran, detienen el proceso de generación de texto. El valor predeterminado es |
|
|
Opcional: Identificador único del usuario final. Este parámetro te permite monitorizar los patrones de uso y personalizar las respuestas. |
|
content
Este campo es el tipo de datos estructurados base que contiene el contenido de varias partes de un mensaje.
Si la entrada es una petición de texto, el valor de este campo es una cadena. Sin embargo, en el caso de las peticiones multimodales, este campo consta de una matriz que contiene dos propiedades principales en cada objeto: type y INPUT. La propiedad type
denota el tipo de contenido de la entrada multimodal, mientras que la propiedad
INPUT contiene el elemento de entrada, representado como datos codificados en base64 o una URL de un contenedor de almacenamiento de GDC.
En la siguiente tabla se indican los campos content clave y sus descripciones para las peticiones multimodales:
| Nombre del campo | Descripción | |
|---|---|---|
|
Obligatorio: El tipo de contenido de las peticiones multimodales. Entre los valores aceptables se incluyen los siguientes:
|
|
|
Obligatorio: El contenido de entrada de las peticiones multimodales. El nombre de este campo debe ser el mismo que el valor especificado en el campo Por lo tanto, este nombre de campo es uno de los siguientes:
Cada campo de entrada tiene un |
|
|
Opcional: Si el contenido de entrada se proporciona como una URL, la ruta al archivo en un segmento de almacenamiento de GDC. En el caso de las imágenes, este campo puede contener datos codificados en Base64 en lugar de una URL. |
|
|
Opcional: Si el contenido de entrada se proporciona como datos codificados en base64, los datos binarios se convierten en una cadena de caracteres. En el caso de las imágenes, los datos codificados en base64 se proporcionan en el campo |
|
|
Opcional: Si el contenido de entrada se proporciona en el campo En función de los datos de entrada, se admiten diferentes formatos. Para obtener más información, consulta los tipos MIME de imágenes, audio, vídeos y documentos. |
|
Cuerpo de la respuesta
{
"id": string,
"object": string,
"created": integer,
"model": string,
"choices": [
{
"index": integer,
"message": {
"role": string,
"content": string,
"refusal": null
},
"logprobs": null,
"finish_reason": string
}
],
"usage": {
"completion_tokens": integer,
"prompt_tokens": integer,
"total_tokens": integer
},
"system_fingerprint": string
}
En la siguiente tabla se indican los campos clave y sus descripciones en el cuerpo de la respuesta devuelta por el modelo en función de la entrada proporcionada:
| Nombre del campo | Descripción | |
|---|---|---|
|
Identificador único del texto generado. |
|
|
El tipo de objeto, que siempre es |
|
|
Marca de tiempo en segundos de cuándo se genera el texto. |
|
|
El modelo usado para generar el texto. |
|
|
Lista de opciones de generación de texto. Este campo puede contener varias opciones si |
|
|
Índice de la opción en la lista de opciones. |
|
|
Un mensaje de generación de texto generado por el modelo. Este campo contiene las siguientes propiedades:
|
|
|
Información de probabilidad de registro de la opción. |
|
|
El motivo por el que el modelo ha dejado de generar tokens. El valor es uno de los siguientes:
|
|
|
Estadísticas de uso de la solicitud. |
|
|
Número de tokens del texto generado. |
|
|
Número de tokens de la petición. |
|
|
Número total de tokens de la petición y del texto generado. |
|
|
La configuración de backend que usa el modelo para ejecutarse. |
|
Ejemplos
En esta sección se incluye un ejemplo del cuerpo de la solicitud y de la respuesta de generación de texto que debe devolver el modelo.
Solicitud de ejemplo
En el siguiente ejemplo se muestran los detalles de un cuerpo de solicitud que envía una petición a Gemini para generar texto. El ejemplo contiene controles de temperatura y de token máximo. Para obtener información sobre la implementación, consulta Enviar una petición de texto o Enviar una petición multimodal.
{
"messages": [
{
"role": "system",
"content": "You are a helpful and informative assistant."
},
{
"role": "user",
"content": "What is the capital of France?"
}
],
"temperature": 0.7,
"max_completion_tokens": 100
}
Respuesta de ejemplo
En el ejemplo siguiente se muestran los detalles de una respuesta de generación de texto devuelta por el modelo:
{
"id": "",
"object": "",
"created": 0,
"model": "",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "The capital of France is Paris.\n",
"refusal": null
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"completion_tokens": 7,
"prompt_tokens": 8,
"total_tokens": 15
},
"system_fingerprint": ""
}