Da formato a tus solicitudes a la API

En esta página, se explica cómo dar formato a las solicitudes de la API de Gemini en Google Distributed Cloud (GDC) aislado con detalles del cuerpo de la solicitud del extremo de Chat Completions de OpenAI. Si te adhieres a este formato, podrás integrar sin problemas las capacidades avanzadas de Gemini en tus aplicaciones mientras usas la estructura de la API de OpenAI.

La familia de modelos de Gemini incluye modelos que funcionan con solicitudes de instrucciones multimodales. El término multimodal indica que puedes usar más de una modalidad o tipo de entrada en una instrucción. Para obtener más información, consulta Diseña instrucciones.

Para obtener más información sobre las descripciones genéricas de los tipos, los métodos y los campos generados para la biblioteca de gRPC, consulta la referencia de gRPC de Gemini.

Antes de comenzar

Antes de dar formato a tus solicitudes a la API, asegúrate de cumplir con los siguientes requisitos previos:

  • Obtén más información sobre las capacidades de Gemini en GDC.
  • Comienza con los requisitos mínimos del proyecto para realizar solicitudes a la API de Gemini.
  • Identifica el ID del extremo del modelo de Gemini que deseas usar en tus solicitudes. Seleccionar un modelo específico te permite usar sus capacidades únicas para tus tareas. Consulta los modelos de Gemini disponibles en GDC.
  • Comprende cómo redactar tus instrucciones con cuidado para obtener las respuestas esperadas de Gemini. Experimenta con diferentes estilos y formatos de instrucciones para optimizar el resultado. Para obtener más información, consulta Introducción a las instrucciones.
  • Explora los distintos parámetros disponibles en el extremo de OpenAI Chat Completions 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 Experimenta con parámetros.

Sintaxis de la solicitud

Los siguientes ejemplos contienen 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 y el cuerpo de la respuesta que debe devolver el modelo. Para obtener la referencia completa de la API del extremo de Chat Completions de OpenAI, consulta 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 describen los campos clave y sus descripciones en el cuerpo de la solicitud para el extremo de Chat Completions de OpenAI cuando se usa con Gemini:

Parámetros
Nombre del campo Descripción

model

Obligatorio: string

Es el modelo de Gemini que se usará.

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

messages

Obligatorio: object

Es 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, videos y documentos.

role

Obligatorio: string

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

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

content

Obligatorio: string o array

Es el contenido del mensaje del sistema, el usuario o el asistente.

El valor es una sola instancia para las consultas de un solo turno. Para las consultas de varios turnos, content es un campo repetido que contiene el historial de conversaciones y la solicitud más reciente. Para obtener más información, consulta content.

temperature

Opcional: number o null

Es la aleatoriedad del texto generado.

Los valores más bajos (más cercanos a 0) producen respuestas más determinísticas y enfocadas, mientras que los valores más altos (más cercanos a 2) producen resultados más diversos y creativos.

La configuración predeterminada es 1.

max_completion_tokens

Opcional: integer o null

Es la cantidad máxima de tokens que se pueden generar en la respuesta, incluidos los tokens de salida visibles y los tokens de razonamiento.

top_p

Opcional: number o null

Es la probabilidad de muestreo del núcleo.

Los valores más altos (más cercanos a 1) toman muestras de un rango más amplio de tokens potenciales, mientras que los valores más bajos (más cercanos a 0) se enfocan en los tokens más probables.

La configuración predeterminada es 1.

n

Opcional: integer o null

Cantidad de finalizaciones que se generarán para cada instrucción.

La configuración predeterminada es 1.

stop

Opcional: string, array o null

Es una lista de cadenas que, cuando se encuentran, detienen el proceso de generación de texto.

La configuración predeterminada es null.

user

Opcional: string

Es un identificador único para el usuario final.

Este parámetro te permite hacer un seguimiento de 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 instrucción de texto, el valor de este campo es una cadena. Sin embargo, para las instrucciones multimodales, este campo consta de un array 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 bucket de almacenamiento de GDC.

En la siguiente tabla, se describen los campos clave de content y sus descripciones para las instrucciones multimodales:

Nombre del campo Descripción

type

Obligatorio: string

Es el tipo de contenido para las instrucciones multimodales. Los valores aceptables son los siguientes:

  • image_url: El contenido de entrada es una imagen proporcionada como datos codificados en base64 o como una URL de un bucket 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 bucket de almacenamiento de GDC.
  • input_video: El contenido de entrada es un video proporcionado como datos codificados en base64.
  • video_url: El contenido de entrada es un video proporcionado como una URL de un bucket 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 una URL de un bucket de almacenamiento de GDC.

INPUT

Obligatorio: object

Es el contenido de entrada para las instrucciones 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:

  • Para imágenes: image_url
  • Para audio: input_audio o audio_url
  • Para video: input_video o video_url
  • Para documentos: input_document o document_url.

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

url

Opcional: string

Si el contenido de entrada se proporciona como una URL, es la ruta de acceso al archivo en un bucket 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, son los datos binarios convertidos 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, es la especificación de formato de los datos proporcionados.

Se admiten diferentes formatos según los datos de entrada. Para obtener más información, consulta los tipos de MIME para imágenes, audio, videos 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 describen los campos clave y sus descripciones en el cuerpo de la respuesta que devuelve el modelo según la entrada proporcionada:

Nombre del campo Descripción

id

string

Es un identificador único para el texto generado.

object

string

Es el tipo de objeto, que siempre es chat.completion.

created

integer

Es la marca de tiempo en segundos de cuando se generó el texto.

model

string

Es el modelo que se usó para generar el texto.

choices

array

Es una 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

Es un mensaje de generación de texto que genera el modelo. Este campo contiene las siguientes propiedades:

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

logprobs

object o null

Es la información de probabilidad del registro para la opción.

finish_reason

string

Es el motivo por el que el modelo dejó de generar tokens. El valor es uno de los siguientes:

  • stop: El modelo alcanza un punto de detención natural o una secuencia de detención proporcionada.
  • length: Se alcanzó la cantidad máxima de tokens especificada en la solicitud.
  • content_filter: Se omite el contenido debido a una marca de los filtros de contenido.
  • tool_calls: Es el modelo que llamó a una herramienta.

usage

object

Son las estadísticas de uso de la solicitud.

completion_tokens

integer

Cantidad de tokens en el texto generado.

prompt_tokens

integer

Cantidad de tokens en la instrucción.

total_tokens

integer

Cantidad total de tokens en la instrucción y el texto generado.

system_fingerprint

string

Es la configuración del 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.

Ejemplo de solicitud

En el siguiente ejemplo, se muestran los detalles de un cuerpo de solicitud que envía una instrucción a Gemini para generar texto. El ejemplo contiene controles de temperatura y de cantidad máxima de tokens. Para obtener detalles sobre la implementación, consulta Envía una instrucción de texto o Envía una instrucció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 siguiente ejemplo, se muestran los detalles de una respuesta de generación de texto que devolvió 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": ""
}

¿Qué sigue?