Zum Google GenAI SDK migrieren

Mit der Einführung von Gemini 2.0 Ende 2024 haben wir eine neue Reihe von Bibliotheken eingeführt, das Google GenAI SDK. Es bietet eine verbesserte Entwicklererfahrung durch eine aktualisierte Clientarchitektur und vereinfacht den Überg3ang zwischen Entwickler und Unternehmensworkflows.

Das Google GenAI SDK ist jetzt auf allen unterstützten Plattformen allgemein verfügbar. Wenn Sie eine unserer älteren Bibliotheken verwenden, empfehlen wir Ihnen dringend, zu migrieren.

In dieser Anleitung finden Sie Vorher-nachher-Beispiele für migrierten Code, die Ihnen den Einstieg erleichtern.

Installation

Vorher

Python

pip install -U -q "google-generativeai"

JavaScript

npm install @google/generative-ai

Ok

go get github.com/google/generative-ai-go

Nachher

Python

pip install -U -q "google-genai"

JavaScript

npm install @google/genai

Ok

go get google.golang.org/genai

API-Zugriff

Das alte SDK hat den API-Client im Hintergrund implizit mit einer Vielzahl von Ad-hoc-Methoden verarbeitet. Dadurch war es schwierig, den Client und die Anmeldedaten zu verwalten. Jetzt interagieren Sie über ein zentrales Client-Objekt. Dieses Client-Objekt dient als einziger Einstiegspunkt für verschiedene API-Dienste (z.B. models, chats, files, tunings), wodurch die Konsistenz gefördert und die Verwaltung von Anmeldedaten und Konfigurationen bei verschiedenen API-Aufrufen vereinfacht wird.

Vorher (weniger zentralisierter API-Zugriff)

Python

Das alte SDK hat für die meisten API-Aufrufe kein Clientobjekt der obersten Ebene verwendet. Sie haben GenerativeModel-Objekte direkt instanziiert und mit ihnen interagiert.

import google.generativeai as genai

# Directly create and use model objects
model = genai.GenerativeModel('gemini-3.6-flash')
response = model.generate_content(...)
chat = model.start_chat(...)

JavaScript

GoogleGenerativeAI war zwar ein zentraler Punkt für Modelle und Chats, für andere Funktionen wie die Datei- und Cacheverwaltung mussten jedoch oft völlig separate Clientklassen importiert und instanziiert werden.

import { GoogleGenerativeAI } from "@google/generative-ai";
import { GoogleAIFileManager, GoogleAICacheManager } from "@google/generative-ai/server"; // For files/caching

const genAI = new GoogleGenerativeAI("GEMINI_API_KEY");
const fileManager = new GoogleAIFileManager("GEMINI_API_KEY");
const cacheManager = new GoogleAICacheManager("GEMINI_API_KEY");

// Get a model instance, then call methods on it
const model = genAI.getGenerativeModel({ model: "gemini-3.6-flash" });
const result = await model.generateContent(...);
const chat = model.startChat(...);

// Call methods on separate client objects for other services
const uploadedFile = await fileManager.uploadFile(...);
const cache = await cacheManager.create(...);

Ok

Die Funktion genai.NewClient hat einen Client erstellt, generative Modellvorgänge wurden jedoch in der Regel für eine separate GenerativeModel-Instanz aufgerufen, die von diesem Client abgerufen wurde. Auf andere Dienste wurde möglicherweise über separate Pakete oder Muster zugegriffen.

import (
      "github.com/google/generative-ai-go/genai"
      "github.com/google/generative-ai-go/genai/fileman" // For files
      "google.golang.org/api/option"
)

client, err := genai.NewClient(ctx, option.WithAPIKey("GEMINI_API_KEY"))
fileClient, err := fileman.NewClient(ctx, option.WithAPIKey("GEMINI_API_KEY"))

// Get a model instance, then call methods on it
model := client.GenerativeModel("gemini-3.6-flash")
resp, err := model.GenerateContent(...)
cs := model.StartChat()

// Call methods on separate client objects for other services
uploadedFile, err := fileClient.UploadFile(...)

Nachher (zentralisiertes Clientobjekt)

Python

from google import genai

# Create a single client object
client = genai.Client()

# Access API methods through services on the client object
response = client.models.generate_content(...)
chat = client.chats.create(...)
my_file = client.files.upload(...)
tuning_job = client.tunings.tune(...)

JavaScript

