Utilizzo delle librerie OpenAI con Vertex AI

Questo documento mostra come utilizzare l'API Chat Completions compatibile con OpenAI per interagire con i modelli Vertex AI. Questo documento tratta i seguenti argomenti:

L'API Chat Completions è un endpoint compatibile con OpenAI che ti consente di utilizzare le librerie Python e REST di OpenAI per interagire con Gemini su Vertex AI. Se utilizzi già le librerie OpenAI, questa API offre un modo per passare dai modelli OpenAI a quelli ospitati su Vertex AI per confrontare output, costi e scalabilità con modifiche minime al codice esistente. Se non utilizzi le librerie OpenAI, ti consigliamo di utilizzare l'SDK Google Gen AI.

Modelli supportati

L'API Chat Completions supporta sia i modelli Gemini sia alcuni modelli autogestiti di Model Garden.

Modelli Gemini

L'API Chat Completions supporta i seguenti modelli Gemini:

Modelli con deployment autonomo da Model Garden

I container Hugging Face Text Generation Interface (HF TGI) e Vertex AI Model Garden prebuilt vLLM supportano l'API Chat Completions. Tuttavia, non tutti i modelli di cui è stato eseguito il deployment in questi container supportano l'API Chat Completions. La tabella seguente include i modelli supportati più popolari per contenitore:

HF TGI

vLLM

Parametri supportati

Per i modelli Google, l'API Chat Completions supporta i seguenti parametri OpenAI. Per una descrizione di ciascun parametro, consulta la documentazione di OpenAI sulla creazione di completamenti di chat. Il supporto dei parametri per i modelli di terze parti varia in base al modello. Per vedere quali parametri sono supportati, consulta la documentazione del modello.

messages
  • System message
  • User message: sono supportati i tipi text e image_url. Il tipo image_url supporta le immagini archiviate in un URI Cloud Storage o una codifica Base64 nel formato "data:<MIME-TYPE>;base64,<BASE64-ENCODED-BYTES>". Per scoprire come creare un bucket Cloud Storage e caricare un file, consulta Scopri l'archiviazione di oggetti. L'opzione detail non è supportata.
  • Assistant message
  • Tool message
  • Function message: questo campo è obsoleto, ma supportato per la compatibilità con le versioni precedenti.
model
max_completion_tokens Alias per max_tokens.
max_tokens
n
frequency_penalty
presence_penalty
reasoning_effort Configura la quantità di tempo e il numero di token utilizzati per una risposta.
  • low: 1024
  • medium: 8192
  • high: 24576
Poiché nella risposta non sono inclusi pensieri, è possibile specificare solo uno tra reasoning_effort o extra_body.google.thinking_config.
response_format
  • json_object: interpretato come passaggio di "application/json" all'API Gemini.
  • json_schema. Gli schemi completamente ricorsivi non sono supportati. additional_properties è supportato.
  • text: interpretato come passaggio di "text/plain" all'API Gemini.
  • Qualsiasi altro tipo MIME viene passato così com'è al modello, ad esempio passando "application/json" direttamente.
seed Corrisponde a GenerationConfig.seed.
stop
stream
temperature
top_p
tools
  • type
  • function
    • name
    • description
    • parameters: specifica i parametri utilizzando la specifica OpenAPI. Questo campo è diverso dal campo dei parametri OpenAI, che è descritto come oggetto schema JSON. Per scoprire le differenze tra le parole chiave di OpenAPI e JSON Schema, consulta la guida OpenAPI.
tool_choice
  • none
  • auto
  • required: corrisponde alla modalità ANY in FunctionCallingConfig.
  • validated: corrisponde alla modalità VALIDATED in FunctionCallingConfig. Questo è specifico per Google.
web_search_options Corrisponde allo strumento GoogleSearch. Non sono supportate opzioni secondarie.
function_call Questo campo è obsoleto, ma supportato per la compatibilità con le versioni precedenti.
functions Questo campo è obsoleto, ma supportato per la compatibilità con le versioni precedenti.

Se passi un parametro non supportato, questo viene ignorato.

Parametri di input multimodali

L'API Chat Completions supporta input multimodali selezionati.

input_audio
  • data: Qualsiasi URI o formato blob valido. Supportiamo tutti i tipi di blob, inclusi immagini, audio e video. È supportato tutto ciò che è supportato da GenerateContent (HTTP, Cloud Storage e così via).
  • format: OpenAI supporta sia wav (audio/wav) sia mp3 (audio/mp3). Con Gemini, sono supportati tutti i tipi MIME validi.
image_url
  • data: Come per input_audio, sono supportati tutti gli URI o i formati blob validi.
    Tieni presente che image_url come URL verrà impostato per impostazione predefinita il tipo MIME image/* e image_url come dati blob può essere utilizzato come qualsiasi input multimodale.
  • detail: Simile alla risoluzione dei contenuti multimediali, questo valore determina il numero massimo di token per immagine per la richiesta. Tieni presente che, mentre il campo di OpenAI è per immagine, Gemini applica lo stesso dettaglio alla richiesta e il passaggio di più tipi di dettagli in una richiesta genererà un errore.

In generale, il parametro data può essere un URI o una combinazione di tipo MIME e byte codificati in base64 nel formato "data:<MIME-TYPE>;base64,<BASE64-ENCODED-BYTES>". Per un elenco completo dei tipi MIME, vedi GenerateContent. Per ulteriori informazioni sulla codifica Base64 di OpenAI, consulta la documentazione.

Per l'utilizzo, consulta i nostri esempi di input multimodale.

Parametri specifici di Gemini

Per utilizzare le funzionalità supportate da Gemini ma non dai modelli OpenAI, trasmettili come parametri all'interno di un campo extra_content o extra_body. Se passi queste funzionalità al di fuori di questi campi, vengono ignorate.

extra_body funzionalità

Per utilizzare le funzionalità specifiche di Gemini extra_body, includile in un campo google.

{
  ...,
  "extra_body": {
     "google": {
       ...,
       // Add extra_body features here.
     }
   }
}
safety_settings Corrisponde al SafetySetting di Gemini.
cached_content Corrisponde al GenerateContentRequest.cached_content di Gemini.
thinking_config Corrisponde al GenerationConfig.ThinkingConfig di Gemini.
thought_tag_marker Utilizzato per separare i pensieri di un modello dalle sue risposte per i modelli con la funzionalità Pensiero disponibile.
Se non specificato, non verranno restituiti tag intorno ai pensieri del modello. Se presenti, le query successive rimuoveranno i tag dei pensieri e contrassegneranno i pensieri in modo appropriato per il contesto. In questo modo viene mantenuto il contesto appropriato per le query successive.

extra_part funzionalità

Il campo extra_part consente di specificare impostazioni aggiuntive per ogni Part. Per utilizzare le funzionalità specifiche di Gemini extra_part, includile in un campo google.

{
  ...,
  "extra_part": {
     "google": {
       ...,
       // Add extra_part features here.
     }
   }
}
extra_content Un campo per aggiungere contenuti specifici di Gemini che non devono essere ignorati.
thought In questo modo viene indicato esplicitamente se un campo è un pensiero (e ha la precedenza su thought_tag_marker). Questo deve essere utilizzato per specificare se una chiamata di strumento fa parte di un pensiero o meno.

Passaggi successivi