LLM Trace字段是阿里云参考OpenTelemetry标准以及大语言模型应用领域概念制定的,通过对Attributes、Resource、Event扩展用于描述LLM应用调用链数据的语义,能够反映LLM的输入输出请求、令牌消耗等关键操作。它们为Completion、Chat、RAG、Agent、Tool等场景提供了丰富的、语境相关的语义数据,以便于数据跟踪和上报。此语义字段将随着社区的发展而不断更新和优化。
Span一级字段定义参考OpenTelemetry开源标准,阿里云可观测链路 OpenTelemetry 版底层存储的Trace一级字段详细说明,请参见调用链分析参数说明。
LLM相关的SpanKind是一个Attribute,不同于OpenTelemetry中Trace定义的Span kind。
公共部分
Attributes
AttributeKey  | 描述  | 类型  | 示例值  | 需求等级  | 
  | 会话ID  | String  | 
  | 有条件时必须  | 
  | 应用的C端用户标识  | String  | 
  | 有条件时必须  | 
  | 操作类型  | String  | 参考LLM Span Kind  | 必须  | 
  | 使用的框架类型  | String  | 
  | 有条件时必须  | 
Resources
ResourceKey  | 描述  | 类型  | 示例值  | 需求等级  | 
  | 应用名称  | String  | 
  | 必须  | 
Chain
Chain是一种将LLM和其他多个组件连接在一起的工具,以实现复杂的任务,可能包含Retrieval、Embedding、LLM调用、还可以嵌套Chain等。
Attributes
AttributeKey  | 描述  | 类型  | 示例值  | 需求等级  | 
  | 操作类型,大模型spanKind专用枚举,Chain中取值必须为   | String  | 
  | 必须  | 
  | 操作二级类型  | String  | 
  | 有条件时必须  | 
  | 输入内容  | String  | 
  | 推荐  | 
  | 返回内容  | String  | 
  | 推荐  | 
  | 首包延迟,一次提问的整体响应首包耗时,从服务端获取的用户请求到首包返回的时间,单位纳秒。  | Integer  | 1000000  | 推荐  | 
Retriever
Retriever一般表示访问向量存储或者数据库获取数据,一般用于补充上下文内容,以提升LLM的响应准确性以及效率。
Attributes
AttributeKey  | 描述  | 类型  | 示例值  | 需求等级  | 
  | 操作类型,大模型spanKind专用枚举,Retriever中取值必须为   | String  | 
  | 必须  | 
  | 检索内容短句  | String  | 
  | 推荐  | 
  | 召回的文档列表  | JSON数组  | 
  | 必须  | 
Reranker
Reranker针对输入的多个文档,结合提问内容判断相关性进行排序处理,可能返回TopK的文档作为LLM。
Attributes
AttributeKey  | 描述  | 类型  | 示例值  | 需求等级  | 
  | 操作类型,大模型spanKind专用枚举,Reranker中取值必须为   | String  | 
  | 必须  | 
  | Reranker请求的入参  | String  | 
  | 可选  | 
  | Reranker所用的模型名  | String  | 
  | 可选  | 
  | Reranker后的排名  | Integer  | 
  | 可选  | 
  | 输出文档相关的元数据。重排序输入文档、JSON数组结构、metadata为文档的基本信息,包含路径,文件名以及来源等。  | String  | -  | 必须  | 
  | 输出文档相关的元数据。重排序输出文档、JSON数组结构、metadata为文档的基本信息,包含路径,文件名以及来源等。  | String  | -  | 必须  | 
