Skip to main content

AI Observable Metric

1. Span Kind Overview

Distinguish different AI Agent semantic types via the gen_ai.span.kind field. Enumeration values are as follows:

Enumeration ValueMeaning
AGENTAgent invocation
LLMLarge Language Model invocation
CHAINCall chain / Pipeline
EMBEDDINGVector embedding
TOOLTool invocation
TASKTask unit
RETRIEVERRetriever
RERANKERReranker
MCP_CLIENTMCP client invocation
UNKNOWNUnknown type

2. Common Attributes

All Span types MUST carry the following fields (from CommonAttributes + SpanAttributes).

2.1 Core Identifiers

Field KeyTypeDescription
gen_ai.span.kindstringSpan type; see table above
gen_ai.operation.namestringOperation type; see §3
gen_ai.frameworkstringAI framework name
gen_ai.span.sub_kindstringSpan sub-kind for further classification

2.2 Session & User

Field KeyTypeDescription
gen_ai.conversation.idstringUnique conversation/session ID to link multiple Spans in one interaction
gen_ai.user.idstringUnique user identifier
gen_ai.user.namestringUser name

2.3 Input / Output

Field KeyTypeDescription
input.valuestringRaw input to this Span (text or JSON string)
output.valuestringRaw output from this Span
input.mime_typestringMIME type of input.value; default text/plain
output.mime_typestringMIME type of output.value; default text/plain

2.4 Timing

Field KeyTypeDescription
gen_ai.user.time_to_first_tokenintegerUser‑perceived time to first token (nanoseconds)
gen_ai.response.reasoning_timeintegerInference model reasoning duration (milliseconds)

2.5 Extension

Field KeyTypeDescription
metadataJSONCustom key‑value metadata
tag.tagsstring[]Tags for filtering and grouping
contentstringGeneric content field

3. gen_ai.operation.name Enumeration

Enumeration ValueMeaningApplicable Span Types
chatChat completionLLM
text_completionText completion (legacy)LLM
generate_contentMultimodal content generationLLM
create_agentCreate AgentAGENT
invoke_agentInvoke AgentAGENT
execute_toolExecute toolTOOL
embeddingsVector embeddingEMBEDDING
retrieveRetrieveRETRIEVER

4. Span Type‑Specific Fields

4.1 LLM Span

Applicable operations: chat / text_completion / generate_content

Model Identification

Field KeyTypeDescription
gen_ai.provider.namestringAI provider (e.g., openai, anthropic, gcp.gemini)
gen_ai.request.modelstringRequested model name
gen_ai.response.modelstringActual model used in response (may differ)
gen_ai.output.typestringOutput type: text / json / image / speech
gen_ai.model_namestring⚠️ Deprecated; use gen_ai.request.model

Request Parameters

Field KeyTypeDescription
gen_ai.request.temperaturefloatSampling temperature
gen_ai.request.top_pfloatNucleus sampling parameter
gen_ai.request.top_kfloatTop‑K sampling parameter
gen_ai.request.max_tokensintegerMax output tokens
gen_ai.request.stop_sequencesstring[]Stop sequences
gen_ai.request.frequency_penaltyfloatFrequency penalty
gen_ai.request.presence_penaltyfloatPresence penalty
gen_ai.request.seedintegerRandom seed for deterministic generation
gen_ai.request.choice.countintegerNumber of completions requested
gen_ai.request.is_streambooleanWhether streaming response
gen_ai.request.tool_callsstringTool call info in request
gen_ai.request.parametersstring⚠️ Deprecated

Response

Field KeyTypeDescription
gen_ai.response.idstringUnique response ID
gen_ai.response.finish_reasonsstring[]Stop reasons: stop/length/tool_call/content_filter/error
gen_ai.response.time_to_first_tokenintegerModel time to first token (nanoseconds, streaming)
gen_ai.response.time_per_output_tokenintegerAverage time per output token
gen_ai.response.reasoning_contentstring⚠️ Deprecated

Token Usage

Field KeyTypeDescription
gen_ai.usage.input_tokensintegerInput token count
gen_ai.usage.output_tokensintegerOutput token count
gen_ai.usage.total_tokensintegerTotal tokens (input + output)

Latency (Self‑hosted Models)

Field KeyTypeDescription
gen_ai.latency.time_in_model_prefillintegerPrefill phase duration
gen_ai.latency.time_in_model_decodeintegerDecode phase duration
gen_ai.latency.time_in_model_inferenceintegerTotal inference duration

Message Content (disabled by default)

Field KeyTypeDescription
gen_ai.input.messagesJSONFull input message list
gen_ai.output.messagesJSONFull output message list
gen_ai.system_instructionsJSONSystem prompt
gen_ai.tool.definitionsJSONTool definition schema
gen_ai.input.messages_refstringExternal reference to input messages
gen_ai.output.messages_refstringExternal reference to output messages
gen_ai.system_instructions_refstringExternal reference to system instructions

Message Structure Fields

Field KeyTypeDescription
message.rolestringuser/assistant/system/tool
message.contentstringMessage text
message.namestringMessage or function name
message.tool_callsJSONTool calls generated by model
message.function_call_namestringFunction call name
message.function_call_arguments_jsonstringFunction call arguments (JSON string)

