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.
Outras opções para trabalhar com o Gemini API
Opcionalmente, teste uma versão alternativa "Google AI" do Gemini API
para ter acesso sem custo financeiro (dentro dos limites e onde disponível) usando Google AI Studio e SDKs de cliente Google AI. Esses SDKs devem ser usados somente para prototipagem em apps para dispositivos móveis e da Web.Depois de entender como um Gemini API funciona, migre para nossos SDKs Vertex AI in Firebase (esta documentação), que têm muitos outros recursos importantes para apps para dispositivos móveis e da Web, como a proteção da API contra abuso usando Firebase App Check e suporte para arquivos de mídia grandes em solicitações.
Chame opcionalmente o Vertex AI Gemini API do lado do servidor (como com Python, Node.js ou Go)
Use os SDKs Vertex AI do lado do servidor, Firebase Genkit ou Firebase Extensions para o Gemini API.
Antes de começar
Conclua o guia para iniciantes dos SDKs do Vertex AI in Firebase, se ainda não tiver feito isso. Verifique se você fez o seguinte:
Configurou um projeto novo ou existente do Firebase, incluindo o uso do plano de preços Blaze e a ativação das APIs necessárias.
Conectou seu app ao Firebase, incluindo o registro e a adição da configuração do Firebase.
Adicione o SDK e inicialize o serviço do Vertex AI e o modelo generativo no seu app.
Depois de conectar seu app ao Firebase, adicionar o SDK e inicializar o serviço Vertex AI e o modelo generativo, você poderá chamar o Gemini API.
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 parasendMessageStream()
(ousendMessage()
), 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 chamarstartChat()
comhistory
existente.
Escolha se você quer transmitir a resposta (sendMessageStream
) ou esperar
pela resposta até que todo o resultado seja gerado (sendMessage
).
É possível conseguir 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()
// 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)
}
}
Como alternativa, você pode esperar 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()
// 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.")
Saiba como escolher um modelo e, opcionalmente, um local adequado para seu caso de uso e app.
O que mais você pode fazer?
- Saiba como contar tokens antes de enviar comandos longos para o modelo.
- Configure Cloud Storage for Firebase para incluir arquivos grandes nas solicitações multimodais e ter uma solução mais gerenciada para fornecer arquivos em comandos. Os arquivos podem incluir imagens, PDFs, vídeos e áudio.
- Comece a pensar na preparação para a produção, incluindo a configuração de Firebase App Check para proteger o Gemini API contra abusos de clientes não autorizados. Além disso, consulte a lista de verificação de produção.
Testar outros recursos do Gemini API
- Gerar texto com base em comandos somente de texto.
- Gerar texto a partir de comandos multimodais (incluindo texto, imagens, PDFs, vídeo e áudio).
- Gere saída estruturada (como JSON) com comandos de texto e multimodais.
- Use a chamada de função para conectar modelos generativos a sistemas e informações externas.
Saiba como controlar a geração de conteúdo
- Entenda o design de comandos, incluindo práticas recomendadas, estratégias e exemplos de comandos.
- Configure os parâmetros do modelo, como temperatura e máximo de tokens de saída (para Gemini) ou proporção e geração de pessoas (para Imagen).
- Use as configurações de segurança para ajustar a probabilidade de receber respostas que podem ser consideradas nocivas.
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