Text mit der Gemini API generieren

Die Gemini API kann Textausgaben generieren, wenn Text, Bilder, Videos und Audioinhalte 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

Die einfachste Möglichkeit, mit der Gemini API Text zu generieren, besteht darin, dem Modell eine einzelne Texteingabe zur Verfügung zu 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 einer Ausgabe führen, die 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, bei denen Text mit Mediendateien kombiniert wird. Das folgende Beispiel zeigt, wie Text aus Text- und Bildeingaben 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 Anleitung konkreter formulieren. Weitere Informationen finden Sie unter Strategien für Dateiaufforderungen.

Textstream generieren

Standardmäßig gibt das Modell nach Abschluss des gesamten Textgenerierungsprozesses eine Antwort zurück. 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 Eingabeprompt aus reiner Textform 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, 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.

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

Sie können 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 bis zu fünf Zeichenfolgen an, durch die die Ausgabegenerierung beendet wird. Wenn angegeben, wird die API beim ersten Auftreten einer stop_sequence beendet. Die Stoppsequenz ist nicht Teil der Antwort.

maxOutputTokens legt die maximale Anzahl von Tokens fest, die in einem Kandidaten enthalten sein sollen.

temperature steuert die Zufälligkeit der Ausgabe. 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 generateContent-Aufrufe konfigurieren:

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

Alle in den einzelnen Aufrufen festgelegten Werte überschreiben die Werte des Modellkonstruktors.

Nächste Schritte

Nachdem Sie sich nun mit den Grundlagen der Gemini API vertraut gemacht haben, probieren Sie Folgendes aus:

  • Visuelles Verstehen: Hier erfahren Sie, wie Sie das native visuelle Verstehen von Gemini zur Verarbeitung von Bildern und Videos verwenden.
  • Systemanweisungen: Mit der Systemanweisung können Sie das Verhalten des Modells an Ihre spezifischen Anforderungen und Anwendungsfälle anpassen.
  • Audio-Erkennung: Hier erfahren Sie, wie Sie die native Audio-Erkennung von Gemini zur Verarbeitung von Audiodateien verwenden.