Formatear las solicitudes a la API

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_tokens y top_p para 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

model

Obligatorio: string

El modelo de Gemini que se va a usar.

Para obtener más información, consulta los modelos de Gemini disponibles.

messages

Obligatorio: object

Una lista de mensajes que componen la conversación actual con el modelo. Cada mensaje tiene un role y un content.

Se admiten diferentes tipos de mensajes (modalidades), como texto, imágenes, audio, vídeos y documentos.

role

Obligatorio: string

El rol del autor del mensaje, que puede ser uno de los siguientes:

  • system: instrucciones proporcionadas por el sistema que el modelo debe seguir, independientemente de los mensajes enviados por el usuario.
  • user: mensajes proporcionados por el usuario a los que el modelo debe responder y que contienen peticiones o información de contexto adicional.
  • assistant: mensajes proporcionados por el modelo en respuesta a los mensajes del usuario.

content

Obligatorio: string o array

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, content es un campo repetido que contiene el historial de la conversación y la última solicitud. Para obtener más información, consulta content.

temperature

Opcional: number o null

La aleatoriedad del texto generado.

Los valores más bajos (más cercanos a 0) producen respuestas más deterministas y centradas, mientras que los valores más altos (más cercanos a 2) generan resultados más diversos y creativos.

El valor predeterminado es 1.

max_completion_tokens

Opcional: integer o null

Número máximo de tokens que se generarán en la respuesta, incluidos los tokens de salida visibles y los tokens de razonamiento.

top_p

Opcional: number o null

La probabilidad de muestreo del núcleo.

Los valores más altos (más cercanos a 1) toman muestras de una gama más amplia de tokens potenciales, mientras que los valores más bajos (más cercanos a 0) se centran en los tokens más probables.

El valor predeterminado es 1.

n

Opcional: integer o null

El número de finalizaciones que se generarán para cada petición.

El valor predeterminado es 1.

stop

Opcional: string, array o null

Lista de cadenas que, cuando se encuentran, detienen el proceso de generación de texto.

El valor predeterminado es null.

user

Opcional: string

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

type

Obligatorio: string

El tipo de contenido de las peticiones multimodales. Entre los valores aceptables se incluyen los siguientes:

  • image_url: el contenido de entrada es una imagen proporcionada como datos codificados en base64 o como una URL de un segmento de almacenamiento de GDC.
  • input_audio: el contenido de entrada es audio proporcionado como datos codificados en base64.
  • audio_url: el contenido de entrada es audio proporcionado como una URL de un segmento de almacenamiento de GDC.
  • input_video: el contenido de entrada es un vídeo proporcionado como datos codificados en base64.
  • video_url: el contenido de entrada es un vídeo proporcionado como URL de un contenedor de almacenamiento de GDC.
  • input_document: El contenido de entrada es un documento proporcionado como datos codificados en base64.
  • document_url: El contenido de entrada es un documento proporcionado como URL de un segmento de almacenamiento de GDC.

INPUT

Obligatorio: object

El contenido de entrada de las peticiones multimodales. El nombre de este campo debe ser el mismo que el valor especificado en el campo type.

Por lo tanto, este nombre de campo es uno de los siguientes:

  • En el caso de las imágenes: image_url
  • Audio: input_audio o audio_url
  • Vídeo: input_video o video_url
  • Para documentos: input_document o document_url.

Cada campo de entrada tiene un url o un data y un format.

url

Opcional: string

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.

data

Opcional: string

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 url.

format

Opcional: string

Si el contenido de entrada se proporciona en el campo data, la especificación de formato de los datos proporcionados.

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

id

string

Identificador único del texto generado.

object

string

El tipo de objeto, que siempre es chat.completion.

created

integer

Marca de tiempo en segundos de cuándo se genera el texto.

model

string

El modelo usado para generar el texto.

choices

array

Lista de opciones de generación de texto. Este campo puede contener varias opciones si n es mayor que 1.

index

integer

Índice de la opción en la lista de opciones.

message

object

Un mensaje de generación de texto generado por el modelo. Este campo contiene las siguientes propiedades:

  • role: (string) el rol del autor del mensaje.
  • content: (string o null) El contenido del mensaje.
  • refusal: (string o null) El mensaje de rechazo generado por el modelo.

logprobs

object o null

Información de probabilidad de registro de la opción.

finish_reason

string

El motivo por el que el modelo ha dejado de generar tokens. El valor es uno de los siguientes:

  • stop: el modelo llega a un punto de parada natural o a una secuencia de parada proporcionada.
  • length: se ha alcanzado el número máximo de tokens especificado en la solicitud.
  • content_filter: el contenido se ha omitido debido a una denuncia de los filtros de contenido.
  • tool_calls: el modelo ha llamado a una herramienta.

usage

object

Estadísticas de uso de la solicitud.

completion_tokens

integer

Número de tokens del texto generado.

prompt_tokens

integer

Número de tokens de la petición.

total_tokens

integer

Número total de tokens de la petición y del texto generado.

system_fingerprint

string

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": ""
}

Siguientes pasos