Text mit der Gemini API generieren

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.

Bevor Sie beginnen: Projekt und API-Schlüssel einrichten

Bevor Sie die Gemini API aufrufen können, müssen Sie Ihr Projekt einrichten und Ihren API-Schlüssel konfigurieren.

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:

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
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());

In diesem Fall enthält der Prompt („Eine Geschichte über einen magischen Rucksack schreiben“) 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:

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

function fileToGenerativePart(path, mimeType) {
  return {
    inlineData: {
      data: Buffer.from(fs.readFileSync(path)).toString("base64"),
      mimeType,
    },
  };
}

const prompt = "Describe how this product might be manufactured.";
// Note: The only accepted mime types are some image types, image/*.
const imagePart = fileToGenerativePart(
  `${mediaPath}/jetpack.jpg`,
  "image/jpeg",
);

const result = await model.generateContent([prompt, imagePart]);
console.log(result.response.text());

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 Anweisungen 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.

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
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();
  process.stdout.write(chunkText);
}

Interaktiven Chat erstellen

Mit der Gemini API können Sie interaktive Chats für Ihre Nutzer erstellen. Mit der Chatfunktion der API können Sie mehrere Fragen und Antworten erfassen, damit Nutzer schrittweise Antworten erhalten oder Hilfe bei mehrteiligen Problemen erhalten können. Diese Funktion eignet sich ideal für Anwendungen, bei denen eine kontinuierliche Kommunikation erforderlich ist, z. B. Chatbots, interaktive Tutoren oder Kundenserviceassistenten.

Das folgende Codebeispiel zeigt eine einfache Chatimplementierung:

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const chat = model.startChat({
  history: [
    {
      role: "user",
      parts: [{ text: "Hello" }],
    },
    {
      role: "model",
      parts: [{ text: "Great to meet you. What would you like to know?" }],
    },
  ],
});
let result = await chat.sendMessage("I have 2 dogs in my house.");
console.log(result.response.text());
result = await chat.sendMessage("How many paws are in my house?");
console.log(result.response.text());

Chatstreaming aktivieren

Du kannst auch Streaming mit Chat verwenden, wie im folgenden Beispiel gezeigt:

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const chat = model.startChat({
  history: [
    {
      role: "user",
      parts: [{ text: "Hello" }],
    },
    {
      role: "model",
      parts: [{ text: "Great to meet you. What would you like to know?" }],
    },
  ],
});
let result = await chat.sendMessageStream("I have 2 dogs in my house.");
for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  process.stdout.write(chunkText);
}
result = await chat.sendMessageStream("How many paws are in my house?");
for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  process.stdout.write(chunkText);
}

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.

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({
  model: "gemini-1.5-flash",
  generationConfig: {
    candidateCount: 1,
    stopSequences: ["x"],
    maxOutputTokens: 20,
    temperature: 1.0,
  },
});

const result = await model.generateContent(
  "Tell me a story about a magic backpack.",
);
console.log(result.response.text());

candidateCount gibt die Anzahl der generierten Antworten an, die zurückgegeben werden sollen. Derzeit kann dieser Wert nur auf „1“ festgelegt werden. Wenn dieser Wert nicht festgelegt ist, wird standardmäßig „1“ verwendet.

stopSequences gibt die Zeichenfolgen (bis zu 5) an, durch die die Ausgabe generiert wird. Wenn angegeben, wird die API beim ersten Auftreten einer stop_sequence beendet. Die Stoppsequenz ist nicht Teil der Antwort.

Mit maxOutputTokens wird die maximale Anzahl von Tokens festgelegt, die in einen Kandidaten aufgenommen werden sollen.

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.

Sie können auch einzelne Aufrufe von generateContent konfigurieren:

const result = await model.generateContent({
  contents: [
    {
      role: 'user',
      parts: [
        {
          text: prompt,
        }
      ],
    }
  ],
  generationConfig: {
    maxOutputTokens: 1000,
    temperature: 0.1,
  },
});
console.log(result.response.text());

Alle Werte, die für den einzelnen Aufruf festgelegt werden, überschreiben die Werte im Modellkonstruktor.

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.
  • Systemanweisungen: Mit Systemanweisungen können Sie das Verhalten des Modells entsprechend Ihren spezifischen Anforderungen und Anwendungsfällen steuern.
  • Audioverständnis: Hier erfahren Sie, wie Sie das native Audioverständnis von Gemini zur Verarbeitung von Audiodateien verwenden.