GenAI Trace字段定义说明
LLM Trace字段是TingYun参考OpenTelemetry标准以及大语言模型应用领域概念制定的,通过对Attributes扩展用于描述LLM应用调用链数据的语义,能够反映LLM的输入输出请求、令牌消耗等关键操作。它们为Completion、Chat、RAG、Agent、Tool等场景提供了丰富的、语境相关的语义数据,以便于数据跟踪和上报。此语义字段将随着社区的发展而不断更新和优化。
Attributes
通用
| Attribute | 类型 | 描述 | 是否必选 | 示例 |
|---|---|---|---|---|
gen_ai.session.id | String | 会话ID | 否 | "ddde34343-f93a-4477-33333-sdfsdaf" |
gen_ai.user.id | String | 应用的C端用户标识 | 否 | "e1b330b0-d177-4dce-9407-f18ff7f9d600" or "tingyun" |
gen_ai.span.kind | String | 操作类型详细信息 | 是 | "LLM" |
gen_ai.framework | String | 使用的框架类型 | 否 | "dify" or "langchain" .. |
Span Kind
在大模型的实际交互场景中,往往会涉及多个操作步骤 。基于LLM应用范式以及应用研发框架,目前定义了如下操作类型,这些操作类型支持扩展,不同的操作类型对应的Attributes字段会存在差异。
- WORKFLOW:一种将LLM和其他多个组件连接在一起以实现复杂任务的工具,可能包含Retrieval、Embedding、LLM调用等。
- LLM:标识对大模型的调用,例如基于SDK或OpenAPI请求不同的大模型进行推理或者文本生成等。
- AGENT:智能体场景,一种复杂的CHAIN,需要基于大模型的推理结果决策执行下一步,例如可能涉及到LLM以及Tool的多次调用,一步步决策得出最终答案。
WORKFLOW
| Attribute | 类型 | 描述 | 是否必选 | 示例 |
|---|---|---|---|---|
gen_ai.span.kind | String | 操作类型 | 是 | "WORKFLOW" |
gen_ai.framework | String | 应用框架 | 是 | "dify" |
gen_ai.session.id | String | 会话ID | 否 | "ddde34343-f93a-4477-33333-sdfsdaf" |
gen_ai.user.id | String | 应用的C端用户标识 | 否 | "e1b330b0-d177-4dce-9407-f18ff7f9d600" or "tingyun" |
gen_ai.workflow.total_steps | String | 在WORKFLOW中调用的节点数量 | 否 | "12" |
gen_ai.workflow.node_type | String | 在WORKFLOW中调用的节点类型 | 否 | "llm" |
gen_ai.workflow.index | String | 在WORKFLOW中调用的节点位置 | 否 | "6" |
gen_ai.status | String | 执行的最终状态 | 否 | "success" |
gen_ai.title | String | 自定义名称 | 否 | "智能助手" |
gen_ai.error | String | 原始错误信息 | 否 | "Failed to invoke model, Range of input length should be [1, 14000]"}!" |
gen_ai.input_text | String | API请求的内容,一般为JSON格式,有采集长度限制 | 否 | "Who Are You!" |
gen_ai.process_data | String | API请求的处理数据,有采集长度限制 | 否 | "Hello,Who Are You!" |
gen_ai.output_text | String | API返回的内容,一般为JSON格式,有采集长度限制 | 否 | "I am ChatBot" |
gen_ai.usage.input_tokens | String | Prompt中的令牌数量 | 否 | "100" |
gen_ai.usage.output_tokens | String | Completion中的令牌数量 | 否 | "200" |
gen_ai.usage.total_tokens | String | 总令牌数量,包括Prompt和Completion | 否 | "300" |
LLM & AGENT
| Attribute | 类型 | 描述 | 是否必选 | 示例 |
|---|---|---|---|---|
gen_ai.span.kind | String | 操作类型 | 是 | "LLM" or "AGENT" |
gen_ai.framework | String | 应用框架 | 是 | "dify" |
gen_ai.system | String | 大模型的提供商 | 是 | "OPENAI" |
gen_ai.stream | String | 是否以stream形式响应 | 否 | "True" |
gen_ai.session.id | String | 会话ID | 否 | "ddde34343-f93a-4477-33333-sdfsdaf" |
gen_ai.operation.name | String | 操作二级类型 | 否 | "chat" or "completion" |
gen_ai.request.id | String | 请求ID | 是 | "ddde34343-f93a-4477-33333-sdfsdaf" |
gen_ai.request.model | String | 请求所指向的LLM的名称 | 是 | "gpt-4" |
gen_ai.request.stop_sequences | String | 停止序列的字符串 | 否 | "stop" |
gen_ai.request.frequency_penalty | String | 频率惩罚 | 否 | "1.0" |
gen_ai.request.presence_penalty | String | 重复内容存在惩罚 | 否 | "1.0" |
gen_ai.request.repetition_penalty | String | 重复内容惩罚度 | 否 | "1.0" |
gen_ai.request.max_tokens | String | 请求生成的最大令牌数 | 否 | "8192" |
gen_ai.request.seed | String | 随机数种子 | 否 | "1234" |
gen_ai.request.temperature | String | LLM请求的温度设置 | 否 | "0.1" |
gen_ai.request.top_k | String | LLM请求的top_k设置 | 否 | "1" |
gen_ai.request.top_p | String | LLM请求的top_p设置 | 否 | "1" |
gen_ai.request.response_format | String | LLM请求设置的响应设置 | 否 | "json" |
gen_ai.request.incremental_output | String | LLM请求设置的响应是否为增量输出 | 否 | "True" |
gen_ai.response.id | String | 响应ID | 否 | "ddde34343-f93a-4477-33333-sdfsdaf" |
gen_ai.response.model | String | 生成响应的LLM的名称 | 是 | "gpt-4" |
gen_ai.response.finish_reason | String | 模型停止生成令牌原因 | 否 | "stop" |
gen_ai.workflow.node_type | String | 在WORKFLOW中调用的节点类型 | 否 | "llm" |
gen_ai.workflow.index | String | 在WORKFLOW中调用的节点位置 | 否 | "6" |
gen_ai.status | String | LLM调用的最终状态 | 否 | "success" |
gen_ai.title | String | LLM调用的自定义名称 | 否 | "智能助手" |
gen_ai.error | String | API响应的原始错误信息 | 否 | "Failed to invoke model" |
gen_ai.request.input_text | String | API请求的内容,一般为JSON格式,有采集长度限制 | 否 | "Who Are You!" |
gen_ai.response.output_text | String | API返回的内容,一般为JSON格式,有采集长度限制 | 否 | "I am ChatBot" |
gen_ai.usage.input_tokens | String | Prompt中的令牌数量 | 否 | "100" |
gen_ai.usage.output_tokens | String | Completion中的令牌数量 | 否 | "200" |
gen_ai.usage.total_tokens | String | 总令牌数量,包括Prompt和Completion | 否 | "300" |
gen_ai.response.first_pack_duration | String | 从请求LLM开始到LLM返回首包耗时,适用于stream场景 | 否 | "10" |