UNPKG

@genkit-ai/firebase

Version:

Genkit AI framework plugin for Firebase including Firestore trace/state store and deployment helpers for Cloud Functions for Firebase.

89 lines (59 loc) 2.6 kB
# Firebase plugin for Genkit See the official documentation for more: - [Deploying Genkit with Firebase](https://genkit.dev/docs/deployment/firebase/) - [Genkit monitoring with Firebase](https://genkit.dev/docs/observability/getting-started/) ## Installing the plugin ```bash npm i --save @genkit-ai/firebase ``` ## Using the plugin ```ts import { genkit } from 'genkit'; import { enableFirebaseTelemetry } from '@genkit-ai/firebase'; enableFirebaseTelemetry(); const ai = genkit({ plugins: [ // ... ], }); ``` ## Durable Streaming (Beta) This plugin provides two `StreamManager` implementations for durable streaming: * `FirestoreStreamManager`: Persists stream state in Google Firestore. * `RtdbStreamManager`: Persists stream state in the Firebase Realtime Database. You can use these with `expressHandler` or `appRoute` to make your flow streams durable. ### Usage To use a stream manager, import it from `@genkit-ai/firebase/beta` and provide it to your flow handler: ```ts import { expressHandler } from '@genkit-ai/express'; import { FirestoreStreamManager } from '@genkit-ai/firebase/beta'; import express from 'express'; import { initializeApp } from 'firebase-admin/app'; import { getFirestore } from 'firebase-admin/firestore'; // ... define your flow: myFlow const fApp = initializeApp(); const firestore = new FirestoreStreamManager({ firebaseApp: fApp, db: getFirestore(fApp), collection: 'streams', }); const app = express(); app.use(express.json()); app.post('/myDurableFlow', expressHandler(myFlow, { streamManager: firestore })); app.listen(8080); ``` Similarly, for the Realtime Database: ```ts import { RtdbStreamManager } from '@genkit-ai/firebase/beta'; const rtdb = new RtdbStreamManager({ firebaseApp: fApp, refPrefix: 'streams', }); app.post('/myDurableRtdbFlow', expressHandler(myFlow, { streamManager: rtdb })); ``` ### Limitations * **Firestore**: The entire stream history (chunks and final result) is stored in a single document. Firestore has a strict [1MB limitation on document size](https://firebase.google.com/docs/firestore/quotas). If your stream output exceeds this limit, the flow will fail. * **Realtime Database**: While RTDB does not have the same 1MB limit, storing very large streams may impact performance or hit other quotas. The sources for this package are in the main [Genkit](https://github.com/firebase/genkit) repo. Please file issues and pull requests against that repo. Usage information and reference details can be found in [Genkit documentation](https://genkit.dev/). License: Apache 2.0