Von OpenAI SDK zu Google Gen AI SDK migrieren

Auf dieser Seite wird erläutert, wie Sie Code, der für das OpenAI SDK entwickelt wurde, zum Google Gen AI SDK migrieren, um Gemini-Modelle auf der Gemini Enterprise Agent Platform zu verwenden.

Übersicht zur Migration

Das folgende Notebook zeigt eine praktische Migration von der openai-Bibliothek zur google-genai-Bibliothek:

API- und Syntaxzuordnung

In der folgenden Tabelle werden die Kernkomponenten, Methoden und Parameter des OpenAI SDK mit dem Google Gen AI SDK verglichen.

Funktion OpenAI SDK (openai) Google Gen AI SDK (google-genai)
Clientinitialisierung client = OpenAI(api_key=...) client = genai.Client(vertexai=True, ...)
Generierungsmethode client.chat.completions.create client.models.generate_content
Streaming-Methode stream=True (Parameter) client.models.generate_content_stream (Methode)
Nutzereingabe messages=[{"role": "user", "content": "..."}] contents="..." (String) oder contents=[...] (Liste)
Systemanweisungen messages=[{"role": "system", "content": "..."}] config=types.GenerateContentConfig(system_instruction=...)
Zugriff auf Antworten response.choices[0].message.content response.text
Chatprotokoll Manuelle Listenverwaltung (messages.append) client.chats.create() (zustandsorientiertes Objekt)
Maximale Anzahl von Tokens max_tokens max_output_tokens (in config)
Temperatur temperature temperature (in config)
JSON-Modus response_format={"type": "json_object"} response_mime_type="application/json" (in config)

Installation und Einrichtung

Deinstallieren Sie die OpenAI-Bibliothek und installieren Sie das Google Gen AI SDK.

pip install google-genai

2. Authentifizierung und Initialisierung

Während OpenAI einen API-Schlüssel verwendet, verwendet die Agent Platform Anmeldedaten für die Identitäts- und Zugriffsverwaltung (IAM) (Standardanmeldedaten für Anwendungen). Sie müssen Ihre Projekt-ID und Ihren Standort explizit definieren.

OpenAI SDK Google Gen AI SDK
from openai import OpenAI
import os

# Relies on OPENAI_API_KEY environment variable
client = OpenAI()
        
from google import genai

# Use vertexai=True to use Agent Platform
client = genai.Client(
    vertexai=True,
    project='your-project-id',
    location='us-central1'
)
        
Tipp:Sie können auch Umgebungsvariablen festlegen, um den Client ohne Argumente zu initialisieren. Ähnlich wie der OpenAI-Client den API-Schlüssel aus der Umgebung liest.

Legen Sie GOOGLE_GENAI_USE_ENTERPRISE, GOOGLE_CLOUD_PROJECT und GOOGLE_CLOUD_LOCATION fest, wie unten gezeigt:

export GOOGLE_GENAI_USE_ENTERPRISE=true
export GOOGLE_CLOUD_PROJECT='your-project-id'
export GOOGLE_CLOUD_LOCATION='global'

Nach der Konfiguration können Sie den Client initialisieren, ohne Parameter zu übergeben:

from google import genai

client = genai.Client()

Codebeispiele

Die folgenden Codebeispiele zeigen die Unterschiede zwischen dem OpenAI SDK und dem Google Gen AI SDK für häufige Aufgaben.

Textgenerierung in einer Runde

Die folgenden Codebeispiele zeigen, wie Sie Text generieren. Im Google Gen AI SDK werden Systemanweisungen als Konfigurationsparameter und nicht als Nachrichtenrolle in der Eingabeliste behandelt.

OpenAI SDK Google Gen AI SDK
response = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Explain quantum physics."}
    ]
)
print(response.choices[0].message.content)
        
from google.genai import types

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents="Explain quantum physics.",
    config=types.GenerateContentConfig(
        system_instruction="You are a helpful assistant."
    )
)
print(response.text)
        

Textgenerierung mit Parametern

Die folgenden Codebeispiele zeigen die Unterschiede beim Definieren von Konfigurationsparametern. Im Google Gen AI SDK werden Parameter wie temperature, max_output_tokens (zuvor max_tokens) und die JSON-Formatierung in einem GenerateContentConfig-Objekt gruppiert.

OpenAI SDK Google Gen AI SDK
response = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "user", "content": "List 3 types of apples in JSON."}
    ],
    temperature=0.7,
    max_tokens=1000,
    response_format={"type": "json_object"}
)

print(response.choices[0].message.content)
        
from google.genai import types

config = types.GenerateContentConfig(
    temperature=0.7,
    max_output_tokens=1000,
    response_mime_type="application/json"
)

response = client.models.generate_content(
    model="gemini-2.5-flash",
    contents="List 3 types of apples in JSON.",
    config=config
)

print(response.text)
        

Chat (mehrere Runden)

Die folgenden Codebeispiele zeigen die Unterschiede bei der Verwaltung des Chatprotokolls. Das Google Gen AI SDK vereinfacht dies durch ein zustandsorientiertes chat-Objekt, während bei OpenAI Nachrichten manuell an eine Liste angehängt werden müssen.

OpenAI SDK Google Gen AI SDK
# You must manually manage the list state
messages = [{"role": "user", "content": "Hi"}]

response = client.chat.completions.create(
    model="gpt-4",
    messages=messages
)

# Append the response to history manually
messages.append(response.choices[0].message)
messages.append({"role": "user", "content": "Next question"})

response2 = client.chat.completions.create(
    model="gpt-4",
    messages=messages
)
print(response2.choices[0].message.content)
        
# The SDK manages history for you
chat = client.chats.create(
    model="gemini-2.5-flash",
    config=types.GenerateContentConfig(
        system_instruction="You are a helpful assistant."
    )
)

response1 = chat.send_message("Hi")
print(response1.text)

# History is retained automatically in the chat object
response2 = chat.send_message("Next question")
print(response2.text)
        

Streaming

Die folgenden Codebeispiele zeigen die Unterschiede beim Streamen von Antworten. Das Google Gen AI SDK verwendet eine bestimmte Methode (generate_content_stream) anstelle eines booleschen Flags.

OpenAI SDK Google Gen AI SDK
stream = client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "Write a story."}],
    stream=True
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")
        
stream = client.models.generate_content_stream(
    model="gemini-2.5-flash",
    contents="Write a story."
)

for chunk in stream:
    print(chunk.text, end="")
        

Nächste Schritte