Skip to main content
Google Gen AI provides the Gemini family of large language models through the Google Gen AI Python SDK and the Google Gen AI Go SDK. In Python, Arize AX captures every Gemini API call — chat completions, tool calls, and token usage — via the openinference-instrumentation-google-genai package, which also covers calls routed through Vertex AI when the SDK is configured against Vertex. In Go, there is no OpenInference instrumentor for the GenAI SDK yet, so you wrap each call in an LLM span and set attributes from the OpenInference Go semantic conventions package.

Prerequisites

Launch Arize AX

  1. Sign in to your Arize AX account.
  2. From Space Settings, copy your Space ID and API Key. You will set them as ARIZE_SPACE_ID and ARIZE_API_KEY below.

Install

Configure credentials

Setup tracing

Go SDK The span is created by hand, so it captures only the attributes you set. To trace streaming calls, tool calls, or chat sessions, add the matching attributes from the OpenInference semantic conventions. See Manual instrumentation for the span patterns.

Run Google GenAI

Expected output

Verify in Arize AX

  1. Open your Arize AX space and select project google-genai-tracing-example.
  2. You should see a new trace within ~30 seconds containing a GenerateContent LLM span with the prompt, response, and token usage attached.
  3. If no traces appear, see Troubleshooting.

Check from the skill, CLI, or SDK

Confirm spans are actually reaching your Arize AX project. Use whichever fits your workflow — the skill and CLI work for any framework; the SDK check is shown for each language.
Install the Arize Skills plugin and let your coding agent check for you:
Then prompt your agent:
Use the arize-trace skill to export and analyze recent traces from my project. Confirm spans are arriving, and summarize any errors or latency issues.

Troubleshooting

  • No traces in Arize AX. Confirm ARIZE_SPACE_ID and ARIZE_API_KEY are set in the same shell that runs example.py. Enable OpenTelemetry debug logs with export OTEL_LOG_LEVEL=debug and re-run.
  • Google GenAI spans missing but other spans present. GoogleGenAIInstrumentor().instrument(...) must run before any from google import genai import. Make sure instrumentation.py is the first import in your entry point.
  • 401 / 403 from Gemini. Verify GEMINI_API_KEY is set and has access to the model in the example. Swap gemini-3.8-flash for a model your key can call.
  • 404 NOT_FOUND for the model. Google occasionally retires older Gemini aliases for new users. If gemini-3.8-flash returns 404, list models with client.models.list() and pick a current one.
  • Using Vertex AI instead of the Gemini API. Configure the SDK against Vertex per Google’s GenAI SDK docs (set GOOGLE_GENAI_USE_VERTEXAI, GOOGLE_CLOUD_PROJECT, GOOGLE_CLOUD_LOCATION). The same instrumentor captures Vertex calls — only the credential setup differs.
  • Go: spans never arrive. Spans are batched and only sent when tp.Shutdown runs. Keep the defer that calls it, and don’t exit with os.Exit or log.Fatal, which skip deferred calls.
  • Go: the span has no prompt, response, or token counts. Only the attributes set in main.go are recorded. If you move the Gemini call into your own function, pass the ctx returned by Start and set the output and token attributes on the same span.

Resources

Gemini API Documentation

OpenInference Google GenAI Instrumentor

Google Gen AI Python SDK

Google Gen AI Go SDK

OpenInference Go Semantic Conventions