Con Gemini API, puedes crear conversaciones de formato libre en varios turnos. El SDK de Firebase AI Logic simplifica el proceso administrando el estado de la conversación, por lo que, a diferencia de generateContent()
(o generateContentStream()
), no tienes que almacenar el historial de conversaciones por tu cuenta.
Antes de comenzar
Haz clic en tu proveedor de Gemini API para ver el contenido y el código específicos del proveedor en esta página. |
Si aún no lo has hecho, completa la
guía de introducción, en la que se describe cómo
configurar tu proyecto de Firebase, conectar tu app a Firebase, agregar el SDK,
inicializar el servicio de backend para el proveedor de Gemini API que elijas y
crear una instancia de GenerativeModel
.
Para probar y iterar tus instrucciones y hasta conseguir un fragmento de código generado, te recomendamos usar Google AI Studio.
Envía una solicitud de instrucción de chat
Antes de probar esta muestra, completa la sección Antes de comenzar de esta guía para configurar tu proyecto y app. En esa sección, también harás clic en un botón del proveedor de Gemini API que elijas para ver contenido específico del proveedor en esta página. |
Para compilar una conversación de varios turnos (como un chat), primero inicializa el chat llamando a startChat()
. Luego, usa sendMessage()
para enviar un nuevo mensaje del usuario, que también adjuntará el mensaje y la respuesta al historial de chat.
Hay dos opciones posibles para role
asociadas con el contenido de una conversación:
user
: Es el rol que proporciona las instrucciones. Este valor es el predeterminado para las llamadas asendMessage()
, y la función arroja una excepción si se pasa un rol diferente.model
: Es el rol que proporciona las respuestas. Este rol se puede usar cuando se llama astartChat()
conhistory
existente.
Swift
Puedes llamar a startChat()
y a sendMessage()
para enviar un mensaje a un usuario nuevo:
import FirebaseAI
// Initialize the Gemini Developer API backend service
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Create a `GenerativeModel` instance with a model that supports your use case
let model = ai.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.")
Kotlin
Puedes llamar a startChat()
y a sendMessage()
para enviar un mensaje a un usuario nuevo:
// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
.generativeModel("gemini-2.0-flash")
// Initialize the chat
val chat = generativeModel.startChat(
history = listOf(
content(role = "user") { text("Hello, I have 2 dogs in my house.") },
content(role = "model") { text("Great to meet you. What would you like to know?") }
)
)
val response = chat.sendMessage("How many paws are in my house?")
print(response.text)
Java
Puedes llamar a startChat()
y a sendMessage()
para enviar un mensaje a un usuario nuevo:
ListenableFuture
.
// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel("gemini-2.0-flash");
// Use the GenerativeModelFutures Java compatibility layer which offers
// support for ListenableFuture and Publisher APIs
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
// (optional) Create previous chat history for context
Content.Builder userContentBuilder = new Content.Builder();
userContentBuilder.setRole("user");
userContentBuilder.addText("Hello, I have 2 dogs in my house.");
Content userContent = userContentBuilder.build();
Content.Builder modelContentBuilder = new Content.Builder();
modelContentBuilder.setRole("model");
modelContentBuilder.addText("Great to meet you. What would you like to know?");
Content modelContent = userContentBuilder.build();
List<Content> history = Arrays.asList(userContent, modelContent);
// Initialize the chat
ChatFutures chat = model.startChat(history);
// Create a new user message
Content.Builder messageBuilder = new Content.Builder();
messageBuilder.setRole("user");
messageBuilder.addText("How many paws are in my house?");
Content message = messageBuilder.build();
// Send the message
ListenableFuture<GenerateContentResponse> response = chat.sendMessage(message);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
@Override
public void onSuccess(GenerateContentResponse result) {
String resultText = result.getText();
System.out.println(resultText);
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
}, executor);
Web
Puedes llamar a startChat()
y a sendMessage()
para enviar un mensaje a un usuario nuevo:
import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend } from "firebase/ai";
// TODO(developer) Replace the following with your app's Firebase configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
// ...
};
// Initialize FirebaseApp
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Gemini Developer API backend service
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Create a `GenerativeModel` instance with a model that supports your use case
const model = getGenerativeModel(ai, { model: "gemini-2.0-flash" });
async function run() {
const chat = model.startChat({
history: [
{
role: "user",
parts: [{ text: "Hello, I have 2 dogs in my house." }],
},
{
role: "model",
parts: [{ text: "Great to meet you. What would you like to know?" }],
},
],
generationConfig: {
maxOutputTokens: 100,
},
});
const msg = "How many paws are in my house?";
const result = await chat.sendMessage(msg);
const response = await result.response;
const text = response.text();
console.log(text);
}
run();
Dart
Puedes llamar a startChat()
y a sendMessage()
para enviar un mensaje a un usuario nuevo:
import 'package:firebase_ai/firebase_ai.dart';
import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';
// Initialize FirebaseApp
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
// Initialize the Gemini Developer API backend service
// Create a `GenerativeModel` instance with a model that supports your use case
final model =
FirebaseAI.googleAI().generativeModel(model: 'gemini-2.0-flash');
final chat = model.startChat();
// Provide a prompt that contains text
final prompt = [Content.text('Write a story about a magic backpack.')];
final response = await chat.sendMessage(prompt);
print(response.text);
Unity
Puedes llamar a startChat()
y sendMessage()
para enviar un mensaje a un usuario nuevo:
using Firebase;
using Firebase.AI;
// Initialize the Gemini Developer API backend service
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// Create a `GenerativeModel` instance with a model that supports your use case
var model = ai.GetGenerativeModel(modelName: "gemini-2.0-flash");
// Optionally specify existing chat history
var history = new [] {
ModelContent.Text("Hello, I have 2 dogs in my house."),
new ModelContent("model", new ModelContent.TextPart("Great to meet you. What would you like to know?")),
};
// Initialize the chat with optional chat history
var chat = model.StartChat(history);
// To generate text output, call SendMessageAsync and pass in the message
var response = await chat.SendMessageAsync("How many paws are in my house?");
UnityEngine.Debug.Log(response.Text ?? "No text in response.");
Aprende a elegir un modelo apropiado para tu caso de uso y tu app.
Transmite la respuesta
Antes de probar esta muestra, completa la sección Antes de comenzar de esta guía para configurar tu proyecto y app. En esa sección, también harás clic en un botón del proveedor de Gemini API que elijas para ver contenido específico del proveedor en esta página. |
Puedes lograr interacciones más rápidas si no esperas a que se genere todo el resultado del modelo y, en su lugar, usas la transmisión para controlar los resultados parciales.
Para transmitir la respuesta, llama a sendMessageStream()
.
¿Qué más puedes hacer?
- Obtén más información para contar tokens antes de enviar instrucciones largas al modelo.
- Configura Cloud Storage for Firebase para que puedas incluir archivos grandes en tus solicitudes multimodales y tener una solución más administrada para proporcionar archivos en instrucciones. Los archivos pueden incluir imágenes, archivos PDF, videos y audio.
-
Comienza a pensar en prepararte para la producción (consulta la
lista de tareas de producción),
lo que incluye lo siguiente:
- Configurar Firebase App Check para proteger el Gemini API del abuso de clientes no autorizados
- Integra Firebase Remote Config para actualizar los valores de tu app (como el nombre del modelo) sin lanzar una versión nueva de la app.
Prueba otras funciones
- Generar texto a partir de instrucciones de solo texto
- Genera texto con instrucciones de varios tipos de archivos, como imágenes, PDF, video y audio.
- Genera resultados estructurados (como JSON) a partir de instrucciones multimodales y de texto.
- Genera imágenes a partir de instrucciones de texto.
- Usa las llamadas a función para conectar los modelos generativos a sistemas y datos externos.
Aprende a controlar la generación de contenido
- Comprende el diseño de instrucciones, incluidas las prácticas recomendadas, las estrategias y los ejemplos de instrucciones.
- Configura los parámetros del modelo, como la temperatura y la cantidad máxima de tokens de salida (para Gemini) o la relación de aspecto y la generación de personas (para Imagen).
- Usa la configuración de seguridad para ajustar la probabilidad de recibir respuestas que se puedan considerar dañinas.
Más información sobre los modelos compatibles
Obtén información sobre los modelos disponibles para varios casos de uso y sus cuotas y precios.Envía comentarios sobre tu experiencia con Firebase AI Logic