4.2 AGENT Span

Applicable operations: create_agent / invoke_agent

AGENT Span inherits all LLMAttributes; key fields:

Field KeyTypeDescription
gen_ai.operation.namestringcreate_agent or invoke_agent
gen_ai.conversation.idstringConversation ID for cross‑Span correlation
gen_ai.data_source.idstringData source ID (RAG)
gen_ai.retrieval.query.textstringRetrieval query text
gen_ai.provider.namestringAgent service provider
gen_ai.request.modelstringBase model used by Agent
gen_ai.usage.input_tokensintegerTotal input tokens
gen_ai.usage.output_tokensintegerTotal output tokens
gen_ai.input.messagesJSONInput message history
gen_ai.output.messagesJSONOutput messages
gen_ai.tool.definitionsJSONAvailable tool definitions
gen_ai.system_instructionsJSONAgent system instructions

4.3 TOOL Span

Applicable operation: execute_tool

OTEL Tool Attributes

Field KeyTypeDescription
gen_ai.tool.namestringTool name
gen_ai.tool.descriptionstringTool capability description
gen_ai.tool.call.idstringUnique tool call ID
gen_ai.tool.typestringfunction/custom/unknown

OpenInference Tool Attributes

Field KeyTypeDescription
tool.parametersJSONInput parameter JSON Schema
tool_call.function.argumentsstringCall arguments (JSON string)
tool_call.function.thoughtsstringModel reasoning before tool call

4.4 EMBEDDING Span

Applicable operation: embeddings

Field KeyTypeDescription
gen_ai.request.modelstringEmbedding model name
gen_ai.request.encoding_formatsstring[]Encoding formats: float, base64
gen_ai.request.temperaturefloatSampling temperature
gen_ai.usage.input_tokensintegerInput tokens for embedding
gen_ai.embeddings.dimension.countintegerEmbedding vector dimension
embedding.embeddingsJSONEmbedding results (text + vector)
embedding.model_namestring⚠️ Deprecated; use gen_ai.request.model
embedding.embedding_outputstring⚠️ Deprecated

4.5 RETRIEVER Span

Applicable operation: retrieve

Field KeyTypeDescription
retrieval.documentsJSONRetrieved documents: id/score/content/metadata
retrieval.documents.list.lengthintegerNumber of documents returned

Document Substructure

Field KeyTypeDescription
document.idstringUnique document ID
document.scorefloatRelevance score (0.0–1.0)
document.contentstringChunk content
document.metadataJSONSource metadata (filename, URL, etc.)

4.6 RERANKER Span

Field KeyTypeDescription
gen_ai.span.kindstringFixed: RERANKER
gen_ai.operation.namestringRecommended: rerank
input.valuestringQuery input
output.valuestringReranked document list (JSON string)
gen_ai.conversation.idstringLinked conversation ID
metadataJSONCustom metadata

4.7 CHAIN Span

Identified by gen_ai.span.kind = CHAIN; uses only common attributes.

Field KeyTypeDescription
gen_ai.span.kindstringFixed: CHAIN
gen_ai.operation.namestringCustom pipeline operation name
gen_ai.span.sub_kindstringChain subtype
input.valuestringRaw input
output.valuestringFinal output
gen_ai.conversation.idstringLinked conversation ID
gen_ai.frameworkstringAI framework (LangChain, LlamaIndex, etc.)
metadataJSONCustom metadata

4.8 TASK Span

Identified by gen_ai.span.kind = TASK; represents an independent work unit decomposed by Agent.

Field KeyTypeDescription
gen_ai.span.kindstringFixed: TASK
gen_ai.operation.namestringCustom task name
gen_ai.span.sub_kindstringTask subtype or status
input.valuestringTask input
output.valuestringTask output
gen_ai.conversation.idstringLinked conversation ID
gen_ai.user.idstringLinked user ID
metadataJSONCustom task metadata

4.9 MCP_CLIENT Span

Based on OTEL MCP Specification

Field KeyTypeDescription
gen_ai.span.kindstringFixed: MCP_CLIENT
mcp.method.namestringRequired MCP method name
error.typestringError type (on failure)
gen_ai.prompt.namestringMCP prompt name
gen_ai.tool.namestringMCP tool name
gen_ai.operation.namestringOperation type
rpc.response.status_codestringMCP response status code
jsonrpc.protocol.versionstringJSON‑RPC version
mcp.protocol.versionstringMCP version
network.protocol.namestringNetwork protocol
network.protocol.versionstringNetwork protocol version
network.transportstringTransport protocol
server.addressstringMCP server address
server.portintegerMCP server port
mcp.resource.uristringMCP resource URI

5. Enumeration Quick Reference

gen_ai.response.finish_reasons

ValueMeaning
stopNormal stop
lengthMax tokens reached
content_filterContent filter triggered
tool_callModel requested tool call
errorError occurred

gen_ai.output.type

ValueMeaning
textPlain text
jsonJSON object
imageImage
speechSpeech