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, 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 mithilfe von Text-Prompts mit dem Modell gemini-pro generieren und sowohl Text- als auch Bilddaten verwenden, um das Modell gemini-pro-vision anzufordern. Dieser Abschnitt enthält jeweils einfache Codebeispiele. Ein ausführlicheres Beispiel, das alle Parameter abdeckt, findest du in der API-Referenz generateContent.

Text- und Bildeingabe

Sie können einen Text-Prompt mit einem Bild an das gemini-pro-vision-Modell senden, um eine visionsbezogene Aufgabe auszuführen. z. B. um ein Bild zu beschriften oder um zu identifizieren, was es ist.

Die folgenden Codebeispiele zeigen eine einfache Implementierung eines Text- und Bild-Prompts für jede unterstützte Sprache:

Python

model = genai.GenerativeModel('gemini-pro-vision')

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-pro-vision",
    content=[prompt, cookie_picture]
)
print(response.text)

Das vollständige Code-Snippet finden Sie in der Python-Anleitung.

Ok

vmodel := client.GenerativeModel("gemini-pro-vision")

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-pro-vision" });

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-pro-vision" });

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-pro-vision', 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-pro-vision", 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-pro-vision",
    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-pro-vision: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 einfache Implementierung einer reinen Text-Eingabeaufforderung für jede unterstützte Sprache:

Python

model = genai.GenerativeModel('gemini-pro-vision')

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-pro")
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-pro" });
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-pro" });
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-pro', 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-pro", 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-pro",
    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-pro: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 einfache Implementierung der Chat-Interaktion für jede unterstützte Sprache:

Python

  model = genai.GenerativeModel('gemini-pro')
  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-pro")
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-pro"});

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-pro"});

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-pro', 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-pro", 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-pro",
    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-pro: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-pro",
    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-pro")

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-pro" });
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-pro" });
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-pro', 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-pro", 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-pro",
    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-pro: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.

Dazu setzen Sie die Konfigurationsoption response_mime_type auf application/json und fügen eine JSON-Formatspezifikation in den Text Ihrer Anfrage ein. Das folgende Codebeispiel zeigt, wie Sie eine JSON-Antwort für einen Prompt anfordern:

cURL

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro-latest:generateContent?key=$API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{ "contents":[{
            "parts":[{"text": "List 5 popular cookie recipes using this JSON schema: \{ \"type\": \"object\", \"properties\": \{ \"recipe_name\": \{ \"type\": \"string\" \},\}\}"}] }],
          "generationConfig": {
            "response_mime_type": "application/json",
          } }'

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