Para usar as bibliotecas OpenAI Python com a Vertex AI, você precisa fazer a autenticação usando as credenciais do Google e configurar seu cliente para usar um endpoint da Vertex AI. Este documento mostra como configurar seu ambiente e fazer a autenticação usando dois métodos diferentes.
Antes de começar
Pré-requisitos
1. Instalar SDKs
Instale os SDKs OpenAI e Google Auth:
pip install openai google-auth requests
2. Configurar a autenticação
Para autenticar na Vertex AI, configure o Application Default Credentials (ADC). Para mais informações, consulte Configurar o Application Default Credentials.
3. Identificar o endpoint
O endpoint depende do tipo de modelo que você está chamando:
- Modelos do Gemini:use
openapi
como o ID do endpoint. - Modelos autoimplantados:alguns modelos no Model Garden e modelos Hugging Face com suporte precisam ser implantados antes de veicular solicitações. Ao chamar esses modelos, é necessário especificar o ID exclusivo do endpoint da sua implantação.
Métodos de autenticação
É possível fazer a autenticação configurando o objeto cliente diretamente no código ou definindo variáveis de ambiente. O fluxo de trabalho a seguir descreve o processo.
Escolha o método mais adequado ao seu caso de uso.
Método | Vantagens | Desvantagens | Ideal para |
---|---|---|---|
Configuração do cliente | Programática e flexível. Permite o gerenciamento dinâmico de credenciais no aplicativo. | Requer mais código para gerenciar credenciais e endpoints diretamente. | Aplicativos que precisam gerenciar vários clientes ou atualizar credenciais dinamicamente. |
Variáveis de ambiente | Configuração simples que separa a configuração do código. Ideal para desenvolvimento e teste locais. | Menos seguro se não for gerenciado corretamente. Menos flexível para mudanças dinâmicas de credenciais. | Guias de início rápido, desenvolvimento local e implantações em contêineres em que as variáveis de ambiente são padrão. |
Configuração do cliente
É possível receber credenciais do Google e configurar o cliente OpenAI no código Python de maneira programática. Por padrão, os tokens de acesso expiram após uma hora. Para aplicativos de longa duração, consulte como atualizar suas credenciais.
Conferir o código Python para a configuração do cliente
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, )
Variáveis de ambiente
Use a Google Cloud CLI para receber um token de acesso. A biblioteca OpenAI lê automaticamente as variáveis de ambiente OPENAI_API_KEY
e OPENAI_BASE_URL
para configurar o cliente padrão.
-
Defina variáveis de ambiente comuns:
export PROJECT_ID=PROJECT_ID export LOCATION=LOCATION export OPENAI_API_KEY="$(gcloud auth application-default print-access-token)"
-
Defina o URL base do tipo de modelo:
-
Para um modelo Gemini:
export MODEL_ID=MODEL_ID export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi"
-
Para um modelo autoimplantado do Model Garden:
export ENDPOINT=ENDPOINT_ID export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT}"
-
-
Inicializar o cliente:
O cliente usa as variáveis de ambiente que você definiu.
client = openai.OpenAI()
Por padrão, os tokens de acesso expiram após uma hora. É necessário atualizar o token periodicamente e a variável de ambiente OPENAI_API_KEY
.
Atualizar suas credenciais
Os tokens de acesso recebidos do Application Default Credentials expiram após uma hora. Para serviços ou aplicativos de longa duração, implemente um mecanismo para atualizar o token. O exemplo a seguir mostra uma classe wrapper que atualiza automaticamente o token quando ele expira.
Confira um exemplo de classe de atualização de credenciais
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)
A seguir
- Confira exemplos de como chamar a API Chat Completions com a sintaxe compatível com OpenAI.
- Confira exemplos de como chamar a API Inference com a sintaxe compatível com OpenAI.
- Confira exemplos de como chamar a API Function Calling com sintaxe compatível com OpenAI.
- Saiba mais sobre a API Gemini.