- Firebase AI Logic Integration
- When to use this skill
- Add AI features
-
- integrate generative AI features into your app
- Firebase projects
-
- add AI to Firebase-based apps
- Text generation
-
- content generation, summarization, translation
- Image analysis
- image-based AI processing Instructions Step 1: Firebase Project Setup
Install Firebase CLI
npm install -g firebase-tools
Login
firebase login
Initialize project
- firebase init
- Step 2: Enable AI Logic
- In Firebase Console:
- Select
- Build > AI Logic
- Click
- Get Started
- Enable the Gemini API
- Step 3: Install SDK
- Web (JavaScript)
- :
- npm
- install
- firebase @anthropic-ai/sdk
- Initialization code
- :
- import
- {
- 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"
- }
- )
- ;
- Step 4: Implement AI Features
- Text generation
- :
- 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
- )
- ;
- Streaming 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
- )
- ;
- }
- }
- Multimodal (image + 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
- (
- )
- ;
- }
- Step 5: Configure Security Rules
- Firebase Security Rules
- :
- 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
- ;
- }
- }
- }
- Output format
- Project structure
- 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)
- Best practices
- Prompt optimization
-
- write clear, specific prompts
- Error handling
-
- implement a fallback when AI responses fail
- Rate Limiting
-
- limit usage and manage costs
- Caching
-
- cache responses for repeated requests
- Security
-
- manage API keys via environment variables
- Constraints
- Required Rules (MUST)
- Do not hardcode API keys in code
- Validate user input
- Implement error handling
- Prohibited (MUST NOT)
- Do not send sensitive data to the AI
- Do not allow unlimited API calls
- References
- Firebase AI Logic Docs
- Gemini API
- Firebase SDK
- Metadata
- Version
-
- 1.0.0
- Last updated
-
- 2025-01-05
- Supported platforms
- Claude, ChatGPT, Gemini Examples Example 1: Basic usage Example 2: Advanced usage