Loading...
Loading...
Integrate Firebase AI Logic (Gemini in Firebase) for intelligent app features. Use when adding AI capabilities to Firebase apps, implementing generative AI features, or setting up Firebase AI SDK. Handles Firebase AI SDK setup, prompt engineering, and AI-powered features.
npx skill4agent add akillness/oh-my-skills firebase-ai-logic# Install Firebase CLI
npm install -g firebase-tools
# Login
firebase login
# Initialize project
firebase initnpm install firebase @anthropic-ai/sdkimport { initializeApp } from 'firebase/app';
import { getAI, getGenerativeModel } from 'firebase/ai';
const firebaseConfig = {
apiKey: "YOUR_API_KEY",
authDomain: "YOUR_PROJECT.firebaseapp.com",
projectId: "YOUR_PROJECT_ID",
};
const app = initializeApp(firebaseConfig);
const ai = getAI(app);
const model = getGenerativeModel(ai, { model: "gemini-2.0-flash" });async function generateContent(prompt: string) {
const result = await model.generateContent(prompt);
return result.response.text();
}
// Example usage
const response = await generateContent("Explain the key features of Firebase.");
console.log(response);async function streamContent(prompt: string) {
const result = await model.generateContentStream(prompt);
for await (const chunk of result.stream) {
const text = chunk.text();
console.log(text);
}
}async function analyzeImage(imageUrl: string, prompt: string) {
const imagePart = {
inlineData: {
data: await fetchImageAsBase64(imageUrl),
mimeType: "image/jpeg"
}
};
const result = await model.generateContent([prompt, imagePart]);
return result.response.text();
}rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Protect AI request logs
match /ai_logs/{logId} {
allow read: if request.auth != null && request.auth.uid == resource.data.userId;
allow create: if request.auth != null;
}
}
}project/
├── src/
│ ├── ai/
│ │ ├── client.ts # Initialize AI client
│ │ ├── prompts.ts # Prompt templates
│ │ └── handlers.ts # AI handlers
│ └── firebase/
│ └── config.ts # Firebase config
├── firebase.json
└── .env.local # API key (gitignored)