Auf Gemini-Modelle kann über die OpenAI-Bibliotheken (Python, TypeScript und JavaScript) sowie über die REST API zugegriffen werden. Nur Google Cloud Auth wird mit der OpenAI-Bibliothek in der Gemini Enterprise Agent Platform unterstützt. Wenn Sie noch keine OpenAI-Bibliotheken nutzen, sollten Sie die Gemini API direkt aufrufen. Wenn Sie OpenAI-Bibliotheken verwenden und zu Agent Platform SDKs migrieren möchten, lesen Sie den Abschnitt Von OpenAI SDK zu Google Gen AI SDK migrieren.
Python
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 = "global"
# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())
# OpenAI Client
client = openai.OpenAI(
base_url=f"https://aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
api_key=credentials.token
)
response = client.chat.completions.create(
model="google/gemini-3.5-flash",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Explain to me how AI works"}
]
)
print(response.choices[0].message)
Beachten Sie die folgenden Unterschiede zur Standardkonfiguration des OpenAI-Clients:
api_key=credentials.token: Verwendet ein OAuth-Zugriffstoken, das über dieGoogle Cloud Standardanmeldedaten für Anwendungen abgerufen wurde.base_url: Weist die OpenAI-Bibliothek an, Anfragen an den OpenAI-kompatiblen Endpunkt der Agent Platform anstelle der Standard-URL zu senden.model="google/gemini-3.5-flash": Wählt ein kompatibles Gemini-Modell aus, das auf der Agent Platform gehostet wird.
Antwort wird generiert
Gemini 3-Modelle generieren einen internen Denkprozess, bevor sie eine Antwort zurückgeben. Dadurch wird die Leistung bei komplexen mehrstufigen Aufgaben verbessert. In der Gemini API steuert der Parameter thinking_level die Tiefe der Argumentation in verschiedenen Stufen (MINIMAL, LOW, MEDIUM und HIGH).
In der OpenAI-kompatiblen Chat Completions API steuern Sie die Tiefe der Argumentation mit dem Parameter reasoning_effort ("minimal", "low", "medium" oder "high"), der der entsprechenden thinking_level-Einstellung für Gemini 3-Modelle entspricht.
Wenn Sie reasoning_effort weglassen, wird die Standardkonfiguration des Modells verwendet.
Wenn Sie die Konfigurationsparameter für das Denken direkt über die OpenAI-kompatible API steuern möchten, verwenden Sie extra_body.google.thinking_config.
Python
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 = "global"
# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())
# OpenAI Client
client = openai.OpenAI(
base_url=f"https://aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
api_key=credentials.token
)
response = client.chat.completions.create(
model="google/gemini-3.5-flash",
reasoning_effort="low",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{
"role": "user",
"content": "Explain to me how AI works"
}
]
)
print(response.choices[0].message)
Streaming
Die Gemini API unterstützt Streaming-Antworten.
Python
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 = "global"
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())
client = openai.OpenAI(
base_url=f"https://aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
api_key=credentials.token
)
response = client.chat.completions.create(
model="google/gemini-3.5-flash",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
],
stream=True
)
for chunk in response:
print(chunk.choices[0].delta)
Funktionsaufrufe
Funktionsaufrufe erleichtern es, strukturierte Datenausgaben von generativen Modellen zu erhalten, und werden in der Gemini API unterstützt.
Python
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 = "global"
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())
client = openai.OpenAI(
base_url=f"https://aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
api_key=credentials.token
)
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. Chicago, IL",
},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
},
"required": ["location"],
},
}
}
]
messages = [{"role": "user", "content": "What's the weather like in Chicago today?"}]
response = client.chat.completions.create(
model="google/gemini-3.5-flash",
messages=messages,
tools=tools,
tool_choice="auto"
)
print(response)
Bilder verstehen
Gemini-Modelle sind nativ multimodal und unterstützen viele gängige Vision-Aufgaben.
Python
from google.auth import default
import google.auth.transport.requests
import base64
from openai import OpenAI
# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "global"
# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())
# OpenAI Client
client = openai.OpenAI(
base_url=f"https://aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
api_key=credentials.token,
)
# Function to encode the image
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
# Getting the base64 string
# base64_image = encode_image("Path/to/image.jpeg")
response = client.chat.completions.create(
model="google/gemini-3.5-flash",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "What is in this image?",
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{base64_image}"
},
},
],
}
],
)
print(response.choices[0])
Image generieren
REST
Ersetzen Sie diese Werte in den folgenden Anfragedaten:
- PROJECT_ID: Ihre Projekt-ID. .
Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:
Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:
{
"choices": [{
"finish_reason": "stop",
"index": 0,
"image": {
"data":"IMAGE_DATA",
"extra_content": {
"google": {
"mime_type":"image/png"
}
}
},
"content":"Here is an image of a banana: ",
"role":"assistant"
}],
"created":1757099999,
"id":"sample_response_id",
"model":"google/gemini-3.1-flash-image",
"object":"chat.completion",
"system_fingerprint":"",
"usage": {
"completion_tokens":1299,
"prompt_tokens":7,
"total_tokens":1306
}
}
Verständnis von Audioinhalten
Das folgende Beispiel zeigt, wie Audioeingabe analysiert wird:
Python
from google.auth import default
import google.auth.transport.requests
import base64
from openai import OpenAI
# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "global"
# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())
# OpenAI Client
client = openai.OpenAI(
base_url=f"https://aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
api_key=credentials.token,
)
with open("/path/to/your/audio/file.wav", "rb") as audio_file:
base64_audio = base64.b64encode(audio_file.read()).decode('utf-8')
response = client.chat.completions.create(
model="google/gemini-3.5-flash",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "Transcribe this audio",
},
{
"type": "input_audio",
"input_audio": {
"data": base64_audio,
"format": "wav"
}
}
],
}
],
)
print(response.choices[0].message.content)
Strukturierte Ausgabe
Gemini-Modelle können JSON-Objekte in jeder von Ihnen definierten Struktur ausgeben.
Python
from google.auth import default
import google.auth.transport.requests
from pydantic import BaseModel
from openai import OpenAI
# TODO(developer): Update and un-comment below lines
# project_id = "PROJECT_ID"
# location = "global"
# Programmatically get an access token
credentials, _ = default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
credentials.refresh(google.auth.transport.requests.Request())
# OpenAI Client
client = openai.OpenAI(
base_url=f"https://aiplatform.googleapis.com/v1/projects/{project_id}/locations/{location}/endpoints/openapi",
api_key=credentials.token,
)
class CalendarEvent(BaseModel):
name: str
date: str
participants: list[str]
completion = client.beta.chat.completions.parse(
model="google/gemini-3.5-flash",
messages=[
{"role": "system", "content": "Extract the event information."},
{"role": "user", "content": "John and Susan are going to an AI conference on Friday."},
],
response_format=CalendarEvent,
)
print(completion.choices[0].message.parsed)
Aktuelle Beschränkungen
Beachten Sie bei der Verwendung der OpenAI-kompatiblen API die folgende Einschränkung:
- Zugriffstokens sind standardmäßig eine Stunde lang gültig. Nach Ablauf müssen sie aktualisiert werden. Weitere Informationen finden Sie unter Anmeldedaten aktualisieren.
Nächste Schritte
Verwenden Sie die Google Gen AI-Bibliotheken, um Gemini-Modelle direkt aufzurufen.
Weitere Beispiele für die Verwendung der Chat Completions API mit der OpenAI-kompatiblen Syntax
Unterstützte Gemini-Modelle und ‑Parameter finden Sie unter OpenAI-Bibliotheken mit der Agent Platform verwenden.