Why LLM Observability Is Hard (and Different)
Traditional observability answers three questions: did the request succeed, how long did it take, and what failed? For LLMs, those questions are necessary but not sufficient. A GPT-4o call can return HTTP 200, finish in 2.3 seconds, and still be completely wrong — hallucinated, off-topic, or financially ruinous.
LLM-specific questions you also need to answer:
- What prompt was sent? (Was it the version you think it was?)
- How many tokens were consumed — prompt vs. completion?
- What did the model return, and did it call a tool?
- What did this cost, per request, per user, per day?
- Which model version ran — did something silently change?
Without a shared vocabulary for these questions, every vendor invents its own attribute names (llm.prompt_tokens vs llm.usage.prompt_tokens vs usage.inputTokens). That's where OTel's GenAI semantic conventions come in.