import { GoogleGenAI } from "@google/genai";

// Create a single client object
const ai = new GoogleGenAI({apiKey: "GEMINI_API_KEY"});

// Access API methods through services on the client object
const response = await ai.models.generateContent(...);
const chat = ai.chats.create(...);
const uploadedFile = await ai.files.upload(...);
const cache = await ai.caches.create(...);

Ok

import "google.golang.org/genai"

// Create a single client object
client, err := genai.NewClient(ctx, nil)

// Access API methods through services on the client object
result, err := client.Models.GenerateContent(...)
chat, err := client.Chats.Create(...)
uploadedFile, err := client.Files.Upload(...)
tuningJob, err := client.Tunings.Tune(...)

Authentifizierung

Sowohl ältere als auch neue Bibliotheken werden mit API-Schlüsseln authentifiziert. Sie können Ihren API-Schlüssel in Google AI Studio erstellen.

Vorher

Python

Das alte SDK hat das API-Clientobjekt implizit verarbeitet.

import google.generativeai as genai

genai.configure(api_key=...)

JavaScript

import { GoogleGenerativeAI } from "@google/generative-ai";

const genAI = new GoogleGenerativeAI("GEMINI_API_KEY");

Ok

Importieren Sie die Google-Bibliotheken:

import (
      "github.com/google/generative-ai-go/genai"
      "google.golang.org/api/option"
)

Erstellen Sie den Client:

client, err := genai.NewClient(ctx, option.WithAPIKey("GEMINI_API_KEY"))

Nachher

Python

Mit dem Google GenAI SDK erstellen Sie zuerst einen API-Client, der zum Aufrufen der API verwendet wird. Das neue SDK ruft Ihren API-Schlüssel aus den Umgebungsvariablen GEMINI_API_KEY ab, wenn Sie keinen an den Client übergeben.

export GEMINI_API_KEY="YOUR_API_KEY"
from google import genai

client = genai.Client() # Set the API key using the GEMINI_API_KEY env var.
                        # Alternatively, you could set the API key explicitly:
                        # client = genai.Client(api_key="YOUR_API_KEY")

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({apiKey: "GEMINI_API_KEY"});

Ok

Importieren Sie die GenAI-Bibliothek:

import "google.golang.org/genai"

Erstellen Sie den Client:

client, err := genai.NewClient(ctx, &genai.ClientConfig{
        Backend:  genai.BackendGeminiAPI,
})

Inhaltserstellung

Text

Vorher

Python

Bisher gab es keine Clientobjekte. Sie haben über GenerativeModel-Objekte direkt auf APIs zugegriffen.

import google.generativeai as genai

model = genai.GenerativeModel('gemini-3.6-flash')
response = model.generate_content(
    'Tell me a story in 300 words'
)
print(response.text)

JavaScript

import { GoogleGenerativeAI } from "@google/generative-ai";

const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-3.6-flash" });
const prompt = "Tell me a story in 300 words";

const result = await model.generateContent(prompt);
console.log(result.response.text());

Ok

ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey("GEMINI_API_KEY"))
if err != nil {
    log.Fatal(err)
}
defer client.Close()

model := client.GenerativeModel("gemini-3.6-flash")
resp, err := model.GenerateContent(ctx, genai.Text("Tell me a story in 300 words."))
if err != nil {
    log.Fatal(err)
}

printResponse(resp) // utility for printing response parts

Nachher

Python

Das neue Google GenAI SDK bietet über das Client-Objekt Zugriff auf alle API-Methoden. Mit Ausnahme einiger zustandsbehafteter Sonderfälle (chat und Live-API-sessions) sind dies alles zustandslose Funktionen. Aus Gründen der Nützlichkeit und Einheitlichkeit sind die zurückgegebenen Objekte pydantic-Klassen.

from google import genai
client = genai.Client()

response = client.models.generate_content(
    model='gemini-3.6-flash',
    contents='Tell me a story in 300 words.'
)
print(response.text)

print(response.model_dump_json(
    exclude_none=True, indent=4))

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({ apiKey: "GEMINI_API_KEY" });

const response = await ai.models.generateContent({
  model: "gemini-3.6-flash",
  contents: "Tell me a story in 300 words.",
});
console.log(response.text);

Ok

ctx := context.Background()
  client, err := genai.NewClient(ctx, nil)
if err != nil {
    log.Fatal(err)
}

result, err := client.Models.GenerateContent(ctx,