Autentica

Per utilizzare le librerie Python di OpenAI, installa l'SDK OpenAI:

pip install openai

Per eseguire l'autenticazione con l'API Chat Completions, puoi modificare la configurazione del client o cambiare la configurazione dell'ambiente per utilizzare l'autenticazione Google e un endpoint Agent Platform. Scegli il metodo più semplice e segui i passaggi per la configurazione a seconda che tu voglia chiamare i modelli Gemini o i modelli Model Garden con deployment autonomo.

Prima di poter gestire le richieste, alcuni modelli in Model Garden e i modelli Hugging Face supportati devono essere sottoposti a deployment in un endpoint Gemini Enterprise Agent Platform. Quando chiami questi modelli con deployment autonomo dall'API Chat Completions, devi specificare l'ID endpoint. Per elencare gli endpoint Agent Platform esistenti, utilizza il gcloud ai endpoints list comando.

Configurazione client

Per ottenere le credenziali Google in modo programmatico in Python, puoi utilizzare l'SDK Python google-auth:

pip install google-auth requests

Python

Prima di provare questo esempio, segui le istruzioni di configurazione Python nella guida rapida di Agent Platform per l'utilizzo delle librerie client.

Per eseguire l'autenticazione in Agent Platform, configura le credenziali predefinite dell'applicazione. Per saperne di più, consulta Configura l'autenticazione per un ambiente di sviluppo locale.

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,
)

Per impostazione predefinita, i token di accesso ai account di servizio hanno una durata di 1 ora. Puoi estendere la durata dei token di accesso ai account di servizio account o aggiornarli periodicamente e aggiornare la variabile openai.api_key.

Variabili di ambiente

Installa Google Cloud CLI. La libreria OpenAI può leggere le variabili di ambiente OPENAI_API_KEY e OPENAI_BASE_URL per modificare l'autenticazione e l'endpoint nel client predefinito. Imposta le seguenti variabili:

$ export PROJECT_ID=PROJECT_ID
$ export LOCATION=LOCATION
$ export OPENAI_API_KEY="$(gcloud auth application-default print-access-token)"

Per chiamare un modello Gemini, imposta la variabile MODEL_ID e utilizza l'endpoint openapi:

$ export MODEL_ID=MODEL_ID
$ export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi"

Per chiamare un modello con deployment autonomo da Model Garden, imposta la variabile ENDPOINT e utilizzala nell'URL:

$ export ENDPOINT=ENDPOINT_ID
$ export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT}"

Adesso inizializza il client:

client = openai.OpenAI()

L'API Gemini Chat Completions utilizza OAuth per l'autenticazione con un token di accesso di breve durata. Per impostazione predefinita, i token di accesso ai account di servizio hanno una durata di 1 ora. Puoi estendere la durata dei token di accesso ai account di servizio account o aggiornarli periodicamente e aggiornare la variabile openai.api_key.

Aggiorna le credenziali

L'esempio seguente mostra come aggiornare automaticamente le credenziali in base alle esigenze:

Python

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