跳到主要内容

AI可观测调用链Span协议说明

一、Span 类型总览

通过 gen_ai.span.kind 字段区分 不同AI Agent语义类型,枚举值如下:

枚举值含义
AGENT智能体调用
LLM大语言模型调用
CHAIN调用链 / 流水线
EMBEDDING向量嵌入
TOOL工具调用
TASK任务单元
RETRIEVER检索器
RERANKER重排序器
MCP_CLIENTMCP 客户端调用
UNKNOWN未知类型

二、通用属性

所有 Span 类型均应携带以下字段(来自 CommonAttributes + SpanAttributes)。

2.1 核心标识

字段 Key类型说明
gen_ai.span.kindstringSpan 类型,取值见上表
gen_ai.operation.namestring操作类型,取值见 §三
gen_ai.frameworkstring使用的 AI 框架名称
gen_ai.span.sub_kindstringSpan 子类型,用于进一步细分

2.2 会话与用户

字段 Key类型说明
gen_ai.conversation.idstring对话/会话唯一 ID,用于关联同一次交互中的多个 Span
gen_ai.user.idstring用户唯一标识
gen_ai.user.namestring用户名称

2.3 输入 / 输出

字段 Key类型说明
input.valuestring传入该 Span 的原始输入内容(文本或 JSON 字符串)
output.valuestring该 Span 产生的原始输出内容
input.mime_typestringinput.value 的 MIME 类型,默认 text/plain
output.mime_typestringoutput.value 的 MIME 类型,默认 text/plain

2.4 时间

字段 Key类型说明
gen_ai.user.time_to_first_tokeninteger用户视角的首 Token 响应时间(纳秒)
gen_ai.response.reasoning_timeinteger推理模型的推理过程耗时(毫秒)

2.5 扩展

字段 Key类型说明
metadataJSON自定义键值对元数据
tag.tagsstring[]用于过滤与分组的标签列表
contentstring通用内容字段

三、gen_ai.operation.name 枚举值

枚举值含义适用 Span 类型
chat对话补全LLM
text_completion文本补全(旧版)LLM
generate_content多模态内容生成LLM
create_agent创建 AgentAGENT
invoke_agent调用 AgentAGENT
execute_tool执行工具TOOL
embeddings向量嵌入EMBEDDING
retrieve检索RETRIEVER

四、各 Span 类型专属字段

4.1 LLM Span

适用操作名: chat / text_completion / generate_content

模型标识

字段 Key类型说明
gen_ai.provider.namestringAI 提供商,如 openaianthropicgcp.gemini
gen_ai.request.modelstring请求指定的模型名称
gen_ai.response.modelstring响应实际使用的模型名称(可能与请求不同)
gen_ai.output.typestring输出类型,取值:text / json / image / speech
gen_ai.model_namestring⚠️ 已废弃,请使用 gen_ai.request.model

请求参数

字段 Key类型说明
gen_ai.request.temperaturefloat采样温度,控制生成随机性
gen_ai.request.top_pfloat核采样参数
gen_ai.request.top_kfloatTop-K 采样参数
gen_ai.request.max_tokensinteger最大生成 Token 数
gen_ai.request.stop_sequencesstring[]停止生成的特殊序列列表
gen_ai.request.frequency_penaltyfloat频率惩罚系数
gen_ai.request.presence_penaltyfloat存在惩罚系数
gen_ai.request.seedinteger随机种子(用于确定性生成)
gen_ai.request.choice.countinteger请求的候选补全数量(不为 1 时记录)
gen_ai.request.is_streamboolean是否为流式响应
gen_ai.request.tool_callsstring请求中携带的工具调用信息
gen_ai.request.parametersstring⚠️ 已废弃

响应

