Per utilizzare le librerie Python di OpenAI con Vertex AI, devi autenticarti utilizzando le credenziali Google e configurare il client in modo che utilizzi un endpoint Vertex AI. Questo documento mostra come configurare l'ambiente e autenticarti utilizzando due metodi diversi.
Prima di iniziare
Prerequisiti
1. Installa gli SDK
Installa gli SDK OpenAI e Google Auth:
pip install openai google-auth requests
2. Configura l'autenticazione
Per effettuare l'autenticazione in Vertex AI, configura le Credenziali predefinite dell'applicazione (ADC). Per ulteriori informazioni, consulta Configurare le credenziali predefinite dell'applicazione.
3. Identifica l'endpoint
L'endpoint dipende dal tipo di modello che stai chiamando:
- Modelli Gemini: utilizza
openapi
come ID endpoint. - Modelli di cui è stato eseguito il deployment autonomo: alcuni modelli in Model Garden e i modelli Hugging Face supportati devono essere prima di cui è stato eseguito il deployment prima di poter gestire le richieste. Quando chiami questi modelli, devi specificare l'ID endpoint univoco del tuo deployment.
Metodi di autenticazione
Puoi eseguire l'autenticazione configurando l'oggetto client direttamente nel codice o impostando le variabili di ambiente. Il seguente flusso di lavoro illustra la procedura.
Scegli il metodo più adatto al tuo caso d'uso.
Metodo | Vantaggi | Svantaggi | Ideali per |
---|---|---|---|
Configurazione del client | Programmatico e flessibile. Consente la gestione dinamica delle credenziali all'interno dell'applicazione. | Richiede più codice per gestire direttamente le credenziali e gli endpoint. | Applicazioni che devono gestire più client o aggiornare le credenziali in modo dinamico. |
Variabili di ambiente | Configurazione semplice che separa la configurazione dal codice. Ideale per lo sviluppo e il test locali. | Meno sicure se non gestite correttamente. Meno flessibile per le modifiche dinamiche delle credenziali. | Quick start, sviluppo locale e deployment containerizzati in cui le variabili di ambiente sono standard. |
Configurazione del client
Puoi ottenere le credenziali Google e configurare il client OpenAI in modo programmatico nel codice Python. Per impostazione predefinita, i token di accesso scadono dopo un'ora. Per le applicazioni a lungo termine, scopri come aggiornare le credenziali.
Visualizza il codice Python per la configurazione del client
import openai from google.auth import default import google.auth.transport.requests # TODO(developer): Update and un-comment below lines # project_id = "PROJECT_ID" # location = "us-central1" # Programmatically get an access token credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"]) credentials.refresh(google.auth.transport.requests.Request()) # Note: the credential lives for 1 hour by default (https://cloud.google.com/docs/authentication/token-types#at-lifetime); after expiration, it must be refreshed. ############################## # Choose one of the following: ############################## # If you are calling a Gemini model, set the ENDPOINT_ID variable to use openapi. ENDPOINT_ID = "openapi" # If you are calling a self-deployed model from Model Garden, set the # ENDPOINT_ID variable and set the client's base URL to use your endpoint. # ENDPOINT_ID = "YOUR_ENDPOINT_ID" # OpenAI Client client = openai.OpenAI( base_url=f"https://{location}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/{ENDPOINT_ID}", api_key=credentials.token, )
Variabili di ambiente
Puoi utilizzare Google Cloud CLI per ottenere un token di accesso. La libreria OpenAI legge automaticamente le variabili di ambiente OPENAI_API_KEY
e OPENAI_BASE_URL
per configurare il client predefinito.
-
Imposta le variabili di ambiente comuni:
export PROJECT_ID=PROJECT_ID export LOCATION=LOCATION export OPENAI_API_KEY="$(gcloud auth application-default print-access-token)"
-
Imposta l'URL di base per il tipo di modello:
-
Per un modello Gemini:
export MODEL_ID=MODEL_ID export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi"
-
Per un modello di cui è stato eseguito il deployment autonomo da Model Garden:
export ENDPOINT=ENDPOINT_ID export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT}"
-
-
Esegui l'inizializzazione del client:
Il client utilizza le variabili di ambiente impostate.
client = openai.OpenAI()
Per impostazione predefinita, i token di accesso scadono dopo un'ora. Dovrai aggiornare periodicamente il token e la variabile di ambiente OPENAI_API_KEY
.
Aggiorna le credenziali
I token di accesso ottenuti dalle Credenziali predefinite dell'applicazione scadono dopo un'ora. Per servizi o applicazioni a lungo termine, devi implementare un meccanismo per aggiornare il token. L'esempio seguente mostra una classe wrapper che aggiorna automaticamente il token alla scadenza.
Visualizzare un esempio di corso di aggiornamento delle credenziali
from typing import Any import google.auth import google.auth.transport.requests import openai class OpenAICredentialsRefresher: def __init__(self, **kwargs: Any) -> None: # Set a placeholder key here self.client = openai.OpenAI(**kwargs, api_key="PLACEHOLDER") self.creds, self.project = google.auth.default( scopes=["https://www.googleapis.com/auth/cloud-platform"] ) def __getattr__(self, name: str) -> Any: if not self.creds.valid: self.creds.refresh(google.auth.transport.requests.Request()) if not self.creds.valid: raise RuntimeError("Unable to refresh auth") self.client.api_key = self.creds.token return getattr(self.client, name) # TODO(developer): Update and un-comment below lines # project_id = "PROJECT_ID" # location = "us-central1" client = OpenAICredentialsRefresher( base_url=f"https://{location}-aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi", ) response = client.chat.completions.create( model="google/gemini-2.0-flash-001", messages=[{"role": "user", "content": "Why is the sky blue?"}], ) print(response)
Passaggi successivi
- Guarda gli esempi di chiamata dell'API Chat Completions con la sintassi compatibile con OpenAI.
- Consulta gli esempi di chiamata dell'API Inference con la sintassi compatibile con OpenAI.
- Consulta gli esempi di chiamata all'API Function Calling con sintassi compatibile con OpenAI.
- Scopri di più sull'API Gemini.