¿Qué hace firebase-ai-logic-basics?
Skill oficial para integrar Firebase AI Logic (API de Gemini) en aplicaciones web. Cubre configuración, inferencia multimodal, salida estructurada y seguridad.
Introducción
Este skill te permite utilizar la API de Gemini a través de Firebase para añadir capacidades de IA generativa a tus aplicaciones web.
Requisitos previos
- Un proyecto de Firebase con el plan Blaze (pago por uso).
- Node.js 18 o superior.
- Una clave de API de Google Generative AI.
Configuración
- Instala el SDK de Firebase:
npm install firebase
- Inicializa Firebase en tu aplicación:
import { initializeApp } from "firebase/app";
import { getVertexAI } from "firebase/vertexai";
const firebaseConfig = {
apiKey: "TU_API_KEY",
authDomain: "TU_PROYECTO.firebaseapp.com",
projectId: "TU_PROYECTO",
storageBucket: "TU_PROYECTO.appspot.com",
messagingSenderId: "TU_SENDER_ID",
appId: "TU_APP_ID"
};
const app = initializeApp(firebaseConfig);
const vertexai = getVertexAI(app);
Inferencia básica
Para generar texto a partir de una instrucción:
const model = vertexai.getGenerativeModel({ model: "gemini-1.5-pro" });
const result = await model.generateContent("Escribe un poema sobre la inteligencia artificial.");
console.log(result.response.text());
Inferencia multimodal
Puedes enviar imágenes junto con texto:
import { GenerativeModel } from "firebase/vertexai";
const model = vertexai.getGenerativeModel({ model: "gemini-1.5-pro" });
const imagePart = fileToGenerativePart("ruta/a/imagen.jpg");
const result = await model.generateContent(["Describe esta imagen:", imagePart]);
console.log(result.response.text());
function fileToGenerativePart(path, mimeType) {
return {
inlineData: {
data: Buffer.from(fs.readFileSync(path)).toString("base64"),
mimeType
},
};
}
Salida estructurada
Para obtener JSON con un esquema definido:
const schema = {
type: "object",
properties: {
nombre: { type: "string" },
edad: { type: "number" },
hobbies: { type: "array", items: { type: "string" } }
},
required: ["nombre", "edad"]
};
const model = vertexai.getGenerativeModel({ model: "gemini-1.5-pro" });
const result = await model.generateContent({
contents: [{ role: "user", parts: [{ text: "Genera un perfil de usuario aleatorio." }] }],
generationConfig: {
responseMimeType: "application/json",
responseSchema: schema
}
});
const perfil = JSON.parse(result.response.text());
console.log(perfil);
Seguridad
- Claves API: No incluyas la clave API directamente en el código. Usa variables de entorno.
- Autenticación: Implementa Firebase Authentication para controlar el acceso a las funciones de IA.
- Reglas de seguridad: Define reglas en Firestore o Realtime Database para limitar el uso de la API de Gemini.
Ejemplo de variable de entorno:
export VITE_FIREBASE_API_KEY="TU_API_KEY"