Convert Figma logo to code with AI

firebase logogenkit

An open source framework for building AI-powered apps with familiar code-centric patterns. Genkit makes it easy to develop, integrate, and test AI features with observability and evaluations. Genkit works with various models and platforms.

1,315
193
1,315
452

Top Related Projects

The official Swift library for the Google Gemini API

The official Node.js / Typescript library for the Google Gemini API

This SDK is now deprecated, use the new unified Google GenAI SDK.

The official Python library for the OpenAI API

🤗 Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, and JAX.

Quick Overview

Firebase GenKit is a code generation toolkit designed to streamline the development process for Firebase-related projects. It provides a set of tools and utilities to automatically generate code for various Firebase services, reducing boilerplate and improving consistency across Firebase implementations.

Pros

  • Accelerates development by automating code generation for Firebase services
  • Ensures consistency in Firebase implementations across projects
  • Reduces the likelihood of errors in Firebase-related code
  • Supports multiple programming languages and platforms

Cons

  • May require a learning curve to understand and effectively use the toolkit
  • Generated code might not always fit perfectly with custom project structures
  • Could potentially lead to over-reliance on generated code, reducing developers' understanding of underlying Firebase concepts
  • May not cover all edge cases or specific customizations needed for complex projects

Code Examples

  1. Generating Firebase Authentication code:
from genkit import FirebaseAuthGenerator

auth_generator = FirebaseAuthGenerator()
auth_code = auth_generator.generate_auth_methods(['email', 'google'])
print(auth_code)
  1. Creating Firestore database rules:
from genkit import FirestoreRulesGenerator

rules_generator = FirestoreRulesGenerator()
rules = rules_generator.generate_rules({
    'users': {'read': 'auth != null', 'write': 'auth != null'},
    'posts': {'read': 'true', 'write': 'auth != null'}
})
print(rules)
  1. Generating Cloud Functions boilerplate:
from genkit import CloudFunctionsGenerator

cf_generator = CloudFunctionsGenerator()
function_code = cf_generator.generate_function('onUserCreated', 'auth.user().onCreate')
print(function_code)

Getting Started

To get started with Firebase GenKit, follow these steps:

  1. Install the GenKit package:

    pip install firebase-genkit
    
  2. Import the desired generator:

    from genkit import FirebaseAuthGenerator
    
  3. Create an instance of the generator and use it to generate code:

    auth_generator = FirebaseAuthGenerator()
    auth_code = auth_generator.generate_auth_methods(['email', 'google'])
    
  4. Use the generated code in your Firebase project as needed.

Competitor Comparisons

The official Swift library for the Google Gemini API

Pros of generative-ai-swift

  • Specifically designed for Swift, offering native iOS and macOS support
  • Integrates seamlessly with Apple's ecosystem and development tools
  • Provides a more streamlined API for Swift developers

Cons of generative-ai-swift

  • Limited to Swift and Apple platforms, reducing cross-platform compatibility
  • May have a smaller community and fewer resources compared to Genkit
  • Potentially less flexible for non-Apple environments

Code Comparison

generative-ai-swift:

let model = GenerativeModel(name: "gemini-pro", apiKey: "YOUR_API_KEY")
let response = try await model.generateContent("Tell me a joke")
print(response.text)

Genkit:

const genkit = require('genkit');
const model = new genkit.Model('gemini-pro');
const response = await model.generate('Tell me a joke');
console.log(response.text);

Summary

While generative-ai-swift offers a more tailored experience for Swift developers and Apple platforms, Genkit provides broader language and platform support. The choice between them depends on the specific project requirements, target platforms, and developer preferences.

The official Node.js / Typescript library for the Google Gemini API

Pros of generative-ai-js

  • Specifically designed for Google's Gemini AI models, offering tailored functionality
  • Provides a more comprehensive set of features for generative AI tasks
  • Actively maintained with regular updates and community support

Cons of generative-ai-js

  • Limited to Google's Gemini AI models, less flexible for other AI providers
  • May have a steeper learning curve due to its specialized nature
  • Potentially more complex setup process compared to genkit

Code Comparison

genkit:

import { GenKit } from 'genkit';

const genkit = new GenKit();
const response = await genkit.generate('Your prompt here');
console.log(response);

generative-ai-js:

import { GoogleGenerativeAI } from '@google/generative-ai';

const genAI = new GoogleGenerativeAI(API_KEY);
const model = genAI.getGenerativeModel({ model: 'gemini-pro' });
const result = await model.generateContent('Your prompt here');
console.log(result.response.text());

Both libraries aim to simplify working with AI models, but generative-ai-js is more focused on Google's Gemini models, while genkit appears to be more general-purpose. The code examples show that generative-ai-js requires more setup but offers more specific control over the model used.

This SDK is now deprecated, use the new unified Google GenAI SDK.

Pros of deprecated-generative-ai-python

  • More comprehensive documentation and examples
  • Broader scope, covering multiple AI models and use cases
  • Active community support and regular updates

Cons of deprecated-generative-ai-python

  • Larger codebase, potentially more complex to integrate
  • Deprecated status may lead to future compatibility issues
  • Heavier resource requirements due to broader functionality

Code Comparison

genkit:

from genkit import Generator

generator = Generator()
response = generator.generate("Hello, world!")
print(response)

deprecated-generative-ai-python:

from google.generativeai import GenerativeModel

model = GenerativeModel("gemini-pro")
response = model.generate_content("Hello, world!")
print(response.text)

Summary

While genkit offers a simpler, more focused approach to Firebase-specific code generation, deprecated-generative-ai-python provides a wider range of AI capabilities. The choice between them depends on the specific project requirements and the desired level of AI integration. genkit may be preferable for Firebase-centric projects, while deprecated-generative-ai-python could be better suited for more diverse AI applications, despite its deprecated status.

