Google (Gemini & Vertex)

google-generativeai and vertexai auto-capture generate_content and streaming variants.

Two instrumentors, one per SDK: one for the Gemini API (google-generativeai) and one for Vertex AI (vertexai). Calls inside wrap your agent become llm spans. The provider field is google for Gemini and google-vertex for Vertex.

What's captured

CallSpan kindAuto-extracted
GenerativeModel.generate_contentllmmodel, tokens (usageMetadata), prompt, response
generate_content streamingllmsame, accumulated
start_chat then send_messagellmsame, with chat history in input
embed_contentllmmodel, input tokens

Install

# Gemini API
pip install google-generativeai opentelemetry-instrumentation-google-generativeai

# Vertex AI
pip install google-cloud-aiplatform opentelemetry-instrumentation-vertexai

A Node instrumentor (@opentelemetry/instrumentation-google-generativeai) is also available.

Minimal example — Gemini

import os, trodo
import google.generativeai as genai

trodo.init(site_id=os.environ['TRODO_SITE_ID'])
genai.configure(api_key=os.environ['GEMINI_API_KEY'])
model = genai.GenerativeModel('gemini-2.5-flash')

with trodo.wrap_agent('gemini-bot') as run:
    r = model.generate_content('Explain vector databases in one sentence.')
    run.set_output(r.text)

Minimal example — Vertex

import os, trodo, vertexai
from vertexai.generative_models import GenerativeModel

trodo.init(site_id=os.environ['TRODO_SITE_ID'])
vertexai.init(project=os.environ['GCP_PROJECT'], location='us-central1')
model = GenerativeModel('gemini-2.5-pro')

with trodo.wrap_agent('vertex-bot') as run:
    r = model.generate_content('Explain vector databases in one sentence.')
    run.set_output(r.text)

Tokens come from usage_metadata: prompt_token_count maps to input tokens and candidates_token_count to output tokens.

On this page