Usa bibliotecas de OpenAI con Vertex AI

La API de Chat Completions funciona como un extremo compatible con Open AI, diseñado para facilitar la interacción con Gemini en Vertex AI a través de 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 llamar a modelos de OpenAI y modelos alojados en Vertex AI para comparar los resultados, el costo y la escalabilidad, sin cambiar tu código existente. Si todavía no usas las bibliotecas de OpenAI, te recomendamos que uses el SDK de Google Gen AI.

Modelos compatibles

La API de Chat Completions admite modelos de Gemini y modelos seleccionados que se implementaron por sí solos desde Model Garden.

Modelos de Gemini

Los siguientes modelos admiten la API de Chat Completions:

Modelos que se implementaron desde Model Garden

La interfaz de generación de texto de Hugging Face (HF TGI) y los contenedores de vLLM precompilados de Model Garden de Vertex AI admiten la API de Chat Completions. Sin embargo, no todos los modelos que se implementan en estos contenedores admiten la API de 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 de Chat Completions admite los siguientes parámetros de OpenAI. Para obtener una descripción de cada parámetro, consulta la documentación de OpenAI sobre cómo crear finalización de chats. La compatibilidad de parámetros para modelos de terceros varía según el modelo. Para ver qué parámetros son compatibles, 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 en el formato "data:<MIME-TYPE>;base64,<BASE64-ENCODED-BYTES>". Para obtener información sobre cómo crear un bucket de Cloud Storage y subir un archivo a él, consulta Descubre el almacenamiento de objetos. No se admite la opción detail.
  • Assistant message
  • Tool message
  • Function message: Este campo es obsoleto, pero se admite para versiones anteriores.
model
max_completion_tokens Es el 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: 1,024
  • medium: 8192
  • high: 24576
Como no se incluyen pensamientos en la respuesta, solo se puede especificar uno de reasoning_effort o extra_body.google.thinking_config.
response_format
  • json_object: Se interpreta como pasar “application/json” a la API de Gemini.
  • json_schema. No se admiten esquemas completamente recursivos. additional_properties sí es compatible.
  • text: Se interpreta como pasar “text/plain” a la API de Gemini.
  • Cualquier otro tipo de MIME se pasa tal como está al modelo, por ejemplo, pasar “application/json” directamente.
seed Corresponde a GenerationConfig.seed.
stop
stream
temperature
top_p
tools
  • type
  • function
    • name
    • description
    • parameters: Especifica los parámetros a usando la especificación de OpenAPI. Esto difiere del campo de parámetros de OpenAI, que se describe como un objeto de esquema JSON. Para obtener información sobre las diferencias de palabras clave entre el esquema de OpenAPI y JSON, consulta la guía de OpenAPI.
tool_choice
  • none
  • auto
  • required: Corresponde al modo ANY en 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 es obsoleto, pero se admite para versiones anteriores.
functions Este campo es obsoleto, pero se admite para versiones anteriores.

Si pasas algún parámetro no admitido, se ignorará.

Parámetros de entrada multimodales

La API de Chat Completions admite entradas multimodales seleccionadas.

input_audio
  • data: Cualquier URI o formato de blob válido. Admitimos todos los tipos de objetos blob, incluidos los de imagen, audio y video. Se admite todo lo que admita GenerateContent (HTTP, Cloud Storage, etcétera).
  • format: OpenAI admite wav (audio/wav) y 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 usará de forma predeterminada el tipo de MIME image/* y que image_url como datos de blob se puede usar como cualquier entrada multimodal.
  • detail: Al igual que la resolución de medios, determina la cantidad máxima de tokens por imagen para la solicitud. Ten en cuenta que, si bien el campo de OpenAI es por imagen, Gemini aplica el mismo detalle en toda la solicitud, y si pasas varios tipos de detalles en una solicitud, se arrojará un error.

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

Para ver el uso, consulta nuestros ejemplos de entradas multimodales.

Parámetros específicos de Gemini

Gemini admite varias funciones que no están disponibles en los modelos de OpenAI. Estas funciones aún se pueden pasar como parámetros, pero deben estar contenidas en un extra_content o extra_body, de lo contrario, se ignorarán.

extra_body funciones

safety_settings Esto corresponde al SafetySetting de Gemini.
cached_content Esto corresponde al GenerateContentRequest.cached_content de Gemini.
thinking_config Esto corresponde al GenerationConfig.ThinkingConfig de Gemini.
thought_tag_marker Se usa para separar los pensamientos de un modelo de sus respuestas en el caso de los modelos con Thinking disponible.
Si no se especifica, no se mostrarán etiquetas alrededor de los pensamientos del modelo. Si están presentes, las consultas posteriores quitarán las etiquetas de pensamiento y marcarán los pensamientos de forma adecuada para el contexto. Esto ayuda a preservar el contexto adecuado para las consultas posteriores.

extra_part funciones

extra_part te permite especificar parámetros de configuración adicionales a nivel de Part.

extra_content Es un campo para agregar contenido específico de Gemini que no se debe ignorar.
thought Esto marcará de forma explícita 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.

¿Qué sigue?