← Grace

Normalize a GenAI span

Six GenAI dialects spell the same facts six different ways, so nothing about your model calls can be queried as one thing. Pick a span below — nine real captures from the libraries running, not written for this page, collapsing onto six dialects because LangChain's spans turn out to be OpenLLMetry's — and see it rewritten into one gen_ai.* schema, with whatever the translation could not carry recorded on the span beside the data.

In — as the library emitted it

Out — normalized


  

This is genai-interlingua compiled to WebAssembly: the same Go the CLI and the OpenTelemetry Collector processor run, so the page cannot disagree with the tool about what a span becomes. Nothing you paste leaves your browser — there is no server to send it to.

Two pages that go further. The inspector takes one attribute at a time: which source key produced this value, what evidence the reading turned on, and what it could not carry. What translation costs draws the measurements across all six dialects — the scoring race that picks one, and where 105 attributes the conventions have no name for end up.

Source · why the target is a flag · how it works · the write-up · Apache-2.0

The WebAssembly above carries the Go runtime, and wasm_exec.js beside it is the toolchain's own shim — both Copyright The Go Authors, redistributed under a BSD 3-Clause license. NOTICE says what is whose.