Gemini API – Übersicht

Mit der Gemini API erhalten Sie Zugriff auf die neuesten generativen Modelle von Google. Sobald Sie mit den allgemeinen Funktionen der API vertraut sind, probieren Sie eine Anleitung für Ihre Sprache aus, um mit der Entwicklung zu beginnen.

Modelle

Gemini ist eine Reihe von multimodalen generativen KI-Modellen, 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 zum Generieren von Inhalten, Analysieren von Daten und Lösen von Problemen. Es gibt einige Einschränkungen und Anforderungen, die zu berücksichtigen sind, 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.

Prompts, für die die Gemini API verwendet wird, 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. Damit können Sie Prompt-Daten über das Limit von 20 MB hinaus angeben. Weitere Informationen zur Verwendung der Files API und zu den für Prompts unterstützten Dateiformaten finden Sie unter Prompts für Mediendateien verwenden.

Prompt-Entwurf und Texteingabe

Die Erstellung effektiver Prompts oder Prompt Engineering ist eine Kombination aus Kunst und Wissenschaft. In der Einführung in Prompts finden Sie eine Anleitung zum Verwenden von Prompts. Unter Erste Schritte mit Aufforderungen finden Sie Informationen zu den verschiedenen Ansätzen von Prompts.

Inhaltserstellung

Mit der Gemini API können Sie für Prompts sowohl Text- als auch Bilddaten verwenden, je nachdem, welche Modellvariante Sie verwenden. Mit einem Gemini 1.5-Modell können Sie beispielsweise Text entweder aus reinen Text-Prompts oder aus multimodalen Prompts generieren. Dieser Abschnitt enthält jeweils grundlegende Codebeispiele. Ein ausführlicheres Beispiel, in dem alle Parameter behandelt werden, finden Sie in der generateContent API-Referenz.

Text- und Bildeingabe

Sie können einen Text-Prompt mit einem Bild an ein Gemini 1.5-Modell senden, um eine visionsbezogene Aufgabe auszuführen. Zum Beispiel ein Bild mit Untertiteln oder das Erkennen eines Bilds.

Die folgenden Codebeispiele zeigen eine einfache 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 Text eingeben

Die Gemini API kann auch reine Texteingaben verarbeiten. Mit dieser Funktion können Sie NLP-Aufgaben (Natural Language Processing, Natural Language Processing) wie Textvervollständigung und Zusammenfassungen ausführen.

Die folgenden Codebeispiele zeigen eine einfache Implementierung einer reinen 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)

Das vollständige 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 Chatumgebungen für Ihre Nutzer erstellen. Mit der Chatfunktion der API können Sie mehrere Fragen und Antworten erfassen, sodass Nutzer schrittweise zu Antworten gelangen oder Hilfe bei mehrteiligen Problemen erhalten können. Diese Funktion ist ideal für Anwendungen, die eine ständige Kommunikation erfordern, wie Chatbots, interaktive Tutoren oder Assistenten im Kundensupport.

Die folgenden Codebeispiele zeigen eine einfache 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 im Go-Tutorial.

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 Chat-Demo in der Node.js-Anleitung.

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 Chat-Demo in der Webanleitung.

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 weitere Möglichkeit, Antworten von generativen KI-Modellen zu erhalten: als Datenstream. Eine gestreamte Antwort sendet inkrementelle Daten an Ihre Anwendung zurück, wenn diese vom Modell generiert werden. Mit dieser Funktion können Sie schnell auf eine Nutzeranfrage reagieren, um den Fortschritt anzuzeigen und eine interaktivere Oberfläche zu schaffen.

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 einen Prompt 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

Abhängig von Ihrer Anwendung möchten Sie vielleicht, dass die Antwort auf eine Aufforderung in einem strukturierten Datenformat zurückgegeben wird, insbesondere wenn Sie die Antworten zum Ausfüllen von Programmierschnittstellen verwenden. Die Gemini API bietet einen Konfigurationsparameter, um eine Antwort im JSON-Format anzufordern.

Wenn das Modell in JSON-Daten ausgegeben werden soll, setzen Sie die Konfigurationsoption response_mime_type auf application/json und beschreiben Sie in der Eingabeaufforderung das JSON-Format, das Sie als Antwort verwenden möchten:

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 Textbeschreibung des JSON-Schemas akzeptieren, das zurückgegeben werden soll, können Sie mit den Gemini 1.5 Pro-Modellen ein Schemaobjekt (oder ein Äquivalent des Python-Typs) übergeben, wobei die Modellausgabe genau diesem Schema folgt. Dies wird auch als kontrollierte 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 findest du unter Kurzanleitung zum JSON-Modus im Gemini API-Cookbook.

Einbettungen

Der Einbettungsdienst 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 Benutzeroberfläche von Google AI Studio mithilfe der Kurzanleitung zu Google AI Studio.
  • In den Anleitungen für Python, Go oder Node.js können Sie den serverseitigen Zugriff auf die Gemini API ausprobieren.
  • Nutzen Sie das Web-Tutorial zum Erstellen von Anwendungen für das Web.
  • Informationen zum Erstellen von Apps für mobile Apps finden Sie in der Swift-Anleitung oder der Android-Anleitung.
  • Wenn Sie bereits Google Cloud-Nutzer sind oder Gemini in Vertex verwenden möchten, um das leistungsstarke Google Cloud-Ökosystem zu nutzen, finden Sie unter Generative AI in Vertex AI weitere Informationen.