Mit der Gemini API erhalten Sie Zugriff auf die neuesten generativen Modelle von Google. Sobald Sie mit den allgemeinen Funktionen der API vertraut sind, können Sie mit einer Anleitung für die Sprache Ihrer Wahl mit der Entwicklung beginnen.
Modelle
Gemini ist eine Reihe multimodaler generativer KI-Modelle, die von Google entwickelt wurden. Gemini-Modelle können je nach ausgewählter Modellvariante Text und Bilder in Prompts akzeptieren und Textantworten ausgeben.
Ausführlichere Modellinformationen finden Sie auf der Seite Gemini-Modelle. Sie können auch die Methode list_models
verwenden, um alle verfügbaren Modelle aufzulisten, und dann die Methode get_model
, um die Metadaten für ein bestimmtes Modell abzurufen.
Prompt-Daten und -Design
Bestimmte Gemini-Modelle akzeptieren sowohl Textdaten als auch Mediendateien als Eingabe. Diese Fähigkeit bietet viele zusätzliche Möglichkeiten, Inhalte zu generieren, Daten zu analysieren und Probleme zu lösen. Es müssen einige Einschränkungen und Anforderungen berücksichtigt werden, einschließlich des allgemeinen Limits für Eingabetokens für das von Ihnen verwendete Modell. Informationen zu den Tokenlimits für bestimmte Modelle finden Sie unter Gemini-Modelle.
Aufforderungen, die die Gemini API verwenden, dürfen nicht größer als 20 MB sein. Die Gemini API bietet eine File API zum vorübergehenden Speichern von Mediendateien für Prompts, mit denen Sie Prompt-Daten über das Limit von 20 MB hinaus bereitstellen können. Weitere Informationen zur Verwendung der Files API und zu den für die Prompts unterstützten Dateiformaten finden Sie unter Aufforderung mit Mediendateien.
Prompt-Design und Texteingabe
Die Erstellung effektiver Prompts oder Prompt Engineering ist eine Kombination aus Kunst und Wissenschaft. Eine Anleitung zum Umgang mit Prompts finden Sie in der Einführung zu Prompts und unter Prompt 101 über verschiedene Ansätze für Prompts.
Inhaltserstellung
Mit der Gemini API können Sie je nach verwendeter Modellvariante sowohl Text- als auch Bilddaten für Prompts verwenden. Sie können beispielsweise Text aus reinen Text- oder multimodalen Prompts mit einem Gemini 1.5-Modell generieren. In diesem Abschnitt finden Sie jeweils grundlegende Codebeispiele. In der API-Referenz generateContent
finden Sie ein detaillierteres Beispiel, das alle Parameter abdeckt.
Text- und Bildeingabe
Sie können einen Text-Prompt mit einem Bild an ein Gemini 1.5-Modell senden, um eine Vision-bezogene Aufgabe auszuführen. z. B. um ein Bild mit Untertiteln zu versehen oder um zu kennzeichnen, dass es sich in einem Bild befindet.
Die folgenden Codebeispiele zeigen eine grundlegende Implementierung eines Text- und Bild-Prompts für jede unterstützte Sprache:
Python
model = genai.GenerativeModel('gemini-1.5-flash')
cookie_picture = {
'mime_type': 'image/png',
'data': pathlib.Path('cookie.png').read_bytes()
}
prompt = "Do these look store-bought or homemade?"
response = model.generate_content(
model="gemini-1.5-flash",
content=[prompt, cookie_picture]
)
print(response.text)
Das vollständige Code-Snippet finden Sie in der Python-Anleitung.
Ok
vmodel := client.GenerativeModel("gemini-1.5-flash")
data, err := os.ReadFile(filepath.Join("path-to-image", imageFile))
if err != nil {
log.Fatal(err)
}
resp, err := vmodel.GenerateContent(ctx, genai.Text("Do these look store-bought or homemade?"), genai.ImageData("jpeg", data))
if err != nil {
log.Fatal(err)
}
Ein vollständiges Beispiel finden Sie in der Go-Anleitung.
Node.js
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const prompt = "Do these look store-bought or homemade?";
const image = {
inlineData: {
data: Buffer.from(fs.readFileSync("cookie.png")).toString("base64"),
mimeType: "image/png",
},
};
const result = await model.generateContent([prompt, image]);
console.log(result.response.text());
Ein vollständiges Beispiel finden Sie in der Node.js-Anleitung.
Web
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const prompt = "Do these look store-bought or homemade?";
const image = {
inlineData: {
data: base64EncodedImage /* see JavaScript quickstart for details */,
mimeType: "image/png",
},
};
const result = await model.generateContent([prompt, image]);
console.log(result.response.text());
Ein vollständiges Beispiel finden Sie in der Webanleitung.
Dart (Flutter)
final model = GenerativeModel(model: 'gemini-1.5-flash', apiKey: apiKey);
final prompt = 'Do these look store-bought or homemade?';
final imageBytes = await File('cookie.png').readAsBytes();
final content = [
Content.multi([
TextPart(prompt),
DataPart('image/png', imageBytes),
])
];
final response = await model.generateContent(content);
print(response.text);
Ein vollständiges Beispiel finden Sie in der Anleitung zu Dart (Flutter).
Swift
let model = GenerativeModel(name: "gemini-1.5-flash", apiKey: "API_KEY")
let cookieImage = UIImage(...)
let prompt = "Do these look store-bought or homemade?"
let response = try await model.generateContent(prompt, cookieImage)
Ein vollständiges Beispiel finden Sie in der Swift-Anleitung.
Android
val generativeModel = GenerativeModel(
modelName = "gemini-1.5-flash",
apiKey = BuildConfig.apiKey
)
val cookieImage: Bitmap = // ...
val inputContent = content() {
image(cookieImage)
text("Do these look store-bought or homemade?")
}
val response = generativeModel.generateContent(inputContent)
print(response.text)
Ein vollständiges Beispiel finden Sie in der Android-Anleitung.
cURL
curl https://generativelanguage.googleapis.com/v1/models/gemini-1.5-flash:generateContent?key=${API_KEY} \
-H 'Content-Type: application/json' \
-X POST \
-d @<(echo'{
"contents":[
{ "parts":[
{"text": "Do these look store-bought or homemade?"},
{ "inlineData": {
"mimeType": "image/png",
"data": "'$(base64 -w0 cookie.png)'"
}
}
]
}
]
}')
Weitere Informationen finden Sie in der Anleitung zur REST API.
Nur Texteingabe
Die Gemini API kann auch reine Texteingaben verarbeiten. Mit diesem Feature können Sie NLP-Aufgaben wie die Textvervollständigung und -zusammenfassung ausführen.
Die folgenden Codebeispiele zeigen eine grundlegende Implementierung einer Nur-Text-Eingabeaufforderung für jede unterstützte Sprache:
Python
model = genai.GenerativeModel('gemini-1.5-flash')
prompt = "Write a story about a magic backpack."
response = model.generate_content(prompt)
Ein vollständiges Beispiel finden Sie in der Python-Anleitung.
Ok
ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
log.Fatal(err)
}
defer client.Close()
model := client.GenerativeModel("gemini-1.5-flash")
resp, err := model.GenerateContent(ctx, genai.Text("Write a story about a magic backpack."))
if err != nil {
log.Fatal(err)
}
Ein vollständiges Beispiel finden Sie in der Go-Anleitung.
Node.js
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const prompt = "Write a story about a magic backpack.";
const result = await model.generateContent(prompt);
console.log(result.response.text());
Ein vollständiges Beispiel finden Sie in der Node.js-Anleitung.
Web
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const prompt = "Write a story about a magic backpack.";
const result = await model.generateContent(prompt);
console.log(result.response.text());
Ein vollständiges Beispiel finden Sie in der Webanleitung.
Dart (Flutter)
final model = GenerativeModel(model: 'gemini-1.5-flash', apiKey: apiKey);
final prompt = 'Write a story about a magic backpack.';
final content = [Content.text(prompt)];
final response = await model.generateContent(content);
print(response.text);
Ein vollständiges Beispiel finden Sie in der Anleitung zu Dart (Flutter).
Swift
let model = GenerativeModel(name: "gemini-1.5-flash", apiKey: "API_KEY")
let prompt = "Write a story about a magic backpack."
let response = try await model.generateContent(prompt)
Ein vollständiges Beispiel finden Sie in der Swift-Anleitung.
Android
val generativeModel = GenerativeModel(
modelName = "gemini-1.5-flash",
apiKey = BuildConfig.apiKey
)
val prompt = "Write a story about a magic backpack."
val response = generativeModel.generateContent(prompt)
print(response.text)
Ein vollständiges Beispiel finden Sie in der Android-Anleitung.
cURL
curl https://generativelanguage.googleapis.com/v1/models/gemini-1.5-flash:generateContent?key=$API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{ "contents":[
{ "parts":[{"text": "Write a story about a magic backpack"}]}
]
}'
Weitere Informationen finden Sie in der Anleitung zur REST API.
Multi-Turn Conversations (Chat)
Mit der Gemini API können Sie interaktive Chatfunktionen für Ihre Nutzer erstellen. Mit der Chatfunktion der API können Sie mehrere Runden von Fragen und Antworten erfassen, sodass Nutzer schrittweise zu Antworten gehen oder Hilfe bei mehrteiligen Problemen erhalten können. Diese Funktion ist ideal für Anwendungen, die eine fortlaufende Kommunikation erfordern, wie Chatbots, interaktive Tutoren oder Kundensupportassistenten.
Die folgenden Codebeispiele zeigen eine grundlegende Implementierung der Chatinteraktion für jede unterstützte Sprache:
Python
model = genai.GenerativeModel('gemini-1.5-flash')
chat = model.start_chat(history=[])
response = chat.send_message(
"Pretend you\'re a snowman and stay in character for each response.")
print(response.text)
response = chat.send_message(
"What\'s your favorite season of the year?")
print(response.text)
Ein vollständiges Beispiel finden Sie in der Chat-Demo in der Python-Anleitung.
Ok
model := client.GenerativeModel("gemini-1.5-flash")
cs := model.StartChat()
cs.History = []*genai.Content{
&genai.Content{
Parts: []genai.Part{
genai.Text("Pretend you're a snowman and stay in character for each response."),
},
Role: "user",
},
&genai.Content{
Parts: []genai.Part{
genai.Text("Hello! It's cold! Isn't that great?"),
},
Role: "model",
},
}
resp, err := cs.SendMessage(ctx, genai.Text("What's your favorite season of the year?"))
if err != nil {
log.Fatal(err)
}
Ein vollständiges Beispiel finden Sie in der Chat-Demo in der Go-Anleitung.
Node.js
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash"});
const chat = model.startChat({
history: [
{
role: "user",
parts: "Pretend you're a snowman and stay in character for each response.",
},
{
role: "model",
parts: "Hello! It's cold! Isn't that great?",
},
],
generationConfig: {
maxOutputTokens: 100,
},
});
const msg = "What's your favorite season of the year?";
const result = await chat.sendMessage(msg);
console.log(result.response.text());
Ein vollständiges Beispiel finden Sie in der Node.js-Anleitung in der Chat-Demo.
Web
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash"});
const chat = model.startChat({
history: [
{
role: "user",
parts: "Pretend you're a snowman and stay in character for each response.",
},
{
role: "model",
parts: "Hello! It's so cold! Isn't that great?",
},
],
generationConfig: {
maxOutputTokens: 100,
},
});
const msg = "What's your favorite season of the year?";
const result = await chat.sendMessage(msg);
console.log(result.response.text());
Ein vollständiges Beispiel finden Sie in der Webanleitung in der Chat-Demo.
Dart (Flutter)
final model = GenerativeModel(model: 'gemini-1.5-flash', apiKey: apiKey);
final chat = model.startChat(history: [
Content.text(
"Pretend you're a snowman and stay in character for each response."),
Content.model([TextPart("Hello! It's cold! Isn't that great?")]),
]);
final content = Content.text("What's your favorite season of the year?");
final response = await chat.sendMessage(content);
print(response.text);
Ein vollständiges Beispiel finden Sie in der Chat-Demo in der Dart (Flutter)-Anleitung.
Swift
let model = GenerativeModel(name: "gemini-1.5-flash", apiKey: "API_KEY")
let chat = model.startChat()
var message = "Pretend you're a snowman and stay in character for each response."
var response = try await chat.sendMessage(message)
message = "What\'s your favorite season of the year?"
response = try await chat.sendMessage(message)
Ein vollständiges Beispiel finden Sie in der Chat-Demo in der Swift-Anleitung.
Android
val generativeModel = GenerativeModel(
modelName = "gemini-1.5-flash",
apiKey = BuildConfig.apiKey
)
val chat = generativeModel.startChat()
val response = chat.sendMessage("Pretend you're a snowman and stay in
character for each response.")
print(response.text)
Ein vollständiges Beispiel finden Sie in der Android-Anleitung.
cURL
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$API_KEY \ -H 'Content-Type: application/json' \ -X POST \ -d '{ "contents": [ {"role":"user", "parts":[{ "text": "Pretend you're a snowman and stay in character for each {"role": "model", response."}]}, "parts":[{ "text": "Hello! It's so cold! Isn't that great?"}]}, {"role": "user", "parts":[{ "text": "What\'s your favorite season of the year?"}]}, ] }' 2> /dev/null | grep "text"
# response example: "text": "Winter, of course!"
Weitere Informationen finden Sie in der Anleitung zur REST API.
Gestreamte Antworten
Die Gemini API bietet eine zusätzliche Möglichkeit, Antworten von generativen KI-Modellen zu erhalten: als Datenstream. Eine gestreamte Antwort sendet inkrementelle Daten an Ihre Anwendung zurück, während diese vom Modell generiert werden. Mit dieser Funktion können Sie schnell auf eine Nutzeranfrage reagieren, um den Fortschritt anzuzeigen und eine interaktivere Umgebung zu erstellen.
Gestreamte Antworten sind eine Option für Prompts im freien Format und Chats mit Gemini-Modellen. Die folgenden Codebeispiele zeigen, wie Sie für jede unterstützte Sprache eine gestreamte Antwort für eine Eingabeaufforderung anfordern:
Python
prompt = "Write a story about a magic backpack."
response = genai.stream_generate_content(
model="models/gemini-1.5-flash",
prompt=prompt
)
Das vollständige Code-Snippet finden Sie in der Python-Anleitung.
Ok
ctx := context.Background()
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
log.Fatal(err)
}
defer client.Close()
model := client.GenerativeModel("gemini-1.5-flash")
iter := model.GenerateContentStream(ctx, genai.Text("Write a story about a magic backpack."))
for {
resp, err := iter.Next()
if err == iterator.Done {
break
}
if err != nil {
log.Fatal(err)
}
// print resp
}
Ein vollständiges Beispiel finden Sie in der Go-Anleitung.
Node.js
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const prompt = "Write a story about a magic backpack.";
const result = await model.generateContentStream([prompt]);
// print text as it comes in
for await (const chunk of result.stream) {
const chunkText = chunk.text();
console.log(chunkText);
}
Ein vollständiges Beispiel finden Sie in der Node.js-Anleitung.
Web
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const prompt = "Write a story about a magic backpack.";
const result = await model.generateContentStream([prompt]);
// print text as it comes in
for await (const chunk of result.stream) {
const chunkText = chunk.text();
console.log(chunkText);
}
Ein vollständiges Beispiel finden Sie in der Webanleitung.
Dart (Flutter)
final model = GenerativeModel(model: 'gemini-1.5-flash', apiKey: apiKey);
final prompt = 'Write a story about a magic backpack.';
final content = [Content.text(prompt)];
final response = model.generateContentStream(content);
await for (final chunk in response) {
print(chunk.text);
}
Ein vollständiges Beispiel finden Sie in der Anleitung zu Dart (Flutter).
Swift
let model = GenerativeModel(name: "gemini-1.5-flash", apiKey: "API_KEY")
let prompt = "Write a story about a magic backpack."
let stream = model.generateContentStream(prompt)
for try await chunk in stream {
print(chunk.text ?? "No content")
}
Ein vollständiges Beispiel finden Sie in der Swift-Anleitung.
Android
val generativeModel = GenerativeModel(
modelName = "gemini-1.5-flash",
apiKey = BuildConfig.apiKey
)
val inputContent = content {
text("Write a story about a magic backpack.")
}
var fullResponse = ""
generativeModel.generateContentStream(inputContent).collect { chunk ->
print(chunk.text)
fullResponse += chunk.text
}
Ein vollständiges Beispiel finden Sie in der Android-Anleitung.
cURL
curl https://generativelanguage.googleapis.com/v1/models/gemini-1.5-flash:streamGenerateContent?key=${API_KEY} \
-H 'Content-Type: application/json' \
--no-buffer \
-d '{ "contents":[
{"role": "user",
"parts":[{"text": "Write a story about a magic backpack."}]
}
]
}' > response.json
Weitere Informationen finden Sie in der Anleitung zur REST API.
Antworten im JSON-Format
Je nach Ihrer Anwendung kann es sinnvoll sein, die Antwort auf eine Aufforderung in einem strukturierten Datenformat zurückzugeben. Dies gilt insbesondere dann, wenn Sie die Antworten zum Ausfüllen von Programmierschnittstellen verwenden. Die Gemini API bietet einen Konfigurationsparameter, um eine Antwort im JSON-Format anzufordern.
Sie können die Modellausgabe im JSON-Format erhalten. Dazu setzen Sie die Konfigurationsoption response_mime_type
auf application/json
und geben in der Eingabeaufforderung das gewünschte JSON-Format an:
Python
model = genai.GenerativeModel('gemini-1.5-flash',
generation_config={"response_mime_type": "application/json"})
prompt = """
List 5 popular cookie recipes.
Using this JSON schema:
Recipe = {"recipe_name": str}
Return a `list[Recipe]`
"""
response = model.generate_content(prompt)
print(response.text)
cURL
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{
"parts": [
{
"text": "\nList 5 popular cookie recipes.\n\nUsing this JSON schema:\n\n Recipe = {\"recipe_name\": str}\n\nReturn a `list[Recipe]`\n "
}
]
}
]
"generationConfig": {
"response_mime_type": "application/json",
}
}'
Während Flash-Modelle von Gemini 1.5 nur eine text-Beschreibung des JSON-Schemas akzeptieren, das zurückgegeben werden soll, können Sie mit Gemini 1.5 Pro-Modellen ein Schemaobjekt (oder ein entsprechendes Python-Typ) übergeben und die Modellausgabe richtet sich genau nach diesem Schema. Dies wird auch als gesteuerte Generierung oder eingeschränkte Decodierung bezeichnet.
Wenn Sie beispielsweise eine Liste von Recipe
-Objekten abrufen möchten, übergeben Sie list[Recipe]
an das Feld response_schema
des Arguments generation_config
:
Python
import typing_extensions as typing
class Recipe(typing.TypedDict):
recipe_name: str
model = genai.GenerativeModel(model_name="models/gemini-1.5-pro")
result = model.generate_content(
"List 5 popular cookie recipes",
generation_config=genai.GenerationConfig(response_mime_type="application/json",
response_schema = list[Recipe]))
print(result.text)
cURL
curl https://generativelanguage.googleapis.com/v1beta/models/models/gemini-1.5-pro:generateContent?
-H 'Content-Type: application/json'
-X POST \
-d '{
"contents": [
{
"parts": [
{
"text": "List 5 popular cookie recipes"
}
]
}
],
"generationConfig": {
"responseMimeType": "application/json",
"responseSchema": {
"type": "ARRAY",
"items": {
"type": "OBJECT",
"properties": {
"recipe_name": {
"type": "STRING"
}
}
}
}
}
}'
```
Weitere Informationen finden Sie in der Kurzanleitung zum JSON-Modus im Gemini API-Cookbook.
Einbettungen
Der Einbettungsdienst in der Gemini API generiert hochmoderne Einbettungen für Wörter, Wortgruppen und Sätze. Die resultierenden Einbettungen können dann für NLP-Aufgaben wie semantische Suche, Textklassifizierung und Clustering verwendet werden. Im Leitfaden zu Einbettungen findest du Informationen zu Einbettungen sowie einige wichtige Anwendungsfälle für den Einbettungsdienst.
Nächste Schritte
- Erste Schritte mit der Google AI Studio-UI mithilfe der Kurzanleitung für Google AI Studio
- Testen Sie den serverseitigen Zugriff auf die Gemini API mit den Anleitungen für Python, Go oder Node.js.
- In der Webanleitung können Sie mit dem Erstellen für das Web beginnen.
- Beginnen Sie mit der Swift-Anleitung oder der Android-Anleitung, um Apps für mobile Apps zu entwickeln.
- Wenn Sie bereits Google Cloud-Nutzer sind (oder Gemini in Vertex verwenden möchten, um die leistungsstarke Google Cloud-Umgebung zu nutzen), können Sie unter Generative AI in Vertex AI weitere Informationen finden.