LLM
LLM标识对大模型的调用,例如基于SDK或OpenAPI请求不同的大模型进行推理或者文本生成等场景。
Attributes
AttributeKey  | 描述  | 类型  | 示例值  | 需求等级  | 
  | 操作类型,大模型spanKind专用枚举,LLM中取值必须为   | String  | 
  | 必须  | 
  | 操作二级类型  | String  | 
  | 可选  | 
  | 提示词模板  | String  | 
  | 可选  | 
  | 提示词模板的具体值  | String  | 
  | 可选  | 
  | 提示模板的版本号  | String  | 
  | 可选  | 
  | 大模型的提供商  | String  | 
  | 必须  | 
  | LLM调用的入参  | String  | 
  | 可选  | 
  | 模型名称  | String  | 
  | 可选  | 
  | 会话的唯一ID,当埋点可以比较方便地获取会话的ID时应该采集。  | String  | 
  | 有条件时必须  | 
  | LLM请求中指定的输出类型,当可以获取并且请求指定了类型(如指定了output format)时应该采集。  | String  | 
  | 有条件时必须  | 
  | LLM请求中希望获得的候选生成数量  | Int  | 
  | 有条件且不为1时必须  | 
  | LLM请求中指定的模型名  | String  | 
  | 必须  | 
  | LLM请求中指定的seed  | String  | 
  | 有条件时必须  | 
  | LLM请求中设定的频率惩罚  | Float  | 
  | 推荐  | 
  | LLM请求中指定的最大token数  | Integer  | 
  | 推荐  | 
  | LLM请求中设定的存在性惩罚  | Float  | 
  | 推荐  | 
  | LLM请求中指定的温度  | Float  | 
  | 推荐  | 
  | LLM请求中指定的topP  | Float  | 
  | 推荐  | 
  | LLM请求中指定的topK  | Float  | 
  | 推荐  | 
  | 是否为流式响应,如果不存在,则代表取值为false。  | Boolean  | 
  | 推荐  | 
  | LLM的终止序列  | String[]  | 
  | 推荐  | 
  | Tools调用的内容(后续废弃,替换为  | String  | 
  | 推荐  | 
  | LLM生成的唯一ID  | String  | 
  | 推荐  | 
  | LLM生成所使用的模型名  | String  | 
  | 推荐  | 
  | LLM终止生成的原因  | String[]  | 
  | 推荐  | 
  | 流式响应场景下的大模型自身的首包响应耗时。代表一次提问的整体响应首包耗时,从服务端获取的用户请求到首包返回的时间,单位纳秒。  | Integer  | 
  | 推荐  | 
  | 推理模型的推理时间,代表响应reasoning过程的持续时长,单位毫秒。  | Integer  | 
  | 推荐  | 
  | 输入使用的token数  | Integer  | 
  | 推荐  | 
  | 输出使用的token数  | Integer  | 
  | 推荐  | 
  | 使用的总token数  | Integer  | 
  | 推荐  | 
  | 模型输入内容链接  | String  | 
  | 推荐  | 
  | 模型输出内容链接  | String  | 
  | 推荐  | 
  | system提示词的内容链接。用于单独记录system提示词(/system指令)内容的外部链接。如果system提示词(/system指令)内容可以单独获取,则应该用该字段记录;如果system提示词(/system指令)内容是模型调用的一部分,应该记录在  | String  | 
  | 如果能获取时推荐  | 
  | 模型输入内容,消息必须按照发送给模型或智能体的顺序提供。 默认情况下,不应采集该信息,除非使用者主动打开开关。  | String  | 
  | 可选  | 
  | 模型输出内容,消息必须按照发送给模型或智能体的顺序提供。 默认情况下,不应采集该信息,除非使用者主动打开开关。  | String  | 
  | 可选  | 
  | system提示词的内容。用于单独记录system提示词(/system指令)内容,格式为一个JSON字符串。如果system提示词(/system指令)内容可以单独获取,则应该用该字段记录;如果system提示词(/system指令)内容是模型调用的一部分,应该记录在 默认情况下,不应采集该信息,除非使用者主动打开开关。  | String  | 
  | 可选  | 
  | 推理模型的推理内容。代表响应reasoning过程的内容,默认长度限制为1024字符,超出的部分应截断。  | String  | 
  | 可选  | 
  | 工具定义  | String  | 
  | 推荐  | 
Embedding
Embedding标识一次嵌入处理,例如针对文本嵌入大模型的操作,后续可以根据相似度查询优化问题。
Attributes
AttributeKey  | 描述  | 类型  | 示例值  | 需求等级  | 
  | 操作类型,大模型spanKind专用枚举,Embedding中取值必须为   | String  | 
  | 必须  | 
  | 输入文本的token消耗  | Integer  | 
  | 可选  | 
  | Embedding的token总消耗  | Integer  | 
  | 可选  | 
  | Embedding的模型名称(后续废弃,替换为  | String  | 
  | 可选  | 
  | 嵌入结果(后续废弃)  | String  | -  | 可选  | 
  | 操作二级类型  | String  | 
  | 有条件时必须  | 
  | 编码格式  | String  | ["base64"]  | 推荐  | 
  | 嵌入维度数  | Integer  | 100  | 推荐  | 
  | Embedding 请求中指定的模型名  | String  | 
  | 有条件时必须  | 
Tool
Tool标识对外部工具的调用,例如可能调用计算器或者请求天气API获取最新的天气情况。
Attributes
AttributeKey  | 描述  | 类型  | 示例值  | 需求等级  | 
  | 操作类型,大模型spanKind专用枚举,Tool中取值必须为   | String  | 
  | 必须  | 
  | 工具名称(后续废弃,替换为  | String  | 
  | 必须  | 
  | 工具描述(后续废弃,替换为  | String  | 
  | 必须  | 
  | 工具入参(后续废弃,替换为  | String  | 
  | 必须  | 
  | 操作二级类型  | String  | 
  | 有条件时必须  | 
  | 工具 id  | String  | 
  | 推荐  | 
  | 工具描述  | String  | 
  | 推荐  | 
  | 工具名称  | String  | 
  | 推荐  | 
  | 工具类型  | String  | 
  | 推荐  | 
  | 工具调用入参  | String  | 
  | 可选  | 
  | 工具调用返回值  | String  | 
  | 可选  | 
Agent
Agent表示智能体场景,一种更复杂的Chain,需要基于大模型的推理结果决策执行下一步,例如可能涉及到LLM以及Tool的多次调用,一步步决策得出最终答案。
Attributes
AttributeKey  | 描述  | 类型  | 示例值  | 需求等级  | 
  | 操作类型,大模型spanKind专用枚举,Agent中取值必须为   | String  | 
  | 必须  | 
  | 输入参数,记录原始输入。  | String  | 
  | 必须  | 
  | 输入MimeType  | String  | 
  | 可选  | 
  | 返回结果,返回最终输出。  | String  | 
  | 必须  | 
  | 输出MimeType  | String  | 
  | 可选  | 
  | Agent的首包响应耗时。代表一次提问的整体响应首包耗时,从服务端获取的用户请求到首包返回的时间,单位纳秒。  | Integer  | 
  | 推荐  | 
Task
Task标识一次内部自定义方法,例如可能调用本地的某个Function等应用自定义的逻辑。
Attributes
AttributeKey  | 描述  | 类型  | 示例值  | 需求等级  | 
  | 操作类型,大模型spanKind专用枚举,Task中取值必须为   | String  | 
  | 必须  | 
  | 输入参数  | String  | 自定义JSON格式  | 可选  | 
  | 输入MimeType  | String  | 
  | 可选  | 
  | 输出MimeType  | String  | 
  | 可选  |