Gen AI
GenAI 属性
本文档定义了在生成式人工智能 (GenAI) 模型请求和响应的上下文中用于描述遥测数据的属性。
Attributes
| 键 | Stability | Value Type | 描述 | Example Values |
|---|---|---|---|---|
gen_ai.agent.description | 字符串 | 由应用程序提供的 GenAI 代理的自由格式描述。 | 帮助解决数学问题; 生成小说故事 | |
gen_ai.agent.id | 字符串 | GenAI 代理的唯一标识符。 | asst_5j66UpCpwteGg4YSxUnt7lPY | |
gen_ai.agent.name | 字符串 | 由应用程序提供的 GenAI 代理的可读名称。 | 数学辅导员; 小说作家 | |
gen_ai.conversation.id | 字符串 | 用于对话(会话、线程)的唯一标识符,用于存储和关联此对话中的消息。 | conv_5j66UpCpwteGg4YSxUnt7lPY | |
gen_ai.data_source.id | 字符串 | 数据源标识符。[1] | H7STPQYOND | |
gen_ai.embeddings.dimension.count | int | 生成的输出嵌入应具有的维度数。 | 512; 1024 | |
gen_ai.evaluation.explanation | 字符串 | 评估者提供的分配分数的自由格式解释。 | 响应在事实方面是准确的,但缺乏足够的细节来完全回答问题。 | |
gen_ai.evaluation.name | 字符串 | 用于 GenAI 响应的评估指标的名称。 | 相关性; 意图解析 | |
gen_ai.evaluation.score.label | 字符串 | 评估的可读标签。[2] | 相关; 不相关; 正确; 错误; 通过; 失败 | |
gen_ai.evaluation.score.value | double | 评估者返回的评估分数。 | 4.0 | |
gen_ai.input.messages | any | 作为输入提供给模型的聊天记录。[3] | [ { “role”: “user”, “parts”: [ { “type”: “text”, “content”: “Weather in Paris?" } ] }, { “role”: “assistant”, “parts”: [ { “type”: “tool_call”, “id”: “call_VSPygqKTWdrhaFErNvMV18Yl”, “name”: “get_weather”, “arguments”: { “location”: “Paris” } } ] }, { “role”: “tool”, “parts”: [ { “type”: “tool_call_response”, “id”: " call_VSPygqKTWdrhaFErNvMV18Yl”, “result”: “rainy, 57°F” } ] } ] | |
gen_ai.operation.name | 字符串 | 正在执行的操作的名称。[4] | chat;generate_content;text_completion | |
gen_ai.output.messages | any | 模型返回的消息,每条消息代表一个特定的模型响应(选择、候选)。[5] | [ { “role”: “assistant”, “parts”: [ { “type”: “text”, “content”: “The weather in Paris is currently rainy with a temperature of 57°F." } ], “finish_reason”: “stop” } ] | |
gen_ai.output.type | 字符串 | 表示客户端请求的内容类型。[6] | text;json;image | |
gen_ai.provider.name | 字符串 | 由客户端或服务器插装确定的生成式 AI 提供商。[7] | openai;gcp.gen_ai;gcp.vertex_ai | |
gen_ai.request.choice.count | int | 目标候选补全数量。 | 3 | |
gen_ai.request.encoding_formats | string[] | 嵌入操作中请求的编码格式,如果已指定。[8] | ["base64"]; ["float", "binary"] | |
gen_ai.request.frequency_penalty | double | GenAI 请求的频率惩罚设置。 | 0.1 | |
gen_ai.request.max_tokens | int | 模型为请求生成的最大令牌数。 | 100 | |
gen_ai.request.model | 字符串 | 正在向其发出请求的 GenAI 模型的名称。 | gpt-4 | |
gen_ai.request.presence_penalty | double | GenAI 请求的存在惩罚设置。 | 0.1 | |
gen_ai.request.seed | int | 具有相同种子值的请求更有可能返回相同的结果。 | 100 | |
gen_ai.request.stop_sequences | string[] | 模型将用于停止生成更多令牌的序列列表。 | ["forest", "lived"] | |
gen_ai.request.temperature | double | GenAI 请求的温度设置。 | 0.0 | |
gen_ai.request.top_k | double | GenAI 请求的 top_k 采样设置。 | 1.0 | |
gen_ai.request.top_p | double | GenAI 请求的 top_p 采样设置。 | 1.0 | |
gen_ai.response.finish_reasons | string[] | 模型停止生成令牌的原因数组,对应于收到的每个生成。 | ["stop"];["stop", "length"] | |
gen_ai.response.id | 字符串 | 补全的唯一标识符。 | chatcmpl-123 | |
gen_ai.response.model | 字符串 | 生成响应的模型名称。 | gpt-4-0613 | |
gen_ai.system_instructions | any | 与聊天记录分开提供给 GenAI 模型或指令的系统消息。[9] | [ { “type”: “text”, “content”: “You are an Agent that greet users, always use greetings tool to respond” } ]; [ { “type”: “text”, “content”: “You are a language translator." }, { “type”: “text”, “content”: “Your mission is to translate text in English to French." } ] | |
gen_ai.token.type | 字符串 | 正在计数的令牌的类型。 | input; output | |
gen_ai.tool.call.arguments | any | 传递给工具调用的参数。[10] | { “location”: “San Francisco?”, “date”: “2025-10-01” } | |
gen_ai.tool.call.id | 字符串 | 工具调用的标识符。 | call_mszuSIzqtI65i1wAUOE8w5H4 | |
gen_ai.tool.call.result | any | 工具调用返回的结果(如果有且执行成功)。[11] | { “temperature_range”: { “high”: 75, “low”: 60 }, “conditions”: “sunny” } | |
gen_ai.tool.definitions | any | GenAI 代理或模型可用的源系统工具定义列表。[12] | [ { “type”: “function”, “name”: “get_current_weather”, “description”: “Get the current weather in a given location”, “parameters”: { “type”: “object”, “properties”: { “location”: { “type”: “string”, “description”: “The city and state, e.g. San Francisco, CA” }, “unit”: { “type”: “string”, “enum”: [ “celsius”, “fahrenheit” ] } }, “required”: [ “location”, “unit” ] } } ] | |
gen_ai.tool.description | 字符串 | 工具描述。 | Multiply two numbers | |
gen_ai.tool.name | 字符串 | 代理使用的工具名称。 | Flights | |
gen_ai.tool.type | 字符串 | 代理使用的工具类型 [13] | function; extension; datastore | |
gen_ai.usage.input_tokens | int | GenAI 输入(提示)使用的令牌数。 | 100 | |
gen_ai.usage.output_tokens | int | GenAI 响应(补全)使用的令牌数。 | 180 |
[1] gen_ai.data_source.id: 数据源由 AI 代理和 RAG 应用程序用于存储地面数据。数据源可以是外部数据库、对象存储、文档集合、网站或 GenAI 代理或应用程序使用的任何其他存储系统。gen_ai.data_source.id 应匹配 GenAI 系统使用的标识符,而不是外部存储(如数据库或对象存储)的特定名称。引用 gen_ai.data_source.id 的语义约定也可能利用其他属性,例如 db.*,来进一步识别和描述数据源。
[2] gen_ai.evaluation.score.label: 此属性提供了评估者生成的评估分数的易读解释。例如,分数 1 在一个评估系统中可能意味着“相关”,而在另一个系统中可能意味着“不相关”,具体取决于评分范围和评估者。标签应具有低基数。可能的值取决于所使用的评估指标和评估者;实现应记录可能的值。
[3] gen_ai.input.messages: 插桩必须遵循 Input messages JSON schema。当属性在事件上记录时,它必须以结构化形式记录。当在 span 上记录时,如果不支持结构化格式,则可以作为 JSON 字符串记录,否则应以结构化形式记录。
消息必须按发送给模型的顺序提供。仪器可以提供一种方法供用户过滤或截断输入消息。
此属性很可能包含敏感信息,包括用户/PII 数据。
有关更多详细信息,请参阅 在属性上记录内容 部分。
[4] gen_ai.operation.name: 如果预定义值之一适用,但特定系统使用不同的名称,建议在特定 GenAI 系统的语义约定中记录它,并在插桩中使用系统特定的名称。如果未记录不同的名称,插桩库应使用适用的预定义值。
[5] gen_ai.output.messages: 插桩必须遵循 Output messages JSON schema
每条消息代表模型生成的单个输出选择/候选。每条消息恰好对应一个生成(选择/候选),反之亦然 - 一个选择不能跨越多条消息,或者一条消息不能包含来自多个选择的部分。
当属性记录在事件上时,它必须以结构化形式记录。当记录在跨度上时,如果不支持结构化格式,它可以被记录为 JSON 字符串,否则应以结构化形式记录。
仪器可以提供一种方法供用户过滤或截断输出消息。
此属性很可能包含敏感信息,包括用户/PII 数据。
有关更多详细信息,请参阅 在属性上记录内容 部分。
[6] gen_ai.output.type: 当客户端请求特定类型的输出时,应使用此属性。模型可能会返回零个或多个此类型的输出。此属性指定输出模态,而不是实际输出格式。例如,如果请求了图像,则实际输出可能是指向图像文件的 URL。未来的输出格式详细信息可能会在 gen_ai.output.{type}.* 属性中记录。
[7] gen_ai.provider.name: 应根据插桩的最佳知识设置此属性,并且可能与实际模型提供商不同。
通过 OpenAI REST API 和相应的客户端库可以访问包括 Azure OpenAI、Gemini 和 AI 托管平台在内的多个提供商,但它们可能会代理或托管来自不同提供商的模型。
gen_ai.request.model、gen_ai.response.model 和 server.address 属性可能有助于识别实际使用的系统。
gen_ai.provider.name 属性充当一个区分器,用于在 GenAI 语义约定中识别该提供商特定的 GenAI 遥测格式。它应与特定于提供商的属性和信号一致。例如,与 AWS Bedrock 相关的 GenAI 跨度、指标和事件应将 gen_ai.provider.name 设置为 aws.bedrock,并包含适用的 aws.bedrock.* 属性,并且不应包含 openai.* 属性。
[8] gen_ai.request.encoding_formats: 在某些 GenAI 系统中,编码格式称为嵌入类型。此外,一些 GenAI 系统每个请求只接受一种格式。
[9] gen_ai.system_instructions: 当相应的提供商或 API 允许在聊天记录之外提供系统指令或消息时,应使用此属性。
作为聊天记录一部分的指令应记录在 gen_ai.input.messages 属性中,而不是此处。
仪器必须遵循 System instructions JSON schema。
当记录在跨度上时,如果不支持结构化格式,它可以被记录为 JSON 字符串,否则应以结构化形式记录。
仪器可以提供一种方法供用户过滤或截断系统指令。
此属性可能包含敏感信息。
有关更多详细信息,请参阅 在属性上记录内容 部分。
[10] gen_ai.tool.call.arguments: > [!WARNING]
此属性可能包含敏感信息。
预期为对象——如果插桩可用序列化字符串,插桩应尽最大努力将其反序列化为对象。当在 span 上记录时,如果不支持结构化格式,则可以作为 JSON 字符串记录,否则应以结构化形式记录。
[11] gen_ai.tool.call.result: > [!WARNING]
此属性可能包含敏感信息。
预期为对象——如果插桩可用序列化字符串,插桩应尽最大努力将其反序列化为对象。当在 span 上记录时,如果不支持结构化格式,则可以作为 JSON 字符串记录,否则应以结构化形式记录。
[12] gen_ai.tool.definitions: 此属性的值匹配源系统工具定义格式。
预计它是一个对象数组,其中每个对象代表一个工具定义。如果仪器可用序列化字符串,仪器应尽最大努力将其反序列化为数组。当记录在跨度上时,如果不支持结构化格式,它可以被记录为 JSON 字符串,否则应以结构化形式记录。
由于此属性可能很大,因此不建议默认填充它。仪器可以提供一种启用填充此属性的方法。
[13] gen_ai.tool.type: 扩展:在代理端执行的工具,用于直接调用外部 API,弥合代理与现实世界系统之间的差距。代理端操作是指代理在服务器上或代理控制的环境内执行的操作。函数:在客户端执行的工具,代理为预定义函数生成参数,客户端执行逻辑。客户端操作是指在用户端或客户端应用程序内采取的操作。数据存储:代理用于访问和查询结构化或非结构化的外部数据以进行检索增强任务或知识更新的工具。
gen_ai.operation.name 具有以下知名值列表。如果其中之一适用,则必须使用相应的值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
chat | 聊天完成操作,例如 OpenAI Chat API | |
create_agent | 创建 GenAI 代理 | |
embeddings | 嵌入操作,例如 OpenAI 创建嵌入 API | |
execute_tool | 执行工具 | |
generate_content | 多模态内容生成操作,例如 Gemini 生成内容 | |
invoke_agent | 调用 GenAI 代理 | |
text_completion | 文本补全操作,例如 OpenAI Completions API (Legacy) |
gen_ai.output.type 具有以下知名值列表。如果其中之一适用,则必须使用相应的值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
image | Image | |
json | 具有已知或未知架构的 JSON 对象 | |
speech | Speech | |
text | 纯文本 |
gen_ai.provider.name 具有以下知名值列表。如果其中之一适用,则必须使用相应的值;否则,可以使用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
anthropic | Anthropic | |
aws.bedrock | AWS Bedrock | |
azure.ai.inference | Azure AI Inference | |
azure.ai.openai | Azure OpenAI | |
cohere | Cohere | |
deepseek | DeepSeek | |
gcp.gemini | Gemini [14] | |
gcp.gen_ai | 任何 Google 生成式 AI 端点 [15] | |
gcp.vertex_ai | Vertex AI [16] | |
groq | Groq | |
ibm.watsonx.ai | IBM Watsonx AI | |
mistral_ai | Mistral AI | |
openai | OpenAI | |
perplexity | Perplexity | |
x_ai | xAI |
[14]: 用于访问 'generativelanguage.googleapis.com' 端点。也称为 AI Studio API。
[15]: 当无法确定特定后端时可能使用。
[16]: 用于访问 'aiplatform.googleapis.com' 端点。
gen_ai.token.type 具有以下一系列已知值。如果其中一个适用,则必须使用相应的值;否则,可以改用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
input | 输入令牌(提示、输入等) | |
output | 输出令牌(完成、响应等) |
已弃用的 GenAI 属性
描述已弃用的 gen_ai 属性。
Attributes
| 键 | Stability | Value Type | 描述 | Example Values |
|---|---|---|---|---|
gen_ai.completion | 已移除,目前没有替代品。 | 字符串 | 已弃用,请使用 Event API 来报告完成内容。 | [{'role': 'assistant', 'content': 'The capital of France is Paris.'}] |
gen_ai.prompt | 已移除,目前没有替代品。 | 字符串 | 已弃用,请使用 Event API 来报告提示内容。 | [{'role': 'user', 'content': 'What is the capital of France?'}] |
gen_ai.system | 已替换为 gen_ai.provider.name。 | 字符串 | 已弃用,请改用 gen_ai.provider.name。 | openai;gcp.gen_ai;gcp.vertex_ai |
gen_ai.usage.completion_tokens | 已替换为 gen_ai.usage.output_tokens。 | int | 已弃用,请改用 gen_ai.usage.output_tokens。 | 42 |
gen_ai.usage.prompt_tokens | 已替换为 gen_ai.usage.input_tokens。 | int | 已弃用,请改用 gen_ai.usage.input_tokens。 | 42 |
gen_ai.system 具有以下一系列已知值。如果其中一个适用,则必须使用相应的值;否则,可以改用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
anthropic | Anthropic | |
aws.bedrock | AWS Bedrock | |
azure.ai.inference | Azure AI Inference | |
azure.ai.openai | Azure OpenAI | |
cohere | Cohere | |
deepseek | DeepSeek | |
gcp.gemini | Gemini [17] | |
gcp.gen_ai | 任何 Google 生成式 AI 端点 [18] | |
gcp.vertex_ai | Vertex AI [19] | |
groq | Groq | |
ibm.watsonx.ai | IBM Watsonx AI | |
mistral_ai | Mistral AI | |
openai | OpenAI | |
perplexity | Perplexity | |
xai | xAI |
[17]: 这指的是 'generativelanguage.googleapis.com' 端点。也称为 AI Studio API。可以使用以 'gcp.gen_ai.' 为前缀的通用属性。
[18]: 当不知道特定后端时可能使用。可以使用以 'gcp.gen_ai.' 为前缀的通用属性。
[19]: 这指的是 'aiplatform.googleapis.com' 端点。可以使用以 'gcp.gen_ai.' 为前缀的通用属性。
已弃用的 OpenAI GenAI 属性
描述已弃用的 gen_ai.openai 属性。
Attributes
| 键 | Stability | Value Type | 描述 | Example Values |
|---|---|---|---|---|
gen_ai.openai.request.response_format | 已替换为 gen_ai.output.type。 | 字符串 | 已弃用,请使用 gen_ai.output.type。 | text; json_object; json_schema |
gen_ai.openai.request.seed | 已替换为 gen_ai.request.seed。 | int | 已弃用,请使用 gen_ai.request.seed。 | 100 |
gen_ai.openai.request.service_tier | 已替换为 openai.request.service_tier。 | 字符串 | 已弃用,请使用 openai.request.service_tier。 | auto; default |
gen_ai.openai.response.service_tier | 已替换为 openai.response.service_tier。 | 字符串 | 已弃用,请使用 openai.response.service_tier。 | scale; default |
gen_ai.openai.response.system_fingerprint | 已替换为 openai.response.system_fingerprint。 | 字符串 | 已弃用,请使用 openai.response.system_fingerprint。 | fp_44709d6fcb |
gen_ai.openai.request.response_format 具有以下一系列已知值。如果其中一个适用,则必须使用相应的值;否则,可以改用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
json_object | JSON 对象响应格式 | |
json_schema | JSON schema 响应格式 | |
text | 文本响应格式 |
gen_ai.openai.request.service_tier 具有以下一系列已知值。如果其中一个适用,则必须使用相应的值;否则,可以改用自定义值。
| 值 | 描述 | Stability |
|---|---|---|
auto | 系统将使用缩放层信用额度,直到耗尽为止。 | |
default | 系统将使用默认缩放层。 |