Google Gen AI
Installation
pip3 install genkit-plugin-google-genai
Configuration
genkit-plugin-google-genai
package provides two plugins:
GoogleAI
- for accessing Google Gemini API models 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:
Returns:
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:
Returns:
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)
|