Генерация текста

API Gemini может генерировать текстовый вывод, если в качестве входных данных предоставляются текст, изображения, видео и аудио.

В этом руководстве показано, как генерировать текст с помощью generateContent streamGenerateContent . Чтобы узнать о работе с видео- и аудиовозможностями Gemini, обратитесь к руководствам Vision и Audio .

Генерировать текст из текстового ввода

Самый простой способ сгенерировать текст с помощью API Gemini — предоставить модели один текстовый ввод, как показано в этом примере:

import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI("GEMINI_API_KEY");

const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

const prompt = "Explain how AI works";

const result = await model.generateContent(prompt);
console.log(result.response.text());

В этом случае подсказка («Объясните, как работает искусственный интеллект») не содержит примеров вывода, системных инструкций или информации о форматировании. Это беспроигрышный подход. В некоторых случаях использование одноразового или нескольких подсказок может привести к выводу, который в большей степени соответствует ожиданиям пользователя. В некоторых случаях вам также может потребоваться предоставить системные инструкции , которые помогут модели понять задачу или следовать конкретным рекомендациям.

Генерация текста из ввода текста и изображения

Gemini API поддерживает мультимодальные входные данные, которые объединяют текст с медиафайлами. В следующем примере показано, как генерировать текст из ввода текста и изображения:

import { GoogleGenerativeAI } from "@google/generative-ai";
import * as fs from 'node:fs';

const genAI = new GoogleGenerativeAI("GEMINI_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.";
const imagePart = fileToGenerativePart("/path/to/image.png", "image/png");

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

Создать текстовый поток

По умолчанию модель возвращает ответ после завершения всего процесса генерации текста. Вы можете добиться более быстрого взаимодействия, не дожидаясь получения всего результата и вместо этого используя потоковую передачу для обработки частичных результатов.

В следующем примере показано, как реализовать потоковую передачу с помощью streamGenerateContent для создания текста из приглашения для ввода только текста.

import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI("GEMINI_API_KEY");
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

const prompt = "Explain how AI works";

const result = await model.generateContentStream(prompt);

for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  process.stdout.write(chunkText);
}

Создать беседу в чате

Gemini SDK позволяет собирать несколько раундов вопросов и ответов, позволяя пользователям постепенно приближаться к ответам или получать помощь при решении сложных проблем. Эта функция SDK предоставляет интерфейс для отслеживания истории разговоров, но «за кулисами» используется тот же generateContent для создания ответа.

В следующем примере кода показана базовая реализация чата:

import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI("GEMINI_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());
let result2 = await chat.sendMessage("How many paws are in my house?");
console.log(result2.response.text());

Вы также можете использовать потоковую передачу с чатом, как показано в следующем примере:

import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI("GEMINI_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);
}
let result2 = await chat.sendMessageStream("How many paws are in my house?");
for await (const chunk of result2.stream) {
  const chunkText = chunk.text();
  process.stdout.write(chunkText);
}

Настроить генерацию текста

Каждое приглашение, которое вы отправляете модели, включает параметры, управляющие тем, как модель генерирует ответы. Вы можете использовать GenerationConfig для настройки этих параметров. Если вы не настраиваете параметры, модель использует параметры по умолчанию, которые могут различаться в зависимости от модели.

В следующем примере показано, как настроить несколько доступных параметров.

import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI("GEMINI_API_KEY");

const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

const result = await model.generateContent({
    contents: [
        {
          role: 'user',
          parts: [
            {
              text: "Explain how AI works",
            }
          ],
        }
    ],
    generationConfig: {
      maxOutputTokens: 1000,
      temperature: 0.1,
    }
});

console.log(result.response.text());

Добавить системные инструкции

Системные инструкции позволяют вам управлять поведением модели в зависимости от ваших конкретных потребностей и вариантов использования.

Предоставляя инструкции модельной системе, вы предоставляете модели дополнительный контекст для понимания задачи, создания более индивидуальных ответов и соблюдения конкретных правил при полном взаимодействии пользователя с моделью. Вы также можете указать поведение на уровне продукта, установив системные инструкции отдельно от подсказок, предоставляемых конечными пользователями.

Вы можете установить системные инструкции при инициализации модели:

// Set the system instruction during model initialization
const model = genAI.getGenerativeModel({
  model: "gemini-1.5-flash",
  systemInstruction: "You are a cat. Your name is Neko.",
});

Затем вы можете отправлять запросы модели как обычно.

Что дальше

Теперь, когда вы изучили основы API Gemini, вы можете попробовать:

  • Понимание зрения : узнайте, как использовать встроенное понимание зрения Gemini для обработки изображений и видео.
  • Распознавание звука . Узнайте, как использовать встроенную функцию распознавания звука Gemini для обработки аудиофайлов.