The Google Cloud plugin provides integrations with Google Cloud Platform services for Genkit.
npm install @genkit-ai/google-cloud
The plugin allows you to export telemetry data to Google Cloud. This is useful for monitoring your Genkit flows and models in production.
To enable it, use enableGoogleCloudTelemetry:
import { enableGoogleCloudTelemetry } from '@genkit-ai/google-cloud';
enableGoogleCloudTelemetry({
// Optional configuration
// projectId: 'your-project-id',
// forceDevMode: false, // Set to true to enable export in dev environment
});
This will configure Genkit to send OpenTelemetry traces and metrics to Cloud Trace and Cloud Monitoring, and logs to Cloud Logging.
Google Cloud Model Armor helps you mitigate risks when using Large Language Models (LLMs) by providing a layer of protection that sanitizes both user prompts and model responses.
You can use the modelArmor middleware in your generation requests:
import { modelArmor } from '@genkit-ai/google-cloud/model-armor';
import { googleAI } from '@genkit-ai/google-genai';
import { genkit } from 'genkit';
const ai = genkit({
plugins: [googleAI()],
});
const response = await ai.generate({
model: googleAI.model('gemini-2.5-flash'),
prompt: 'your prompt here',
use: [
modelArmor({
templateName: 'projects/your-project/locations/your-location/templates/your-template',
// Optional configuration
filters: ['pi_and_jailbreak', 'malicious_uris'], // Specific filters to enforce
strictSdpEnforcement: true, // Block if sensitive data is found even if masked
protectionTarget: 'all', // 'all', 'userPrompt', or 'modelResponse'
clientOptions: {
apiEndpoint: 'modelarmor.us-central1.rep.googleapis.com',
},
}),
],
});
templateName (Required): The resource name of your Model Armor template (e.g., projects/.../locations/.../templates/...).filters (Optional): A list of filters to enforce (e.g., rai, pi_and_jailbreak, malicious_uris, csam, sdp). If not specified, all filters enabled in the template are enforced.strictSdpEnforcement (Optional): If true, blocks execution if Sensitive Data Protection (SDP) detects sensitive info, even if it was successfully de-identified. Defaults to false.protectionTarget (Optional): specificies what to sanitize. Options: 'all' (default), 'userPrompt', 'modelResponse'.clientOptions (Optional): Additional options for the underlying Model Armor client.FirestoreSessionStore is a Firestore-backed SessionStore for persisting agent session snapshots. Unlike a naive single-document store, it persists each turn as an incremental JSON Patch diff anchored to periodic, sharded full-state checkpoints, so:
checkpointInterval rather than total session length, so it scales to arbitrarily long sessions (e.g. long-lived chatbots, coding agents).If you are running on Firebase, the
@genkit-ai/firebasepackage re-exports this store with Firebase app setup (afirebaseAppoption). See its README.
Import it from @genkit-ai/google-cloud/beta and pass it as the store when defining an agent:
import { genkit } from 'genkit/beta';
import { FirestoreSessionStore } from '@genkit-ai/google-cloud/beta';
const ai = genkit({
plugins: [
// ...
],
});
const myAgent = ai.defineAgent({
name: 'myAgent',
system: 'You are a helpful assistant.',
// Defaults to a new Firestore() instance using Application Default
// Credentials; pass `db` to provide your own.
store: new FirestoreSessionStore(),
});
db: An explicit Firestore instance. Defaults to a new Firestore() instance (which picks up Application Default Credentials and the FIRESTORE_EMULATOR_HOST environment variable).collection: The collection where snapshot documents are stored. Defaults to "genkit-sessions". Two companion collections are derived from it: "<collection>-pointers" (one pointer document per session) and "<collection>-shards" (the sharded checkpoint state).checkpointInterval: Number of turns between full-state checkpoints. Defaults to 25. Lower it (e.g. 10) for small-state, read-heavy sessions; raise it (e.g. 50-100) for large per-turn state retained for a long time.shardSize: Maximum size in bytes of a single shard / diff document. Defaults to 512 KiB. Any diff exceeding this is promoted to a sharded checkpoint so no document approaches the 1 MiB limit.Visit the official Genkit documentation for more information.
The sources for this package are in the main Genkit repo. Please file issues and pull requests against that repo.
License: Apache 2.0