Генерация текста с помощью Gemini API

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

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

Прежде чем начать: настройте проект и ключ API.

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

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

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

// 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());

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

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

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

// 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());

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

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

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

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

// 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);
}

Создайте интерактивный чат

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

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

// 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());

Включить потоковую передачу чата

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

// 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);
}

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

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

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

// 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 указывает количество сгенерированных ответов, которые нужно вернуть. В настоящее время для этого значения можно установить только значение 1. Если оно не установлено, по умолчанию оно будет равно 1.

stopSequences определяет набор последовательностей символов (до 5), которые останавливают генерацию вывода. Если указано, API остановится при первом появлении stop_sequence. Последовательность остановки не будет включена в ответ.

maxOutputTokens устанавливает максимальное количество токенов, которые можно включить в кандидата.

temperature контролирует случайность выходного сигнала. Используйте более высокие значения для более творческих ответов и более низкие значения для более детерминированных ответов. Значения могут варьироваться от [0,0, 2,0].

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

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

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

Что дальше

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

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