Die Gemini API kann Textausgaben generieren, wenn Text, Bilder, Video und Audio als Eingabe bereitgestellt werden.
In dieser Anleitung erfahren Sie, wie Sie mit den Methoden generateContent
und streamGenerateContent
Text generieren. Weitere Informationen zur Verwendung der Bild- und Audiofunktionen von Gemini finden Sie in den Leitfäden Vision und Audio.
Text aus reiner Texteingabe generieren
Am einfachsten ist es, mit der Gemini API Text zu generieren, indem Sie dem Modell eine einzelne Texteingabe zur Verfügung stellen, wie in diesem Beispiel gezeigt:
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts":[{"text": "Write a story about a magic backpack."}]
}]
}' 2> /dev/null
In diesem Fall enthält der Prompt („Erkläre, wie KI funktioniert“) keine Ausgabebeispiele, Systemanweisungen oder Formatierungsinformationen. Es ist ein Zero-Shot-Ansatz. Bei einigen Anwendungsfällen kann ein Prompt vom Typ One-Shot oder Few-Shot zu einem Ergebnis führen, das den Erwartungen der Nutzer besser entspricht. In einigen Fällen können Sie auch Systemanweisungen angeben, damit das Modell die Aufgabe besser versteht oder bestimmte Richtlinien befolgt.
Text aus Text- und Bildeingabe generieren
Die Gemini API unterstützt multimodale Eingaben, die Text mit Mediendateien kombinieren. Im folgenden Beispiel wird gezeigt, wie Text aus einer Text- und Bildeingabe generiert wird:
# Use a temporary file to hold the base64 encoded image data
TEMP_B64=$(mktemp)
trap 'rm -f "$TEMP_B64"' EXIT
base64 $B64FLAGS $IMG_PATH > "$TEMP_B64"
# Use a temporary file to hold the JSON payload
TEMP_JSON=$(mktemp)
trap 'rm -f "$TEMP_JSON"' EXIT
cat > "$TEMP_JSON" << EOF
{
"contents": [{
"parts":[
{"text": "Tell me about this instrument"},
{
"inline_data": {
"mime_type":"image/jpeg",
"data": "$(cat "$TEMP_B64")"
}
}
]
}]
}
EOF
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-X POST \
-d "@$TEMP_JSON" 2> /dev/null
Wie bei Prompts mit reinem Text können auch multimodale Prompts verschiedene Ansätze und Verfeinerungen umfassen. Je nach Ausgabe dieses Beispiels können Sie dem Prompt weitere Schritte hinzufügen oder Ihre Anleitung konkreter formulieren. Weitere Informationen finden Sie unter Strategien für Dateiaufforderungen.
Textstream generieren
Standardmäßig gibt das Modell eine Antwort zurück, nachdem der gesamte Textgenerierungsprozess abgeschlossen ist. Sie können schnellere Interaktionen erzielen, wenn Sie nicht auf das vollständige Ergebnis warten, sondern stattdessen Streaming zum Verarbeiten von Teilergebnissen verwenden.
Im folgenden Beispiel wird gezeigt, wie Sie mit der Methode streamGenerateContent
Streaming implementieren, um Text aus einem nur aus Text bestehenden Eingabeprompt zu generieren.
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:streamGenerateContent?alt=sse&key=${GOOGLE_API_KEY}" \
-H 'Content-Type: application/json' \
--no-buffer \
-d '{ "contents":[{"parts":[{"text": "Write a story about a magic backpack."}]}]}'
Interaktiven Chat erstellen
Mit dem Gemini SDK können Sie mehrere Fragen und Antworten abfragen, damit Nutzer schrittweise Antworten erhalten oder Hilfe bei mehrteiligen Problemen erhalten können. Diese SDK-Funktion bietet eine Benutzeroberfläche, mit der Sie den Unterhaltungsverlauf im Blick behalten können. Im Hintergrund wird jedoch dieselbe generateContent
-Methode verwendet, um die Antwort zu erstellen.
Das folgende Codebeispiel zeigt eine einfache Chatimplementierung:
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{"role":"user",
"parts":[{
"text": "Hello"}]},
{"role": "model",
"parts":[{
"text": "Great to meet you. What would you like to know?"}]},
{"role":"user",
"parts":[{
"text": "I have two dogs in my house. How many paws are in my house?"}]},
]
}' 2> /dev/null | grep "text"
Chatstreaming aktivieren
Sie können auch Streaming mit Chat verwenden, wie im folgenden Beispiel gezeigt:
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:streamGenerateContent?alt=sse&key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [
{"role":"user",
"parts":[{
"text": "Hello"}]},
{"role": "model",
"parts":[{
"text": "Great to meet you. What would you like to know?"}]},
{"role":"user",
"parts":[{
"text": "I have two dogs in my house. How many paws are in my house?"}]},
]
}' 2> /dev/null | grep "text"
Textgenerierung konfigurieren
Jeder Prompt, den Sie an das Modell senden, enthält Parameter, die steuern, wie das Modell Antworten generiert. Mit GenerationConfig
können Sie diese Parameter konfigurieren. Wenn Sie die Parameter nicht konfigurieren, verwendet das Modell die Standardoptionen, die je nach Modell variieren können.
Im folgenden Beispiel wird gezeigt, wie mehrere der verfügbaren Optionen konfiguriert werden.
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{
"contents": [{
"parts":[
{"text": "Write a story about a magic backpack."}
]
}],
"safetySettings": [
{
"category": "HARM_CATEGORY_DANGEROUS_CONTENT",
"threshold": "BLOCK_ONLY_HIGH"
}
],
"generationConfig": {
"stopSequences": [
"Title"
],
"temperature": 1.0,
"maxOutputTokens": 800,
"topP": 0.8,
"topK": 10
}
}' 2> /dev/null | grep "text"
Mit stopSequences
wird die Zeichenfolge (bis zu 5) angegeben, durch die die Ausgabe generiert wird. Wenn angegeben, wird die API beim ersten Auftreten eines stop_sequence
angehalten. Die Stoppsequenz ist nicht Teil der Antwort.
Mit temperature
wird die Zufälligkeit der Ausgabe gesteuert. Verwenden Sie höhere Werte für kreativere Antworten und niedrigere Werte für deterministischere Antworten. Die Werte können zwischen [0.0, 2.0] liegen.
Mit maxOutputTokens
wird die maximale Anzahl von Tokens festgelegt, die in einen Kandidaten aufgenommen werden sollen.
topP
ändert, wie das Modell Tokens für die Ausgabe auswählt. Tokens werden vom wahrscheinlichsten bis zum am wenigsten wahrscheinlichen Token ausgewählt, bis die Summe ihrer Wahrscheinlichkeiten dem Wert topP
entspricht. Der Standardwert für topP
ist 0,95.
topK
ändert, wie das Modell Tokens für die Ausgabe auswählt. Ein topK
von 1 bedeutet, dass das ausgewählte Token unter allen Tokens im Vokabular des Modells am wahrscheinlichsten ist, während ein topK
von 3 bedeutet, dass das nächste Token mithilfe der Temperatur aus den drei wahrscheinlichsten Tokens ausgewählt wird. Anschließend werden Tokens weiter auf der Grundlage von topP
gefiltert, wobei das endgültige Token mithilfe von Temperaturproben ausgewählt wird.
Systemanweisungen hinzufügen
Mit Systemanweisungen können Sie das Verhalten eines Modells entsprechend Ihren spezifischen Anforderungen und Anwendungsfällen steuern.
Wenn Sie dem Modell Systemanweisungen geben, erhalten Sie zusätzlichen Kontext, um die Aufgabe besser zu verstehen, individuellere Antworten zu generieren und bestimmte Richtlinien während der gesamten Nutzerinteraktion mit dem Modell einzuhalten. Sie können auch das Verhalten auf Produktebene angeben, indem Sie Systemanweisungen festlegen, die von Prompts von Endnutzern getrennt sind.
Sie können Systemanweisungen festlegen, wenn Sie Ihr Modell initialisieren:
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{ "system_instruction": {
"parts":
{ "text": "You are a cat. Your name is Neko."}},
"contents": {
"parts": {
"text": "Hello there"}}}'
Ein interaktives Ende-zu-Ende-Beispiel für die Verwendung von Systemanweisungen finden Sie in den Systemanweisungen für Colab.
Nächste Schritte
Nachdem Sie sich mit den Grundlagen der Gemini API vertraut gemacht haben, können Sie Folgendes ausprobieren:
- Visuelles Verstehen: Hier erfahren Sie, wie Sie das native visuelle Verstehen von Gemini zur Verarbeitung von Bildern und Videos verwenden.
- Audioverständnis: Hier erfahren Sie, wie Sie das native Audioverständnis von Gemini zur Verarbeitung von Audiodateien verwenden.