Gemini mit der OpenAI-Bibliothek aufrufen

Mit der Gemini Chat Completions API können Sie Anfragen an die Vertex AI Gemini API mithilfe der OpenAI-Bibliotheken für Python und REST senden. Wenn Sie bereits die OpenAI-Bibliotheken verwenden, können Sie mit dieser API zwischen dem Aufrufen von OpenAI-Modellen und Gemini-Modellen wechseln, um Ausgabe, Kosten und Skalierbarkeit zu vergleichen, ohne den vorhandenen Code ändern zu müssen. Wenn Sie noch keine OpenAI-Bibliotheken nutzen, sollten Sie die Gemini API direkt aufrufen.

Unterstützte Modelle

Modell Version
Gemini 1.5 Flash google/gemini-1.5-flash-preview-0514
google/gemini-1.5-flash-001
Gemini 1.5 Pro, google/gemini-1.5-pro-preview-0514
google/gemini-1.5-pro-preview-0409
google/gemini-1.5-pro-001
Gemini 1.0 Pro Vision google/gemini-1.0-pro-vision
google/gemini-1.0-pro-vision-001
Gemini 1.0 Pro google/gemini-1.0-pro-002
google/gemini-1.0-pro-001
google/gemini-1.0-pro

Authentifizieren

Installieren Sie das OpenAI SDK, um die OpenAI-Python-Bibliotheken zu verwenden:

pip install openai

Für die Authentifizierung bei der Gemini Chat Completions API haben Sie folgende Möglichkeiten: Sie können entweder die Client-Einrichtung ändern oder die Umgebungskonfiguration ändern, um die Google-Authentifizierung und einen Vertex AI-Endpunkt zu verwenden. Wählen Sie eine der folgenden Optionen aus:

Client-Setup

Um Google-Anmeldedaten programmatisch in Python abzurufen, können Sie das google-auth Python SDK verwenden:

pip install google-auth
pip install requests

Ändern Sie das OpenAI SDK so, dass es auf den Vertex AI-Chat Abschlussendpunkt verweist:

# Programmatically get an access token
creds, project = google.auth.default()
auth_req = google.auth.transport.requests.Request()
creds.refresh(auth_req)
# 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.

# Pass the Vertex endpoint and authentication to the OpenAI SDK
PROJECT = 'PROJECT_ID'
LOCATION = 'LOCATION'
MODEL_ID = 'MODEL_ID'
client = openai.OpenAI(
    base_url = f'https://{LOCATION}-aiplatform.googleapis.com/v1beta1/projects/{PROJECT}/locations/{LOCATION}/endpoints/openapi',
    api_key = creds.token)

Standardmäßig bleiben Zugriffstokens eine Stunde lang gültig. Sie können die Lebensdauer des Zugriffstokens verlängern oder das Token regelmäßig aktualisieren und die Variable openai.api_key updaten.

Umgebungsvariablen

Installieren Sie die Google Cloud CLI. Die OpenAI-Bibliothek kann die Umgebungsvariablen OPENAI_API_KEY und OPENAI_BASE_URL lesen, um die Authentifizierung und den Endpunkt im Standardclient zu ändern. Legen Sie die folgenden Variablen fest:

$ export PROJECT=PROJECT_ID
$ export LOCATION=LOCATION
$ export MODEL_ID=MODEL_ID
$ export OPENAI_API_KEY="$(gcloud auth application-default print-access-token)"
$ export OPENAI_BASE_URL="https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT}/locations/${LOCATION}/endpoints/openapi"

Initialisieren Sie als Nächstes den Client:

client = openai.OpenAI()

Die Gemini Chat Completions API verwendet OAuth zur Authentifizierung mit einem kurzlebigen Zugriffstoken. Standardmäßig bleiben Zugriffstokens eine Stunde lang gültig. Sie können die Lebensdauer des Zugriffstokens verlängern oder das Token regelmäßig aktualisieren und die Umgebungsvariable OPENAI_API_KEY updaten.

Gemini Chat Completions API aufrufen

Im folgenden Beispiel wird gezeigt, wie Nicht-Streaming Anfragen gesendet werden:

curl

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi/chat/completions \
-d '{
  "model": "google/${MODEL_ID}",
  "messages": [{
    "role": "user",
    "content": "Write a story about a magic backpack."
  }]
}'

Python

import openai

client = openai.OpenAI()
model_response = client.chat.completions.create(
  model = "google/${MODEL_ID}",
  messages = [{"role": "user", "content": "Write a story about a magic backpack." }]
)

print(model_response)

Im folgenden Beispiel wird gezeigt, wie Streaminganfragen gesendet werden:

curl

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
https://${LOCATION}-aiplatform.googleapis.com/v1beta1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/openapi/chat/completions \
-d '{
  "model": "google/${MODEL_ID}}",
  "stream": true,
  "messages": [{
    "role": "user",
    "content": "Write a story about a magic backpack."
  }]
}'

Python

import openai

client = openai.OpenAI()
model_response = client.chat.completions.create(
  model = "google/${MODEL_ID}",
  stream = True,
  messages = [{"role": "user", "content": "Write a story about a magic backpack." }]
)

print(model_response)

Unterstützte Parameter

Die Gemini Chat Completions API unterstützt die folgenden OpenAI- Parameter. Eine Beschreibung der einzelnen Parameter finden Sie in der OpenAI-Dokumentation zu Chatvervollständigungen erstellen

messages
  • System message
  • User message: Die Typen text und image_url werden unterstützt. Der Typ image_url unterstützt nur in Cloud Storage gespeicherte Bilder. Informationen dazu, wie Sie einen Cloud Storage-Bucket erstellen und eine Datei darin hochladen, finden Sie unter Objektspeicher entdecken Die Option detail wird nicht unterstützt.
  • Assistant message
model
max_tokens
n
response_format
  • json_object: Wird als Übergabe von „application/json“ an die Gemini API interpretiert.
  • text: Wird als Übergabe von „text/plain“ an die Gemini API interpretiert.
  • Jeder andere MIME-Typ wird unverändert an das Modell übergeben, z. B. die direkte Übergabe von „application/json“.
stop
stream
temperature
top_p
tools
  • type
  • function
    • name
    • description
    • parameters
tool_choice
  • none
  • auto
  • required: Entspricht dem Modus ANY in der FunctionCallingConfig.
function_call Dieses Feld ist veraltet, wird aber für Abwärtskompatibilität unterstützt.
functions Dieses Feld ist veraltet, wird aber für Abwärtskompatibilität unterstützt.

Nicht unterstützte Parameter werden ignoriert.

Nächste Schritte