The official Python library for the OpenAI API

Pros of openai-python

  • Extensive documentation and examples for various OpenAI API endpoints
  • Active development with frequent updates and bug fixes
  • Large community support and extensive third-party integrations

Cons of openai-python

  • Focused solely on OpenAI services, limiting versatility for other AI platforms
  • Requires API key management and potential usage costs
  • Steeper learning curve for beginners due to complex AI concepts

Code Comparison

openai-python:

import openai

openai.api_key = "your-api-key"
response = openai.Completion.create(
  engine="davinci",
  prompt="Translate the following English text to French: '{}'",
  max_tokens=60
)

genkit:

from firebase_admin import initialize_app
from genkit import GenerativeModel

app = initialize_app()
model = GenerativeModel("gemini-pro")
response = model.generate_content("Translate the following English text to French: '{}'")

Both libraries provide methods to interact with AI models for text generation. openai-python offers more flexibility in model selection and parameter tuning, while genkit simplifies the process with a more straightforward API, particularly for Firebase integration.

🤗 Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, and JAX.

Pros of Transformers

  • Extensive library of pre-trained models for various NLP tasks
  • Active community and frequent updates
  • Comprehensive documentation and tutorials

Cons of Transformers

  • Larger library size and potential overhead for simpler projects
  • Steeper learning curve for beginners

Code Comparison

Transformers:

from transformers import pipeline

classifier = pipeline("sentiment-analysis")
result = classifier("I love this product!")[0]
print(f"Label: {result['label']}, Score: {result['score']:.4f}")

Genkit:

import genkit

model = genkit.load_model("sentiment")
result = model.predict("I love this product!")
print(f"Sentiment: {result.sentiment}, Score: {result.score:.4f}")

Key Differences

  • Transformers offers a wider range of models and tasks
  • Genkit focuses on simplicity and ease of use for specific tasks
  • Transformers has more extensive customization options
  • Genkit provides a more streamlined API for quick implementation

Use Cases

  • Transformers: Advanced NLP projects, research, and complex language tasks
  • Genkit: Rapid prototyping, simple NLP integration, and Firebase-specific applications

Community and Support

  • Transformers: Large, active community with extensive third-party resources
  • Genkit: Smaller community, but direct support from Firebase team

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Run e2e tests

Firebase Genkit logo Firebase Genkit logo

Genkit is a framework for building AI-powered applications. It provides open source libraries for Node.js and Go, along with tools to help you debug and iterate quickly.

Learn more in our documentation for Node.js and Go.

What can you build with Genkit?

Genkit is a versatile framework, which you can use to build many different types of AI applications. Common use cases include:

  • Intelligent agents: Create agents that understand user requests and perform tasks autonomously, such as personalized travel planning or itinerary generation.

  • Data transformation: Convert unstructured data, like natural language, into structured formats (e.g., objects, SQL queries, tables) for integration into your app or data pipeline.

  • Retrieval-augmented generation: Create apps that provide accurate and contextually relevant responses by grounding generation with your own data sources, such as chatbots or question answering systems.

Who should use Genkit?

Genkit is built for developers seeking to add generative AI to their apps with Node.js or Go, and can run anywhere these runtimes are supported. It's designed around a plugin architecture that can work with any generative model API or vector database, with many integrations already available.

While developed by the Firebase team, Genkit can be used independently of Firebase or Google Cloud services.

Get started

[!NOTE] Genkit for Go is in alpha, so we only recommend it for prototyping.

Library key features

  • Unified generation API: Generate text, media, structured objects, and tool calls from any generative model using a single, adaptable API.

  • Vector database support: Add retrieval-augmented generation (RAG) to your apps with simple indexing and retrieval APIs that work across vector database providers.

  • Enhanced prompt engineering: Define rich prompt templates, model configurations, input/output schemas, and tools all within a single, runnable .prompt file.

  • AI workflows: Organize your AI app logic into Flows - functions designed for observability, streaming, integration with Genkit devtools, and easy deployment as API endpoints.

  • Built-in streaming: Stream content from your Genkit API endpoints to your client app to create snappy user experiences.

Development tools

Genkit provides a CLI and a local UI to streamline your AI development workflow.

CLI

The Genkit CLI includes commands for running and evaluating your Genkit functions (flows) and collecting telemetry and logs.

  • Install: npm i -g genkit
  • Run a command, wrapped with telemetry, a interactive developer UI, etc: genkit start -- <command to run your code>

Developer UI

The Genkit developer UI is a local interface for testing, debugging, and iterating on your AI application.

Key features:

  • Run: Execute and experiment with Genkit flows, prompts, queries, and more in dedicated playgrounds.
  • Inspect: Analyze detailed traces of past executions, including step-by-step breakdowns of complex flows.
  • Evaluate: Review the results of evaluations run against your flows, including performance metrics and links to relevant traces.
Screenshot of Genkit Developer UI showing traces

Plugin ecosystem

Extend Genkit with plugins for specific AI models, vector databases, and platform integrations from providers like Google and OpenAI.

Create and share your own plugins:

Find excellent examples of community-built plugins for OpenAI, Anthropic, Cohere, and more in this repository.

Try Genkit on IDX

Want to skip the local setup? Click below to try out Genkit using Project IDX, Google's AI-assisted workspace for full-stack app development in the cloud.

Try in IDX

Sample apps

Take a look at some samples of Genkit in use:

Connect with us

  • Join the community: Stay updated, ask questions, and share your work with other Genkit users on our Discord server.

  • Provide feedback: Report issues or suggest new features using our GitHub issue tracker.

Contributing

Contributions to Genkit are welcome and highly appreciated! See our Contribution Guide to get started.

Authors

Genkit is built by Firebase with contributions from the Open Source Community.