Wenn Sie die OpenAI-Python-Bibliotheken mit Vertex AI verwenden möchten, müssen Sie sich mit Google-Anmeldedaten authentifizieren und Ihren Client so konfigurieren, dass er einen Vertex AI-Endpunkt verwendet. In diesem Dokument erfahren Sie, wie Sie Ihre Umgebung einrichten und sich mit zwei verschiedenen Methoden authentifizieren.
Hinweise
Vorbereitung
1. SDKs installieren
Installieren Sie die OpenAI- und Google Auth-SDKs:
pip install openai google-auth requests
2. Authentifizierung einrichten
Richten Sie zur Authentifizierung bei Vertex AI Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Standardanmeldedaten für Anwendungen einrichten.
3. Endpunkt identifizieren
Der Endpunkt hängt vom Typ des Modells ab, das Sie aufrufen:
- Gemini-Modelle:Verwenden Sie
openapi
als Endpunkt-ID. - Selbst bereitgestellte Modelle:Bestimmte Modelle in Model Garden und unterstützte Hugging Face-Modelle müssen zuerst bereitgestellt werden, bevor sie Anfragen verarbeiten können. Wenn Sie diese Modelle aufrufen, müssen Sie die eindeutige Endpunkt-ID Ihrer Bereitstellung angeben.
Authentifizierungsmethoden
Sie können sich entweder durch Konfigurieren des Clientobjekts direkt in Ihrem Code oder durch Festlegen von Umgebungsvariablen authentifizieren. Der folgende Workflow veranschaulicht den Prozess.
Wählen Sie die Methode aus, die am besten zu Ihrem Anwendungsfall passt.
Methode | Vorteile | Nachteile | Optimal für |
---|---|---|---|
Clienteinrichtung | Programmorientiert und flexibel. Ermöglicht die dynamische Verwaltung von Anmeldedaten innerhalb der Anwendung. | Es ist mehr Code erforderlich, um Anmeldedaten und Endpunkte direkt zu verwalten. | Anwendungen, bei denen mehrere Clients verwaltet oder Anmeldedaten dynamisch aktualisiert werden müssen. |
Umgebungsvariablen | Einfache Einrichtung, bei der die Konfiguration vom Code getrennt wird. Ideal für die lokale Entwicklung und Tests. | Weniger sicher, wenn sie nicht ordnungsgemäß verwaltet werden. Weniger flexibel bei dynamischen Anmeldedatenänderungen. | Kurzanleitungen, lokale Entwicklung und containerisierte Bereitstellungen, bei denen Umgebungsvariablen standardmäßig verwendet werden. |
Client-Einrichtung
Sie können Google-Anmeldedaten programmatisch abrufen und den OpenAI-Client in Ihrem Python-Code konfigurieren. Standardmäßig laufen Zugriffstokens nach einer Stunde ab. Informationen zum Aktualisieren von Anmeldedaten für langlaufende Anwendungen finden Sie hier.
Python-Code für die Clienteinrichtung ansehen
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, )
Umgebungsvariablen
Sie können die Google Cloud CLI verwenden, um ein Zugriffstoken abzurufen. Die OpenAI-Bibliothek liest automatisch die Umgebungsvariablen OPENAI_API_KEY
und OPENAI_BASE_URL
, um den Standardclient zu konfigurieren.
-
Gängige Umgebungsvariablen festlegen:
export PROJECT_ID=PROJECT_ID export LOCATION=LOCATION export OPENAI_API_KEY="$(gcloud auth application-default print-access-token)"
-
Legen Sie die Basis-URL für Ihren Modelltyp fest:
-
Für ein Gemini-Modell:
export MODEL_ID=MODEL_ID export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi"
-
Für ein selbst bereitgestelltes Modell aus Model Garden:
export ENDPOINT=ENDPOINT_ID export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${ENDPOINT}"
-
-
Client initialisieren:
Der Client verwendet die von Ihnen festgelegten Umgebungsvariablen.
client = openai.OpenAI()
Standardmäßig laufen Zugriffstokens nach einer Stunde ab. Sie müssen das Token regelmäßig aktualisieren und die Umgebungsvariable OPENAI_API_KEY
updaten.
Anmeldedaten aktualisieren
Zugriffstokens, die über die Standardanmeldedaten für Anwendungen abgerufen werden, laufen nach einer Stunde ab. Bei lang laufenden Diensten oder Anwendungen sollten Sie einen Mechanismus zum Aktualisieren des Tokens implementieren. Das folgende Beispiel zeigt eine Wrapper-Klasse, die das Token automatisch aktualisiert, wenn es abläuft.
Beispiel für einen Kurs zur Auffrischung von Anmeldedaten
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)
Nächste Schritte
- Hier finden Sie Beispiele für das Aufrufen der Chat Completions API mit der OpenAI-kompatiblen Syntax.
- Hier finden Sie Beispiele für das Aufrufen der Inference API mit der OpenAI-kompatiblen Syntax.
- Hier finden Sie Beispiele für das Aufrufen der Function Calling API mit OpenAI-kompatibler Syntax.
- Weitere Informationen zur Gemini API