字段 Key类型说明
gen_ai.response.idstring模型响应唯一标识符
gen_ai.response.finish_reasonsstring[]各候选的停止原因,如 stop / length / tool_call / content_filter / error
gen_ai.response.time_to_first_tokeninteger模型自身首 Token 延迟(纳秒,流式场景)
gen_ai.response.time_per_output_tokeninteger平均每个输出 Token 耗时
gen_ai.response.reasoning_contentstring⚠️ 已废弃,推理模型推理内容

Token 用量

字段 Key类型说明
gen_ai.usage.input_tokensinteger输入 Token 数
gen_ai.usage.output_tokensinteger输出 Token 数
gen_ai.usage.total_tokensinteger总 Token 数(input + output)

延迟(自托管模型)

字段 Key类型说明
gen_ai.latency.time_in_model_prefillinteger模型 Prefill 阶段耗时
gen_ai.latency.time_in_model_decodeinteger模型 Decode 阶段耗时
gen_ai.latency.time_in_model_inferenceinteger模型推理总耗时

消息内容(默认不采集,需主动开启)

字段 Key类型说明
gen_ai.input.messagesJSON发送给模型的完整消息列表
gen_ai.output.messagesJSON模型返回的完整消息列表
gen_ai.system_instructionsJSON系统提示词(独立于聊天历史)
gen_ai.tool.definitionsJSON传递给模型的工具定义 Schema
gen_ai.input.messages_refstring输入消息的外部引用地址
gen_ai.output.messages_refstring输出消息的外部引用地址
gen_ai.system_instructions_refstring系统指令的外部引用地址

消息结构字段(gen_ai.input.messages / gen_ai.output.messages 内部字段)

字段 Key类型说明
message.rolestring消息角色:user / assistant / system / tool
message.contentstring消息文本内容
message.namestring消息名称(通常用于标识函数名)
message.tool_callsJSON模型生成的工具调用列表
message.function_call_namestringFunction Call 的函数名
message.function_call_arguments_jsonstringFunction Call 的参数 JSON 字符串

4.2 AGENT Span

适用操作名: create_agent / invoke_agent

AGENT Span 无独立专属属性类,继承 LLMAttributes 的全部字段。以下为 AGENT 场景下重点关注字段:

字段 Key类型说明
gen_ai.operation.namestringcreate_agent(创建远程 Agent)或 invoke_agent(调用 Agent)
gen_ai.conversation.idstring对话/线程 ID,用于跨 Span 关联同一次 Agent 运行
gen_ai.data_source.idstringAgent 使用的数据源 ID(RAG 场景)
gen_ai.retrieval.query.textstringAgent 发起检索时的查询文本
gen_ai.provider.namestring提供 Agent 服务的 AI 厂商
gen_ai.request.modelstringAgent 调用的基础模型名称
gen_ai.usage.input_tokensinteger本次 Agent 调用的输入 Token 总数
gen_ai.usage.output_tokensinteger本次 Agent 调用的输出 Token 总数
gen_ai.input.messagesJSON传入 Agent 的完整消息历史(默认不采集)
gen_ai.output.messagesJSONAgent 返回的完整消息(默认不采集)
gen_ai.tool.definitionsJSONAgent 可用的工具定义列表(默认不采集)
gen_ai.system_instructionsJSONAgent 的系统指令(默认不采集)

4.3 TOOL Span

适用操作名: execute_tool

