Usar bibliotecas de OpenAI con Vertex AI

La API Chat Completions funciona como un endpoint compatible con OpenAI, diseñado para facilitar la interacción con Gemini en Vertex AI mediante las bibliotecas de OpenAI para Python y REST. Si ya usas las bibliotecas de OpenAI, puedes usar esta API como una forma económica de cambiar entre las llamadas a modelos de OpenAI y a modelos alojados en Vertex AI para comparar la salida, el coste y la escalabilidad sin cambiar el código. Si aún no usas las bibliotecas de OpenAI, te recomendamos que uses el SDK de IA generativa de Google.

Modelos admitidos

La API Chat Completions admite tanto modelos de Gemini como modelos autodesplegados seleccionados de Model Garden.

Modelos de Gemini

Los siguientes modelos admiten la API Chat Completions:

Modelos autodesplegados de Model Garden

Los contenedores Interfaz de generación de texto de Hugging Face (HF TGI) y vLLM precompilado de Model Garden de Vertex AI admiten la API Chat Completions. Sin embargo, no todos los modelos implementados en estos contenedores admiten la API Chat Completions. En la siguiente tabla se incluyen los modelos admitidos más populares por contenedor:

HF TGI

vLLM

Parámetros admitidos

En el caso de los modelos de Google, la API Chat Completions admite los siguientes parámetros de OpenAI. Para ver una descripción de cada parámetro, consulta la documentación de OpenAI sobre cómo crear finalizaciones de conversaciones. La compatibilidad con los parámetros de los modelos de terceros varía en función del modelo. Para ver qué parámetros se admiten, consulta la documentación del modelo.

messages
  • System message
  • User message: se admiten los tipos text y image_url. El tipo image_url admite imágenes almacenadas en un URI de Cloud Storage o una codificación base64 con el formato "data:<MIME-TYPE>;base64,<BASE64-ENCODED-BYTES>". Para saber cómo crear un segmento de Cloud Storage y subir un archivo a él, consulta Descubrir el almacenamiento de objetos. La opción detail no está disponible.
  • Assistant message
  • Tool message
  • Function message: este campo ha dejado de estar disponible, pero se admite para mantener la retrocompatibilidad.
model
max_completion_tokens Alias de max_tokens.
max_tokens
n
frequency_penalty
presence_penalty
reasoning_effort Configura cuánto tiempo y cuántos tokens se usan en una respuesta.
  • low: 1024
  • medium: 8192
  • high: 24576
Como no se incluyen reflexiones en la respuesta, solo se puede especificar uno de los valores reasoning_effort o extra_body.google.thinking_config.
response_format
  • json_object: se interpreta como el envío de "application/json" a la API de Gemini.
  • json_schema. No se admiten esquemas totalmente recursivos. additional_properties se admite.
  • text: se interpreta como si se pasara "text/plain" a la API de Gemini.
  • Cualquier otro tipo MIME se transfiere tal cual al modelo, como "application/json".
seed Corresponde a GenerationConfig.seed.
stop
stream
temperature
top_p
tools
  • type
  • function
    • name
    • description
    • parameters: especifica los parámetros mediante la especificación de OpenAPI. Esto es diferente del campo de parámetros de OpenAI, que se describe como un objeto de esquema JSON. Para obtener información sobre las diferencias entre las palabras clave de OpenAPI y JSON Schema, consulta la guía de OpenAPI.
tool_choice
  • none
  • auto
  • required: corresponde al modo ANY en el FunctionCallingConfig.
  • validated: corresponde al modo VALIDATED en FunctionCallingConfig. Esto es específico de Google.
web_search_options Corresponde a la herramienta GoogleSearch. No se admiten subopciones.
function_call Este campo está obsoleto, pero se admite para asegurar la retrocompatibilidad.
functions Este campo está obsoleto, pero se admite para asegurar la retrocompatibilidad.

Si envía algún parámetro no admitido, se ignorará.

Parámetros de entrada multimodales

La API Chat Completions admite determinadas entradas multimodales.

input_audio
  • data: Cualquier URI o formato de blob válido. Admitimos todos los tipos de blobs, incluidos los de imagen, audio y vídeo. Se admite cualquier elemento compatible con GenerateContent (HTTP, Cloud Storage, etc.).
  • format: OpenAI admite tanto wav (audio/wav) como mp3 (audio/mp3). Con Gemini, se admiten todos los tipos de MIME válidos.
image_url
  • data: Al igual que input_audio, se admite cualquier URI o formato de blob válido.
    Ten en cuenta que image_url como URL tendrá el tipo MIME image/* de forma predeterminada y image_url como datos de blob se puede usar como cualquier entrada multimodal.
  • detail: Similar a resolución del contenido multimedia, determina el número máximo de tokens por imagen de la solicitud. Ten en cuenta que, aunque el campo de OpenAI es por imagen, Gemini aplica el mismo nivel de detalle en toda la solicitud. Si se envían varios tipos de detalle en una solicitud, se producirá un error.

En general, el parámetro data puede ser un URI o una combinación de tipo MIME y bytes codificados en Base64 con el formato "data:<MIME-TYPE>;base64,<BASE64-ENCODED-BYTES>". Para ver una lista completa de los tipos MIME, consulta GenerateContent. Para obtener más información sobre la codificación base64 de OpenAI, consulta su documentación.

Para ver cómo se usa, consulta nuestros ejemplos de entrada multimodal.

Parámetros específicos de Gemini

Hay varias funciones compatibles con Gemini que no están disponibles en los modelos de OpenAI. Estas funciones se pueden seguir transfiriendo como parámetros, pero deben estar incluidas en un extra_content o un extra_body. De lo contrario, se ignorarán.

Funciones de extra_body

Incluye un campo google para que contenga las funciones específicas de Gemini.extra_body

{
  ...,
  "extra_body": {
     "google": {
       ...,
       // Add extra_body features here.
     }
   }
}
safety_settings Corresponde a SafetySetting de Gemini.
cached_content Corresponde a GenerateContentRequest.cached_content de Gemini.
thinking_config Corresponde a GenerationConfig.ThinkingConfig de Gemini.
thought_tag_marker Se usa para separar los pensamientos de un modelo de sus respuestas en los modelos que tienen disponible la función Pensamiento.
Si no se especifica, no se devolverán etiquetas en torno a las reflexiones del modelo. Si están presentes, las consultas posteriores eliminarán las etiquetas de pensamiento y marcarán los pensamientos de forma adecuada para el contexto. Esto ayuda a mantener el contexto adecuado para las consultas posteriores.

Funciones de extra_part

extra_part te permite especificar ajustes adicionales a nivel de Part.

Incluye un campo google para que contenga las funciones específicas de Gemini.extra_part

{
  ...,
  "extra_part": {
     "google": {
       ...,
       // Add extra_part features here.
     }
   }
}
extra_content Campo para añadir contenido específico de Gemini que no se debe ignorar.
thought Esto marcará explícitamente si un campo es un pensamiento (y tendrá prioridad sobre thought_tag_marker). Se debe usar para especificar si una llamada a herramienta forma parte de un pensamiento o no.

Siguientes pasos