Создавайте многоходовые беседы (чат) с помощью Gemini API,Создавайте многоходовые беседы (чат) с помощью Gemini API


Используя Gemini API , вы можете создавать диалоги в произвольной форме, состоящие из нескольких ходов. Vertex AI в Firebase SDK упрощает процесс, управляя состоянием разговора, поэтому, в отличие от generateContentStream() или generateContent() , вам не нужно самостоятельно хранить историю разговора.

Прежде чем начать

Если вы еще этого не сделали, прочтите руководство по началу работы с Vertex AI в Firebase SDK . Убедитесь, что вы выполнили все следующее:

  1. Настройте новый или существующий проект Firebase, включая использование тарифного плана Blaze и включение необходимых API.

  2. Подключите свое приложение к Firebase, включая регистрацию вашего приложения и добавление конфигурации Firebase в ваше приложение.

  3. Добавьте SDK и инициализируйте службу Vertex AI и генеративную модель в своем приложении.

После того как вы подключили свое приложение к Firebase, добавили SDK и инициализировали службу Vertex AI и генеративную модель, вы готовы вызвать Gemini API .

Отправить запрос на подсказку в чате

Чтобы построить многоходовой разговор (например, чат), начните с инициализации чата, вызвав startChat() . Затем используйте sendMessageStream() (или sendMessage() ), чтобы отправить новое сообщение пользователя, которое также добавит сообщение и ответ в историю чата.

Существует два возможных варианта role , связанной с содержимым беседы:

  • user : роль, которая предоставляет подсказки. Это значение является значением по умолчанию для вызовов sendMessageStream() (или sendMessage() ), и функция выдает исключение, если передается другая роль.

  • model : роль, которая предоставляет ответы. Эту роль можно использовать при вызове startChat() с существующей history .

Выберите, хотите ли вы передать ответ в потоковом режиме ( sendMessageStream ) или дождаться ответа, пока не будет сгенерирован весь результат ( sendMessage ).

Потоковое вещание

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

В этом примере показано, как использовать startChat() и sendMessageStream() для потоковой передачи ответов от модели:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")

// Optionally specify existing chat history
let history = [
  ModelContent(role: "user", parts: "Hello, I have 2 dogs in my house."),
  ModelContent(role: "model", parts: "Great to meet you. What would you like to know?"),
]

// Initialize the chat with optional chat history
let chat = model.startChat(history: history)

// To stream generated text output, call sendMessageStream and pass in the message
let contentStream = try chat.sendMessageStream("How many paws are in my house?")
for try await chunk in contentStream {
  if let text = chunk.text {
    print(text)
  }
}

Без потоковой передачи

Альтернативно, вы можете дождаться всего результата вместо потоковой передачи; результат возвращается только после того, как модель завершит весь процесс генерации.

В этом примере показано, как использовать startChat() и sendMessage() для отправки нового сообщения пользователя:

import FirebaseVertexAI

// Initialize the Vertex AI service
let vertex = VertexAI.vertexAI()

// Initialize the generative model with a model that supports your use case
let model = vertex.generativeModel(modelName: "gemini-2.0-flash")

// Optionally specify existing chat history
let history = [
  ModelContent(role: "user", parts: "Hello, I have 2 dogs in my house."),
  ModelContent(role: "model", parts: "Great to meet you. What would you like to know?"),
]

// Initialize the chat with optional chat history
let chat = model.startChat(history: history)

// To generate text output, call sendMessage and pass in the message
let response = try await chat.sendMessage("How many paws are in my house?")
print(response.text ?? "No text in response.")

Узнайте, как выбрать модель Gemini и, при необходимости, местоположение, подходящее для вашего варианта использования и приложения.

Что еще вы можете сделать?

  • Узнайте, как подсчитывать токены, прежде чем отправлять модели длинные запросы.
  • Настройте Cloud Storage for Firebase чтобы вы могли включать большие файлы в свои мультимодальные запросы и иметь более управляемое решение для предоставления файлов в приглашениях. Файлы могут включать изображения, PDF-файлы, видео и аудио.
  • Начните думать о подготовке к работе, включая настройку Firebase App Check для защиты Gemini API от злоупотреблений со стороны неавторизованных клиентов.

Попробуйте другие возможности Gemini API

Узнайте, как контролировать создание контента

Вы также можете поэкспериментировать с подсказками и конфигурациями модели с помощью Vertex AI Studio .

Узнайте больше о моделях Gemini

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


Оставьте отзыв о своем опыте использования Vertex AI в Firebase.