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
- Python 3.10+ or Go 1.25+
- An Arize AX account (sign up)
- A
GEMINI_API_KEYfrom Google AI Studio
Launch Arize AX
- Sign in to your Arize AX account.
- From Space Settings, copy your Space ID and API Key. You will set them as
ARIZE_SPACE_IDandARIZE_API_KEYbelow.
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
- Open your Arize AX space and select project
google-genai-tracing-example. - You should see a new trace within ~30 seconds containing a
GenerateContentLLM span with the prompt, response, and token usage attached. - 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.- Arize skill (agent)
- AX CLI
- SDK
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_IDandARIZE_API_KEYare set in the same shell that runsexample.py. Enable OpenTelemetry debug logs withexport OTEL_LOG_LEVEL=debugand re-run. - Google GenAI spans missing but other spans present.
GoogleGenAIInstrumentor().instrument(...)must run before anyfrom google import genaiimport. Make sureinstrumentation.pyis the first import in your entry point. 401/403from Gemini. VerifyGEMINI_API_KEYis set and has access to the model in the example. Swapgemini-3.8-flashfor a model your key can call.404 NOT_FOUNDfor the model. Google occasionally retires older Gemini aliases for new users. Ifgemini-3.8-flashreturns 404, list models withclient.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.Shutdownruns. Keep thedeferthat calls it, and don’t exit withos.Exitorlog.Fatal, which skip deferred calls. - Go: the span has no prompt, response, or token counts. Only the attributes set in
main.goare recorded. If you move the Gemini call into your own function, pass thectxreturned byStartand set the output and token attributes on the samespan.