Avec Gemini API, vous pouvez créer des conversations libres sur plusieurs tours. Le SDK Vertex AI in Firebase simplifie le processus en gérant l'état de la conversation. Contrairement à generateContentStream()
ou generateContent()
, vous n'avez donc pas besoin de stocker vous-même l'historique de la conversation.
Avant de commencer
Si ce n'est pas déjà fait, consultez le guide de démarrage, qui explique comment configurer votre projet Firebase, connecter votre application à Firebase, ajouter le SDK, initialiser le service Vertex AI et créer une instance GenerativeModel
.
Envoyer une requête d'invite de chat
Pour créer une conversation multitour (comme un chat), commencez par initialiser le chat en appelant startChat()
. Utilisez ensuite sendMessageStream()
(ou sendMessage()
) pour envoyer un nouveau message utilisateur, qui ajoutera également le message et la réponse à l'historique de chat.
Il existe deux options possibles pour role
associées au contenu d'une conversation:
user
: rôle qui fournit les requêtes. Cette valeur est la valeur par défaut pour les appels àsendMessageStream()
(ousendMessage()
), et la fonction génère une exception si un autre rôle est transmis.model
: rôle qui fournit les réponses. Ce rôle peut être utilisé lors de l'appel destartChat()
avec unhistory
existant.
Indiquez si vous souhaitez diffuser la réponse (sendMessageStream
) ou attendre la réponse jusqu'à ce que le résultat complet soit généré (sendMessage
).
Streaming
Vous pouvez accélérer les interactions en n'attendant pas le résultat complet de la génération du modèle, et en utilisant plutôt le streaming pour gérer les résultats partiels.
Cet exemple montre comment utiliser startChat()
et sendMessageStream()
pour diffuser les réponses du modèle:
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)
}
}
Sans streaming
Vous pouvez également attendre le résultat complet au lieu de le diffuser en streaming. Le résultat n'est renvoyé qu'une fois que le modèle a terminé l'ensemble du processus de génération.
Cet exemple montre comment utiliser startChat()
et sendMessage()
pour envoyer un message à un nouvel utilisateur:
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.")
Découvrez comment choisir un modèle et éventuellement un emplacement adapté à votre cas d'utilisation et à votre application.
Qu'est-ce que tu sais faire d'autre ?
- Découvrez comment compter les jetons avant d'envoyer des requêtes longues au modèle.
- Configurez Cloud Storage for Firebase pour pouvoir inclure des fichiers volumineux dans vos requêtes multimodales et disposer d'une solution plus gérée pour fournir des fichiers dans les requêtes. Les fichiers peuvent inclure des images, des PDF, des vidéos et des fichiers audio.
- Commencez à penser à la préparation de la production, y compris à la configuration de Firebase App Check pour protéger Gemini API contre les utilisations abusives par des clients non autorisés. Veillez également à consulter la checklist de production.
Essayer d'autres fonctionnalités
- Générez du texte à partir de requêtes textuelles uniquement.
- Générer du texte à partir de requêtes multimodales (y compris du texte, des images, des PDF, des vidéos et de l'audio)
- Générez une sortie structurée (comme JSON) à partir d'invites textuelles et multimodales.
- Générez des images à partir de requêtes textuelles.
- Utilisez l'appel de fonction pour connecter les modèles génératifs à des systèmes et des informations externes.
Découvrez comment contrôler la génération de contenu.
- Comprendre la conception des requêtes, y compris les bonnes pratiques, les stratégies et les exemples de requêtes.
- Configurez les paramètres du modèle, comme la température et le nombre maximal de jetons de sortie (pour Gemini) ou le format et la génération de personnes (pour Imagen).
- Utilisez les paramètres de sécurité pour ajuster la probabilité d'obtenir des réponses pouvant être considérées comme nuisibles.
En savoir plus sur les modèles compatibles
Découvrez les modèles disponibles pour différents cas d'utilisation, ainsi que leurs quotas et leurs tarifs.Envoyer des commentaires sur votre expérience avec Vertex AI in Firebase