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 |
| 可选 |
Embedding
Embedding标识一次嵌入处理,例如针对文本嵌入大模型的操作,后续可以根据相似度查询优化问题。
Attributes
AttributeKey | 描述 | 类型 | 示例值 | 需求等级 |
| 操作类型,大模型spanKind专用枚举,Embedding中取值必须为 | String |
| 必须 |
| 输入文本的token消耗 | Integer |
| 可选 |
| Embedding的token总消耗 | Integer |
| 可选 |
| Embedding的模型名称 | String |
| 可选 |
| 嵌入结果 | String | - | 可选 |
Tool
Tool标识对外部工具的调用,例如可能调用计算器或者请求天气API获取最新的天气情况。
Attributes
AttributeKey | 描述 | 类型 | 示例值 | 需求等级 |
| 操作类型,大模型spanKind专用枚举,Tool中取值必须为 | 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 |
| 可选 |