OTEL 工具标识字段(来自 ToolAttributes

字段 Key类型说明
gen_ai.tool.namestring工具名称
gen_ai.tool.descriptionstring工具能力描述
gen_ai.tool.call.idstring本次工具调用的唯一 ID
gen_ai.tool.typestring工具类型:function(本地函数)/ custom(自定义)/ unknown

OpenInference 工具字段(来自 SpanAttributes / ToolCallAttributes

字段 Key类型说明
tool.parametersJSON工具输入参数的 JSON Schema
tool_call.function.argumentsstring工具调用时传入的参数(JSON 序列化字符串)
tool_call.function.thoughtsstring模型调用工具前的思考内容

4.4 EMBEDDING Span

适用操作名: embeddings

字段 Key类型说明
gen_ai.request.modelstring嵌入模型名称
gen_ai.request.encoding_formatsstring[]请求的向量编码格式,如 floatbase64
gen_ai.request.temperaturefloat采样温度(部分模型支持)
gen_ai.usage.input_tokensinteger嵌入请求消耗的输入 Token 数
gen_ai.embeddings.dimension.countinteger嵌入向量的维度数
embedding.embeddingsJSON嵌入结果列表,每项含原始文本与向量
embedding.model_namestring⚠️ 已废弃,使用 gen_ai.request.model 替代
embedding.embedding_outputstring⚠️ 已废弃

4.5 RETRIEVER Span

适用操作名: retrieve

字段 Key类型说明
retrieval.documentsJSON检索返回的文档列表,每项包含 id / score / content / metadata
retrieval.documents.list.lengthinteger检索返回的文档数量

文档子结构字段(来自 DocumentAttributes

字段 Key类型说明
document.idstring文档唯一标识符
document.scorefloat文档与查询的相关性评分(0.0 ~ 1.0)
document.contentstring文档块的文本内容
document.metadataJSON文档来源元数据(如文件名、页码、URL 等)

4.6 RERANKER Span

字段 Key类型说明
gen_ai.span.kindstring固定为 RERANKER
gen_ai.operation.namestring建议填写 rerank
input.valuestring传入重排序器的查询内容
output.valuestring重排序后输出的文档列表(JSON 序列化)
gen_ai.conversation.idstring关联的对话 ID
metadataJSON自定义元数据

4.7 CHAIN Span

CHAIN Span 无专属属性类,通过 gen_ai.span.kind = CHAIN 标识,全部属性来自通用字段。

字段 Key类型说明
gen_ai.span.kindstring固定为 CHAIN
gen_ai.operation.namestring链式流水线的操作名称(自定义)
gen_ai.span.sub_kindstring链的子类型,用于区分不同类型的 Chain
input.valuestring进入 Chain 的原始输入
output.valuestringChain 产生的最终输出
gen_ai.conversation.idstring关联的对话 ID
gen_ai.frameworkstring使用的 AI 框架(如 LangChain、LlamaIndex)
metadataJSON自定义元数据

4.8 TASK Span

TASK Span 无专属属性类,通过 gen_ai.span.kind = TASK 标识,语义上表示 Agent 分解的一个独立工作单元。

字段 Key类型说明
gen_ai.span.kindstring固定为 TASK
gen_ai.operation.namestring任务操作名称(自定义)
gen_ai.span.sub_kindstring任务子类型或状态标识
input.valuestring任务输入内容
output.valuestring任务输出内容
gen_ai.conversation.idstring关联的对话 ID
gen_ai.user.idstring关联的用户 ID
metadataJSON任务的自定义元数据

4.9 MCP_CLIENT Span

基于 OTEL MCP 规范

字段 Key类型说明
gen_ai.span.kindstring固定为 MCP_CLIENT
mcp.method.namestring必填 MCP 调用的方法名称
error.typestring错误类型(操作失败时填写)
gen_ai.prompt.namestringMCP Prompt 名称
gen_ai.tool.namestringMCP 调用的工具名称
gen_ai.operation.namestring操作类型
rpc.response.status_codestringMCP 响应状态码
jsonrpc.protocol.versionstringJSON-RPC 协议版本
mcp.protocol.versionstringMCP 协议版本
network.protocol.namestring网络协议名称
network.protocol.versionstring网络协议版本
network.transportstring传输层协议
server.addressstringMCP Server 地址
server.portintegerMCP Server 端口
mcp.resource.uristringMCP Resource 的 URI

五、枚举值速查

gen_ai.response.finish_reasons 枚举值

枚举值含义
stop正常停止
length达到最大 Token 数限制
content_filter内容过滤触发
tool_call模型请求调用工具
error发生错误

gen_ai.output.type 枚举值

枚举值含义
text纯文本
jsonJSON 对象
image图像
speech语音