Crie conversas em vários turnos (chat) com a API Gemini


Usando o Gemini API, você pode criar conversas de formato livre em várias rodadas. O SDK Vertex AI in Firebase simplifica o processo gerenciando o estado da conversa. Portanto, ao contrário do generateContentStream() ou generateContent(), você não precisa armazenar o histórico de conversas.

Antes de começar

Se ainda não tiver feito isso, conclua o guia de início, que descreve como configurar seu projeto do Firebase, conectar seu app ao Firebase, adicionar o SDK, inicializar o serviço Vertex AI e criar uma instância GenerativeModel.

Enviar uma solicitação de comando de chat

Para criar uma conversa com vários turnos (como um chat), comece inicializando o chat chamando startChat(). Em seguida, use sendMessageStream() (ou sendMessage()) para enviar uma nova mensagem do usuário, que também anexa a mensagem e a resposta ao histórico de chat.

Há duas opções possíveis para role associado ao conteúdo de uma conversa:

  • user: o papel que fornece as instruções. Esse valor é o padrão para chamadas para sendMessageStream() (ou sendMessage()), e a função gera uma exceção se uma função diferente for transmitida.

  • model: o papel que fornece as respostas. Esse papel pode ser usado ao chamar startChat() com history existente.

Escolha se você quer transmitir a resposta (sendMessageStream) ou esperar pela resposta até que todo o resultado seja gerado (sendMessage).

É possível ter interações mais rápidas sem esperar pelo resultado completo da geração do modelo e, em vez disso, usar o streaming para processar resultados parciais.

Este exemplo mostra como usar startChat() e sendMessageStream() para transmitir respostas do modelo:

import FirebaseVertexAI

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

// Create a `GenerativeModel` instance 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)
  }
}

Como alternativa, aguarde o resultado completo em vez de streaming. O resultado só é retornado depois que o modelo conclui todo o processo de geração.

Este exemplo mostra como usar startChat() e sendMessage() para enviar uma mensagem a um novo usuário:

import FirebaseVertexAI

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

// Create a `GenerativeModel` instance 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.")

Saiba como escolher um modelo e, opcionalmente, um local adequado para seu caso de uso e app.

O que mais você pode fazer?

Testar outros recursos

Saiba como controlar a geração de conteúdo

Também é possível testar comandos e configurações de modelo usando Vertex AI Studio.

Saiba mais sobre os modelos compatíveis

Saiba mais sobre os modelos disponíveis para vários casos de uso e as cotas e o preço.


Enviar feedback sobre sua experiência com o Vertex AI in Firebase