or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

ai.mdanalytics.mdapp-check.mdauth-guard.mdauthentication.mddata-connect.mddatabase.mdfirebase-app.mdfirestore.mdfunctions.mdindex.mdmessaging.mdperformance.mdremote-config.mdstorage.mdvertexai.md
tile.json

ai.mddocs/

Firebase AI

Firebase AI services for machine learning and artificial intelligence features in Angular applications.

Capabilities

Standalone Provider

export function provideAI(fn: () => AI): EnvironmentProviders;
export function getAI(app?: FirebaseApp): AI;

Angular Services

export class AI extends AI {}
export class AIInstances extends Array<AI> {}
export const AIInstance$: Observable<AI>;

AI Functions

/**
 * Get Firebase AI instance
 * @param app - Optional Firebase app instance
 * @returns Firebase AI instance
 */
export function getAI(app?: FirebaseApp): AI;

/**
 * Get generative AI model
 * @param ai - Firebase AI instance
 * @param options - Model configuration options
 * @returns Generative model instance
 */
export function getGenerativeModel(
  ai: AI,
  options: ModelOptions
): GenerativeModel;

/**
 * Get Imagen model for image generation
 * @param ai - Firebase AI instance
 * @param options - Imagen model options
 * @returns Imagen model instance
 */
export function getImagenModel(
  ai: AI,
  options: ImagenModelOptions
): ImagenModel;

/**
 * Get Vertex AI instance
 * @param app - Optional Firebase app instance
 * @returns Vertex AI instance
 */
export function getVertexAI(app?: FirebaseApp): VertexAI;

Types

interface ModelOptions {
  model: string;
  generationConfig?: GenerationConfig;
  safetySettings?: SafetySetting[];
  tools?: Tool[];
}

interface GenerationConfig {
  temperature?: number;
  topP?: number;
  topK?: number;
  maxOutputTokens?: number;
  stopSequences?: string[];
}

interface SafetySetting {
  category: HarmCategory;
  threshold: HarmBlockThreshold;
}

interface ImagenModelOptions {
  model: string;
}

interface GenerativeModel {
  generateContent(request: GenerateContentRequest): Promise<GenerateContentResult>;
  generateContentStream(request: GenerateContentRequest): AsyncIterable<GenerateContentResult>;
  startChat(startChatParams?: StartChatParams): ChatSession;
}

interface ImagenModel {
  generateImage(request: GenerateImageRequest): Promise<GenerateImageResult>;
}

Usage Examples

import { Component, inject } from '@angular/core';
import { AI, getAI, getGenerativeModel } from '@angular/fire/ai';

@Component({
  selector: 'app-ai',
  template: `
    <div>
      <button (click)="generateText()">Generate Text</button>
      <p>{{ generatedText }}</p>
    </div>
  `,
})
export class AIComponent {
  private ai = inject(AI);
  generatedText = '';

  async generateText() {
    try {
      const model = getGenerativeModel(this.ai, {
        model: 'gemini-pro',
        generationConfig: {
          temperature: 0.7,
          maxOutputTokens: 100
        }
      });

      const result = await model.generateContent({
        contents: [{
          parts: [{ text: 'Write a short poem about Angular and Firebase' }]
        }]
      });

      this.generatedText = result.response.text();
    } catch (error) {
      console.error('Error generating text:', error);
    }
  }
}