Skip to content

Commit 1dcbf64

Browse files
committed
feat: more plugins
1 parent 346b835 commit 1dcbf64

File tree

38 files changed

+5904
-69
lines changed

38 files changed

+5904
-69
lines changed

py/GEMINI.md

Lines changed: 222 additions & 24 deletions
Large diffs are not rendered by default.

py/plugins/README.md

Lines changed: 148 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ This directory contains all official Genkit plugins for Python.
121121
│ ──────────────────────── ──────────────────── │
122122
│ │
123123
│ ┌─────────┐ ┌─────────┐ ┌───────────────────┐ │
124-
│ │ aws │ │ google- │ │ observability │ ← PLANNED
124+
│ │ aws │ │ google- │ │ observability │ ✅ NEW
125125
│ │ │ │ cloud │ │ • Sentry │ │
126126
│ │ • SigV4 │ │ • ADC │ │ • Honeycomb │ │
127127
│ │ • X-Ray │ │ • Trace │ │ • Datadog │ │
@@ -134,28 +134,28 @@ This directory contains all official Genkit plugins for Python.
134134
│ │ Console │ │ Trace │ │ Any OTLP Backend │ │
135135
│ └─────────┘ └─────────┘ └───────────────────┘ │
136136
│ │
137-
│ ┌─────────┐ │
138-
│ │ azure │ ← PLANNED │
139-
│ │ • Distro│ │
140-
│ │ • Live │ CAN'T BE REPLICATED CAN BE REPLICATED │
141-
│ │ • Map │ WITH GENERIC OTLP WITH GENERIC OTLP │
142-
│ └────┬────┘ │
143-
│ │ │
144-
│ ▼ │
145-
│ ┌─────────┐ │
146-
│ │ App │ │
147-
│ │Insights │ │
148-
│ └─────────┘ │
137+
│ ┌─────────┐ ┌─────────┐ │
138+
│ │ azure │ │ cf │ ✅ NEW │
139+
│ │ • Distro│ │ • OTLP │ • Generic OTLP │
140+
│ │ • AppIns│ │ • Token │ • Any backend │
141+
│ └────┬────┘ └────┬────┘ │
142+
│ │ │ CAN'T BE REPLICATED CAN BE REPLICATED │
143+
│ ▼ ▼ WITH GENERIC OTLP WITH GENERIC OTLP │
144+
│ ┌─────────┐ ┌─────────┐ │
145+
│ │ App │ │ OTLP │ │
146+
│ │Insights │ │ Backend │ │
147+
│ └─────────┘ └─────────┘ │
149148
│ │
150149
├─────────────────────────────────────────────────────────────────────────────────┤
151150
│ │
152151
│ "I'm on AWS and want X-Ray" → aws plugin │
153152
│ "I'm on GCP and want Cloud Trace" → google-cloud plugin │
154-
│ "I'm on Azure and want App Insights" → azure plugin (PLANNED)
153+
│ "I'm on Azure and want App Insights" → azure plugin
155154
│ "I'm using Firebase" → firebase plugin (auto telemetry) │
156155
│ │
157-
│ "I want Sentry/Honeycomb/Datadog" → observability plugin (PLANNED) │
158-
│ "I'm multi-cloud" → observability plugin (PLANNED) │
156+
│ "I want Sentry/Honeycomb/Datadog" → observability plugin │
157+
│ "I'm multi-cloud" → observability plugin │
158+
│ "I want generic OTLP export" → cf plugin (Cloudflare-compatible) │
159159
│ │
160160
└─────────────────────────────────────────────────────────────────────────────────┘
161161
```
@@ -228,6 +228,9 @@ This directory contains all official Genkit plugins for Python.
228228
|--------|---------|----------|
229229
| **google-cloud** | Cloud Trace, Logging | GCP native, log correlation |
230230
| **aws** | X-Ray, CloudWatch | AWS native, SigV4 auth |
231+
| **azure** | Application Insights | Azure Monitor, trace correlation |
232+
| **cf** | Any OTLP endpoint | Generic OTLP, Bearer auth |
233+
| **observability** | Sentry, Honeycomb, Datadog, Grafana, Axiom | 3rd party presets |
231234
| **firebase** | Firebase console | Auto-telemetry for Firebase apps |
232235

233236
### Integrations
@@ -252,6 +255,135 @@ This directory contains all official Genkit plugins for Python.
252255
| **firebase** | Firestore | Production, serverless |
253256
| **vertex-ai** | Vertex AI Vector Search | Enterprise scale |
254257

258+
## Environment Variables Reference
259+
260+
All environment variables used by Genkit plugins. Configure these before running your application.
261+
262+
### Model Provider Environment Variables
263+
264+
| Variable | Plugin | Required | Description | Documentation |
265+
|----------|--------|----------|-------------|---------------|
266+
| `GOOGLE_GENAI_API_KEY` | google-genai | Yes | Google AI Studio API key | [Get API Key](https://aistudio.google.com/apikey) |
267+
| `ANTHROPIC_API_KEY` | anthropic | Yes | Anthropic API key | [Anthropic Console](https://console.anthropic.com/) |
268+
| `AWS_REGION` | aws-bedrock | Yes | AWS region (e.g., `us-east-1`) | [AWS Regions](https://docs.aws.amazon.com/general/latest/gr/bedrock.html) |
269+
| `AWS_ACCESS_KEY_ID` | aws-bedrock | Yes* | AWS access key | [AWS Credentials](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html) |
270+
| `AWS_SECRET_ACCESS_KEY` | aws-bedrock | Yes* | AWS secret key | [AWS Credentials](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html) |
271+
| `AZURE_AI_FOUNDRY_ENDPOINT` | msfoundry | Yes | Azure AI Foundry endpoint URL | [Azure AI Foundry](https://ai.azure.com/) |
272+
| `AZURE_AI_FOUNDRY_API_KEY` | msfoundry | Yes* | Azure AI Foundry API key | [Azure AI Foundry](https://ai.azure.com/) |
273+
| `OPENAI_API_KEY` | compat-oai | Yes | OpenAI API key | [OpenAI API Keys](https://platform.openai.com/api-keys) |
274+
| `OPENAI_ORG_ID` | compat-oai | No | OpenAI organization ID | [OpenAI Settings](https://platform.openai.com/account/organization) |
275+
| `DEEPSEEK_API_KEY` | deepseek | Yes | DeepSeek API key | [DeepSeek Platform](https://platform.deepseek.com/) |
276+
| `XAI_API_KEY` | xai | Yes | xAI API key | [xAI Console](https://console.x.ai/) |
277+
| `CLOUDFLARE_ACCOUNT_ID` | cf-ai | Yes | Cloudflare account ID | [Cloudflare Dashboard](https://dash.cloudflare.com/) |
278+
| `CLOUDFLARE_API_TOKEN` | cf-ai | Yes | Cloudflare API token | [Cloudflare API Tokens](https://developers.cloudflare.com/fundamentals/api/get-started/create-token/) |
279+
280+
*Can use IAM roles, managed identity, or other credential providers instead.
281+
282+
### Telemetry Environment Variables
283+
284+
#### Google Cloud Plugin
285+
286+
| Variable | Required | Description | Documentation |
287+
|----------|----------|-------------|---------------|
288+
| `GOOGLE_CLOUD_PROJECT` | Yes | GCP project ID | [GCP Projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects) |
289+
| `GOOGLE_APPLICATION_CREDENTIALS` | Yes* | Path to service account JSON | [Application Default Credentials](https://cloud.google.com/docs/authentication/application-default-credentials) |
290+
| `GCLOUD_PROJECT` | No | Alternative to `GOOGLE_CLOUD_PROJECT` | - |
291+
| `FIREBASE_PROJECT_ID` | No | Firebase project ID (auto-detected) | - |
292+
293+
*Not required when running on GCP with default credentials.
294+
295+
#### AWS Plugin
296+
297+
| Variable | Required | Description | Documentation |
298+
|----------|----------|-------------|---------------|
299+
| `AWS_REGION` | Yes | AWS region for X-Ray | [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-python.html) |
300+
| `AWS_ACCESS_KEY_ID` | Yes* | AWS access key | [AWS Credentials](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html) |
301+
| `AWS_SECRET_ACCESS_KEY` | Yes* | AWS secret key | [AWS Credentials](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html) |
302+
| `AWS_DEFAULT_REGION` | No | Fallback region | - |
303+
304+
*Can use IAM roles instead.
305+
306+
#### Azure Plugin
307+
308+
| Variable | Required | Description | Documentation |
309+
|----------|----------|-------------|---------------|
310+
| `APPLICATIONINSIGHTS_CONNECTION_STRING` | Yes | Application Insights connection string | [Azure Monitor OpenTelemetry](https://learn.microsoft.com/azure/azure-monitor/app/opentelemetry-configuration) |
311+
| `AZURE_TENANT_ID` | No | Azure AD tenant ID | [Azure Identity](https://learn.microsoft.com/azure/developer/python/sdk/authentication-overview) |
312+
| `AZURE_CLIENT_ID` | No | Azure AD client ID | - |
313+
| `AZURE_CLIENT_SECRET` | No | Azure AD client secret | - |
314+
315+
#### Cloudflare (cf) Plugin
316+
317+
| Variable | Required | Description | Documentation |
318+
|----------|----------|-------------|---------------|
319+
| `CF_OTLP_ENDPOINT` | Yes | OTLP endpoint URL | [Cloudflare Workers Observability](https://developers.cloudflare.com/workers/observability/) |
320+
| `CF_API_TOKEN` | Yes | Cloudflare API token (Bearer auth) | [Cloudflare API Tokens](https://developers.cloudflare.com/fundamentals/api/get-started/create-token/) |
321+
322+
#### Observability Plugin (Third-Party Backends)
323+
324+
##### Sentry
325+
326+
| Variable | Required | Description | Documentation |
327+
|----------|----------|-------------|---------------|
328+
| `SENTRY_DSN` | Yes | Sentry DSN (Data Source Name) | [Sentry DSN](https://docs.sentry.io/concepts/otlp/) |
329+
| `SENTRY_ENVIRONMENT` | No | Environment name (production, staging) | [Sentry Configuration](https://docs.sentry.io/platforms/python/configuration/options/) |
330+
| `SENTRY_RELEASE` | No | Release version identifier | - |
331+
332+
##### Honeycomb
333+
334+
| Variable | Required | Description | Documentation |
335+
|----------|----------|-------------|---------------|
336+
| `HONEYCOMB_API_KEY` | Yes | Honeycomb API key | [Honeycomb API Keys](https://docs.honeycomb.io/configure/environments/manage-api-keys/) |
337+
| `HONEYCOMB_DATASET` | No | Dataset name (Classic only) | [Honeycomb Datasets](https://docs.honeycomb.io/send-data/python/opentelemetry-sdk/) |
338+
| `HONEYCOMB_API_ENDPOINT` | No | API endpoint (default: US) | [Honeycomb Endpoints](https://docs.honeycomb.io/configure/environments/manage-api-keys/) |
339+
340+
Honeycomb endpoints:
341+
- US (default): `https://api.honeycomb.io`
342+
- EU: `https://api.eu1.honeycomb.io`
343+
344+
##### Datadog
345+
346+
| Variable | Required | Description | Documentation |
347+
|----------|----------|-------------|---------------|
348+
| `DD_API_KEY` | Yes | Datadog API key | [Datadog API Keys](https://docs.datadoghq.com/account_management/api-app-keys/) |
349+
| `DD_SITE` | No | Datadog site (default: `datadoghq.com`) | [Datadog Sites](https://docs.datadoghq.com/getting_started/site/) |
350+
| `DD_APP_KEY` | No | Datadog application key | - |
351+
352+
Datadog sites: `datadoghq.com`, `datadoghq.eu`, `us3.datadoghq.com`, `us5.datadoghq.com`, `ap1.datadoghq.com`
353+
354+
##### Grafana Cloud
355+
356+
| Variable | Required | Description | Documentation |
357+
|----------|----------|-------------|---------------|
358+
| `GRAFANA_OTLP_ENDPOINT` | Yes | Grafana Cloud OTLP endpoint | [Grafana Cloud OTLP](https://grafana.com/docs/grafana-cloud/monitor-applications/application-observability/setup/collector/opentelemetry-collector/) |
359+
| `GRAFANA_USER_ID` | Yes | Grafana Cloud instance ID (numeric) | [Grafana Cloud Portal](https://grafana.com/docs/grafana-cloud/account-management/authentication-and-permissions/) |
360+
| `GRAFANA_API_KEY` | Yes | Grafana Cloud API key | [Grafana Cloud API Keys](https://grafana.com/docs/grafana-cloud/account-management/authentication-and-permissions/create-api-key/) |
361+
362+
Find your credentials: My Account > [Stack] > OpenTelemetry > Configure
363+
364+
##### Axiom
365+
366+
| Variable | Required | Description | Documentation |
367+
|----------|----------|-------------|---------------|
368+
| `AXIOM_TOKEN` | Yes | Axiom API token | [Axiom API Tokens](https://axiom.co/docs/reference/tokens) |
369+
| `AXIOM_DATASET` | No | Dataset name (default: `genkit`) | [Axiom Datasets](https://axiom.co/docs/reference/datasets) |
370+
| `AXIOM_ORG_ID` | No | Organization ID | - |
371+
372+
#### Generic OpenTelemetry (Standard Variables)
373+
374+
| Variable | Required | Description | Documentation |
375+
|----------|----------|-------------|---------------|
376+
| `OTEL_EXPORTER_OTLP_ENDPOINT` | Yes | OTLP collector endpoint | [OTel SDK Environment Variables](https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/) |
377+
| `OTEL_EXPORTER_OTLP_HEADERS` | No | Headers for authentication | - |
378+
| `OTEL_SERVICE_NAME` | No | Service name for traces | - |
379+
380+
### Safety & Evaluation Environment Variables
381+
382+
| Variable | Plugin | Required | Description | Documentation |
383+
|----------|--------|----------|-------------|---------------|
384+
| `GOOGLE_CLOUD_PROJECT` | checks | Yes | GCP project with Checks API enabled | [Google Checks](https://developers.google.com/checks) |
385+
| `GOOGLE_APPLICATION_CREDENTIALS` | checks | Yes* | Service account credentials | - |
386+
255387
## Installation
256388

257389
Each plugin is a separate package. Install only what you need:

0 commit comments

Comments
 (0)