Skip to content

Google Gen AI

Installation

pip3 install genkit-plugin-google-genai

Configuration

genkit-plugin-google-genai package provides two plugins:

  1. GoogleAI - for accessing Google Gemini API models
  2. VertexAI - for accessing Gemini API in Vertex AI models

Google Gemini API

from genkit.plugins.google_genai import GoogleAI

ai = Genkit(
  plugins=[GoogleAI()],
  model='googleai/gemini-2.0-flash', # optional
)

You will need to set GEMINI_API_KEY environment variable or you can provide the API Key directly:

ai = Genkit(
  plugins=[GoogleAI(api_key='...')]
)

Gemini API in Vertex AI

from genkit.plugins.google_genai import VertexAI

ai = Genkit(
  plugins=[VertexAI()],
  model='vertexai/gemini-2.0-flash', # optional
)

you can specify location and project as well as other configuation options.

ai = Genkit(
  plugins=[VertexAI(
    location='us-east1',
    project='my-project-id',
  )],
)

API Reference

GeminiConfigSchema

Bases: google.genai.types.GenerateContentConfig

Source code in plugins/google-genai/src/genkit/plugins/google_genai/models/gemini.py
class GeminiConfigSchema(genai_types.GenerateContentConfig):
    pass

GoogleAI

Bases: genkit.ai.Plugin

GoogleAI plugin for Genkit.

Source code in plugins/google-genai/src/genkit/plugins/google_genai/google.py
class GoogleAI(Plugin):
    """GoogleAI plugin for Genkit."""

    name = GOOGLEAI_PLUGIN_NAME
    _vertexai = False

    def __init__(
        self,
        api_key: str | None = None,
        credentials: Credentials | None = None,
        debug_config: DebugConfig | None = None,
        http_options: HttpOptions | HttpOptionsDict | None = None,
    ):
        api_key = api_key if api_key else os.getenv('GEMINI_API_KEY')
        if not api_key:
            raise ValueError(
                'Gemini api key should be passed in plugin params or as a GEMINI_API_KEY environment variable'
            )

        self._client = genai.client.Client(
            vertexai=self._vertexai,
            api_key=api_key,
            credentials=credentials,
            debug_config=debug_config,
            http_options=_inject_attribution_headers(http_options),
        )

    def initialize(self, ai: GenkitRegistry) -> None:
        """Initialize the plugin by registering actions in the registry.

        Args:
            ai: the action registry.

        Returns:
            None
        """
        for version in GoogleAIGeminiVersion:
            gemini_model = GeminiModel(version, self._client, ai)
            ai.define_model(
                name=googleai_name(version),
                fn=gemini_model.generate,
                metadata=gemini_model.metadata,
                config_schema=GeminiConfigSchema,
            )

        for version in GeminiEmbeddingModels:
            embedder = Embedder(version=version, client=self._client)
            ai.define_embedder(name=googleai_name(version), fn=embedder.generate)

initialize(ai)

Initialize the plugin by registering actions in the registry.

Parameters:

Name Type Description Default
ai genkit.ai.GenkitRegistry

the action registry.

required

Returns:

Type Description
None

None

Source code in plugins/google-genai/src/genkit/plugins/google_genai/google.py
def initialize(self, ai: GenkitRegistry) -> None:
    """Initialize the plugin by registering actions in the registry.

    Args:
        ai: the action registry.

    Returns:
        None
    """
    for version in GoogleAIGeminiVersion:
        gemini_model = GeminiModel(version, self._client, ai)
        ai.define_model(
            name=googleai_name(version),
            fn=gemini_model.generate,
            metadata=gemini_model.metadata,
            config_schema=GeminiConfigSchema,
        )

    for version in GeminiEmbeddingModels:
        embedder = Embedder(version=version, client=self._client)
        ai.define_embedder(name=googleai_name(version), fn=embedder.generate)

VertexAI

Bases: genkit.ai.Plugin

VertexAI plugin for Genkit.

Source code in plugins/google-genai/src/genkit/plugins/google_genai/google.py
class VertexAI(Plugin):
    """VertexAI plugin for Genkit."""

    _vertexai = True

    name = VERTEXAI_PLUGIN_NAME

    def __init__(
        self,
        credentials: Credentials | None = None,
        project: str | None = None,
        location: str | None = 'us-central1',
        debug_config: DebugConfig | None = None,
        http_options: HttpOptions | HttpOptionsDict | None = None,
    ):
        self._client = genai.client.Client(
            vertexai=self._vertexai,
            api_key=None,
            credentials=credentials,
            project=project,
            location=location,
            debug_config=debug_config,
            http_options=_inject_attribution_headers(http_options),
        )

    def initialize(self, ai: GenkitRegistry) -> None:
        """Initialize the plugin by registering actions in the registry.

        Args:
            ai: the action registry.

        Returns:
            None
        """
        for version in VertexAIGeminiVersion:
            gemini_model = GeminiModel(version, self._client, ai)
            ai.define_model(
                name=vertexai_name(version),
                fn=gemini_model.generate,
                metadata=gemini_model.metadata,
                config_schema=GeminiConfigSchema,
            )

        for version in VertexEmbeddingModels:
            embedder = Embedder(version=version, client=self._client)
            ai.define_embedder(name=vertexai_name(version), fn=embedder.generate)

        for version in ImagenVersion:
            imagen_model = ImagenModel(version, self._client)
            ai.define_model(name=vertexai_name(version), fn=imagen_model.generate, metadata=imagen_model.metadata)

initialize(ai)

Initialize the plugin by registering actions in the registry.

Parameters:

Name Type Description Default
ai genkit.ai.GenkitRegistry

the action registry.

required

Returns:

Type Description
None

None

Source code in plugins/google-genai/src/genkit/plugins/google_genai/google.py
def initialize(self, ai: GenkitRegistry) -> None:
    """Initialize the plugin by registering actions in the registry.

    Args:
        ai: the action registry.

    Returns:
        None
    """
    for version in VertexAIGeminiVersion:
        gemini_model = GeminiModel(version, self._client, ai)
        ai.define_model(
            name=vertexai_name(version),
            fn=gemini_model.generate,
            metadata=gemini_model.metadata,
            config_schema=GeminiConfigSchema,
        )

    for version in VertexEmbeddingModels:
        embedder = Embedder(version=version, client=self._client)
        ai.define_embedder(name=vertexai_name(version), fn=embedder.generate)

    for version in ImagenVersion:
        imagen_model = ImagenModel(version, self._client)
        ai.define_model(name=vertexai_name(version), fn=imagen_model.generate, metadata=imagen_model.metadata)