Introduce generic `gen_ai.output.type` instead of `gen_ai.openai.request.response_format` (#1757)
Co-authored-by: Trent Mick <trentm@gmail.com>
This commit is contained in:
parent
31b9301f5d
commit
dcb30bfdae
|
|
@ -0,0 +1,4 @@
|
|||
change_type: breaking
|
||||
component: gen-ai
|
||||
note: "Introduce `gen_ai.output.type`and deprecate `gen_ai.openai.request.response_format`"
|
||||
issues: [1757]
|
||||
|
|
@ -15,7 +15,8 @@ This document defines the attributes used to describe telemetry in the context o
|
|||
| Attribute | Type | Description | Examples | Stability |
|
||||
|---|---|---|---|---|
|
||||
| <a id="gen-ai-operation-name" href="#gen-ai-operation-name">`gen_ai.operation.name`</a> | string | The name of the operation being performed. [1] | `chat`; `text_completion`; `embeddings` |  |
|
||||
| <a id="gen-ai-request-encoding-formats" href="#gen-ai-request-encoding-formats">`gen_ai.request.encoding_formats`</a> | string[] | The encoding formats requested in an embeddings operation, if specified. [2] | `["base64"]`; `["float", "binary"]` |  |
|
||||
| <a id="gen-ai-output-type" href="#gen-ai-output-type">`gen_ai.output.type`</a> | string | Represents the content type requested by the client. [2] | `text`; `json`; `image` |  |
|
||||
| <a id="gen-ai-request-encoding-formats" href="#gen-ai-request-encoding-formats">`gen_ai.request.encoding_formats`</a> | string[] | The encoding formats requested in an embeddings operation, if specified. [3] | `["base64"]`; `["float", "binary"]` |  |
|
||||
| <a id="gen-ai-request-frequency-penalty" href="#gen-ai-request-frequency-penalty">`gen_ai.request.frequency_penalty`</a> | double | The frequency penalty setting for the GenAI request. | `0.1` |  |
|
||||
| <a id="gen-ai-request-max-tokens" href="#gen-ai-request-max-tokens">`gen_ai.request.max_tokens`</a> | int | The maximum number of tokens the model generates for a request. | `100` |  |
|
||||
| <a id="gen-ai-request-model" href="#gen-ai-request-model">`gen_ai.request.model`</a> | string | The name of the GenAI model a request is being made to. | `gpt-4` |  |
|
||||
|
|
@ -28,16 +29,20 @@ This document defines the attributes used to describe telemetry in the context o
|
|||
| <a id="gen-ai-response-finish-reasons" href="#gen-ai-response-finish-reasons">`gen_ai.response.finish_reasons`</a> | string[] | Array of reasons the model stopped generating tokens, corresponding to each generation received. | `["stop"]`; `["stop", "length"]` |  |
|
||||
| <a id="gen-ai-response-id" href="#gen-ai-response-id">`gen_ai.response.id`</a> | string | The unique identifier for the completion. | `chatcmpl-123` |  |
|
||||
| <a id="gen-ai-response-model" href="#gen-ai-response-model">`gen_ai.response.model`</a> | string | The name of the model that generated the response. | `gpt-4-0613` |  |
|
||||
| <a id="gen-ai-system" href="#gen-ai-system">`gen_ai.system`</a> | string | The Generative AI product as identified by the client or server instrumentation. [3] | `openai` |  |
|
||||
| <a id="gen-ai-system" href="#gen-ai-system">`gen_ai.system`</a> | string | The Generative AI product as identified by the client or server instrumentation. [4] | `openai` |  |
|
||||
| <a id="gen-ai-token-type" href="#gen-ai-token-type">`gen_ai.token.type`</a> | string | The type of token being counted. | `input`; `output` |  |
|
||||
| <a id="gen-ai-usage-input-tokens" href="#gen-ai-usage-input-tokens">`gen_ai.usage.input_tokens`</a> | int | The number of tokens used in the GenAI input (prompt). | `100` |  |
|
||||
| <a id="gen-ai-usage-output-tokens" href="#gen-ai-usage-output-tokens">`gen_ai.usage.output_tokens`</a> | int | The number of tokens used in the GenAI response (completion). | `180` |  |
|
||||
|
||||
**[1] `gen_ai.operation.name`:** If one of the predefined values applies, but specific system uses a different name it's RECOMMENDED to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries SHOULD use applicable predefined value.
|
||||
|
||||
**[2] `gen_ai.request.encoding_formats`:** In some GenAI systems the encoding formats are called embedding types. Also, some GenAI systems only accept a single format per request.
|
||||
**[2] `gen_ai.output.type`:** This attribute SHOULD be used when the client requests output of a specific type. The model may return zero or more outputs of this type.
|
||||
This attribute specifies the output modality and not the actual output format. For example, if an image is requested, the actual output could be a URL pointing to an image file.
|
||||
Additional output format details may be recorded in the future in the `gen_ai.output.{type}.*` attributes.
|
||||
|
||||
**[3] `gen_ai.system`:** The `gen_ai.system` describes a family of GenAI models with specific model identified
|
||||
**[3] `gen_ai.request.encoding_formats`:** In some GenAI systems the encoding formats are called embedding types. Also, some GenAI systems only accept a single format per request.
|
||||
|
||||
**[4] `gen_ai.system`:** The `gen_ai.system` describes a family of GenAI models with specific model identified
|
||||
by `gen_ai.request.model` and `gen_ai.response.model` attributes.
|
||||
|
||||
The actual GenAI product may differ from the one identified by the client.
|
||||
|
|
@ -61,6 +66,17 @@ If none of these options apply, the `gen_ai.system` SHOULD be set to `_OTHER`.
|
|||
|
||||
---
|
||||
|
||||
`gen_ai.output.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||
|
||||
| Value | Description | Stability |
|
||||
|---|---|---|
|
||||
| `image` | Image |  |
|
||||
| `json` | JSON object with known or unknown schema |  |
|
||||
| `speech` | Speech |  |
|
||||
| `text` | Plain text |  |
|
||||
|
||||
---
|
||||
|
||||
`gen_ai.system` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||
|
||||
| Value | Description | Stability |
|
||||
|
|
@ -91,27 +107,16 @@ If none of these options apply, the `gen_ai.system` SHOULD be set to `_OTHER`.
|
|||
|
||||
## OpenAI Attributes
|
||||
|
||||
Thie group defines attributes for OpenAI.
|
||||
This group defines attributes for OpenAI.
|
||||
|
||||
| Attribute | Type | Description | Examples | Stability |
|
||||
|---|---|---|---|---|
|
||||
| <a id="gen-ai-openai-request-response-format" href="#gen-ai-openai-request-response-format">`gen_ai.openai.request.response_format`</a> | string | The response format that is requested. | `json` |  |
|
||||
| <a id="gen-ai-openai-request-service-tier" href="#gen-ai-openai-request-service-tier">`gen_ai.openai.request.service_tier`</a> | string | The service tier requested. May be a specific tier, default, or auto. | `auto`; `default` |  |
|
||||
| <a id="gen-ai-openai-response-service-tier" href="#gen-ai-openai-response-service-tier">`gen_ai.openai.response.service_tier`</a> | string | The service tier used for the response. | `scale`; `default` |  |
|
||||
| <a id="gen-ai-openai-response-system-fingerprint" href="#gen-ai-openai-response-system-fingerprint">`gen_ai.openai.response.system_fingerprint`</a> | string | A fingerprint to track any eventual change in the Generative AI environment. | `fp_44709d6fcb` |  |
|
||||
|
||||
---
|
||||
|
||||
`gen_ai.openai.request.response_format` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||
|
||||
| Value | Description | Stability |
|
||||
|---|---|---|
|
||||
| `json_object` | JSON object response format |  |
|
||||
| `json_schema` | JSON schema response format |  |
|
||||
| `text` | Text response format |  |
|
||||
|
||||
---
|
||||
|
||||
`gen_ai.openai.request.service_tier` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||
|
||||
| Value | Description | Stability |
|
||||
|
|
@ -136,4 +141,15 @@ Describes deprecated `gen_ai.openai` attributes.
|
|||
|
||||
| Attribute | Type | Description | Examples | Stability |
|
||||
|---|---|---|---|---|
|
||||
| <a id="gen-ai-openai-request-response-format" href="#gen-ai-openai-request-response-format">`gen_ai.openai.request.response_format`</a> | string | Deprecated, use `gen_ai.output.type`. | `text`; `json_object`; `json_schema` | <br>Replaced by `gen_ai.output.type`. |
|
||||
| <a id="gen-ai-openai-request-seed" href="#gen-ai-openai-request-seed">`gen_ai.openai.request.seed`</a> | int | Deprecated, use `gen_ai.request.seed`. | `100` | <br>Replaced by `gen_ai.request.seed` attribute. |
|
||||
|
||||
---
|
||||
|
||||
`gen_ai.openai.request.response_format` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||
|
||||
| Value | Description | Stability |
|
||||
|---|---|---|
|
||||
| `json_object` | JSON object response format |  |
|
||||
| `json_schema` | JSON schema response format |  |
|
||||
| `text` | Text response format |  |
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ The Semantic Conventions for [Azure AI Inference](https://learn.microsoft.com/az
|
|||
|
||||
### Attributes
|
||||
|
||||
<!-- semconv trace.gen_ai.az.ai.inference.client -->
|
||||
<!-- semconv span.gen_ai.az.ai.inference.client -->
|
||||
<!-- NOTE: THIS TEXT IS AUTOGENERATED. DO NOT EDIT BY HAND. -->
|
||||
<!-- see templates/registry/markdown/snippet.md.j2 -->
|
||||
<!-- prettier-ignore-start -->
|
||||
|
|
@ -25,11 +25,12 @@ The Semantic Conventions for [Azure AI Inference](https://learn.microsoft.com/az
|
|||
|---|---|---|---|---|---|
|
||||
| [`gen_ai.operation.name`](/docs/attributes-registry/gen-ai.md) | string | The name of the operation being performed. [1] | `chat`; `text_completion`; `embeddings` | `Required` |  |
|
||||
| [`error.type`](/docs/attributes-registry/error.md) | string | Describes a class of error the operation ended with. [2] | `timeout`; `java.net.UnknownHostException`; `server_certificate_invalid`; `500` | `Conditionally Required` if the operation ended in an error |  |
|
||||
| [`gen_ai.request.model`](/docs/attributes-registry/gen-ai.md) | string | The name of the GenAI model a request is being made to. [3] | `gpt-4` | `Conditionally Required` If available. |  |
|
||||
| [`gen_ai.request.seed`](/docs/attributes-registry/gen-ai.md) | int | Requests with same seed value more likely to return same result. | `100` | `Conditionally Required` if appliable and if the request includes a seed |  |
|
||||
| [`server.port`](/docs/attributes-registry/server.md) | int | GenAI server port. [4] | `80`; `8080`; `443` | `Conditionally Required` If not default (443). |  |
|
||||
| [`az.namespace`](/docs/attributes-registry/azure.md) | string | [Azure Resource Provider Namespace](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers) as recognized by the client. [5] | `Microsoft.CognitiveServices` | `Recommended` |  |
|
||||
| [`gen_ai.request.encoding_formats`](/docs/attributes-registry/gen-ai.md) | string[] | The encoding formats requested in an embeddings operation, if specified. [6] | `["base64"]`; `["float", "binary"]` | `Recommended` |  |
|
||||
| [`gen_ai.output.type`](/docs/attributes-registry/gen-ai.md) | string | Represents the content type requested by the client. [3] | `text`; `json`; `image` | `Conditionally Required` [4] |  |
|
||||
| [`gen_ai.request.model`](/docs/attributes-registry/gen-ai.md) | string | The name of the GenAI model a request is being made to. [5] | `gpt-4` | `Conditionally Required` If available. |  |
|
||||
| [`gen_ai.request.seed`](/docs/attributes-registry/gen-ai.md) | int | Requests with same seed value more likely to return same result. | `100` | `Conditionally Required` if applicable and if the request includes a seed |  |
|
||||
| [`server.port`](/docs/attributes-registry/server.md) | int | GenAI server port. [6] | `80`; `8080`; `443` | `Conditionally Required` If not default (443). |  |
|
||||
| [`az.namespace`](/docs/attributes-registry/azure.md) | string | [Azure Resource Provider Namespace](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-services-resource-providers) as recognized by the client. [7] | `Microsoft.CognitiveServices` | `Recommended` |  |
|
||||
| [`gen_ai.request.encoding_formats`](/docs/attributes-registry/gen-ai.md) | string[] | The encoding formats requested in an embeddings operation, if specified. [8] | `["base64"]`; `["float", "binary"]` | `Recommended` |  |
|
||||
| [`gen_ai.request.frequency_penalty`](/docs/attributes-registry/gen-ai.md) | double | The frequency penalty setting for the GenAI request. | `0.1` | `Recommended` |  |
|
||||
| [`gen_ai.request.max_tokens`](/docs/attributes-registry/gen-ai.md) | int | The maximum number of tokens the model generates for a request. | `100` | `Recommended` |  |
|
||||
| [`gen_ai.request.presence_penalty`](/docs/attributes-registry/gen-ai.md) | double | The presence penalty setting for the GenAI request. | `0.1` | `Recommended` |  |
|
||||
|
|
@ -38,10 +39,10 @@ The Semantic Conventions for [Azure AI Inference](https://learn.microsoft.com/az
|
|||
| [`gen_ai.request.top_p`](/docs/attributes-registry/gen-ai.md) | double | The top_p sampling setting for the GenAI request. | `1.0` | `Recommended` |  |
|
||||
| [`gen_ai.response.finish_reasons`](/docs/attributes-registry/gen-ai.md) | string[] | Array of reasons the model stopped generating tokens, corresponding to each generation received. | `["stop"]`; `["stop", "length"]` | `Recommended` |  |
|
||||
| [`gen_ai.response.id`](/docs/attributes-registry/gen-ai.md) | string | The unique identifier for the completion. | `chatcmpl-123` | `Recommended` |  |
|
||||
| [`gen_ai.response.model`](/docs/attributes-registry/gen-ai.md) | string | The name of the model that generated the response. [7] | `gpt-4-0613` | `Recommended` |  |
|
||||
| [`gen_ai.response.model`](/docs/attributes-registry/gen-ai.md) | string | The name of the model that generated the response. [9] | `gpt-4-0613` | `Recommended` |  |
|
||||
| [`gen_ai.usage.input_tokens`](/docs/attributes-registry/gen-ai.md) | int | The number of prompt tokens as reported in the usage prompt_tokens property of the response. | `100` | `Recommended` |  |
|
||||
| [`gen_ai.usage.output_tokens`](/docs/attributes-registry/gen-ai.md) | int | The number of completion tokens as reported in the usage completion_tokens property of the response. | `180` | `Recommended` |  |
|
||||
| [`server.address`](/docs/attributes-registry/server.md) | string | GenAI server address. [8] | `example.com`; `10.1.2.80`; `/tmp/my.sock` | `Recommended` |  |
|
||||
| [`server.address`](/docs/attributes-registry/server.md) | string | GenAI server address. [10] | `example.com`; `10.1.2.80`; `/tmp/my.sock` | `Recommended` |  |
|
||||
|
||||
**[1] `gen_ai.operation.name`:** If one of the predefined values applies, but specific system uses a different name it's RECOMMENDED to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries SHOULD use applicable predefined value.
|
||||
|
||||
|
|
@ -49,17 +50,23 @@ The Semantic Conventions for [Azure AI Inference](https://learn.microsoft.com/az
|
|||
the canonical name of exception that occurred, or another low-cardinality error identifier.
|
||||
Instrumentations SHOULD document the list of errors they report.
|
||||
|
||||
**[3] `gen_ai.request.model`:** The name of the GenAI model a request is being made to. If the model is supplied by a vendor, then the value must be the exact name of the model requested. If the model is a fine-tuned custom model, the value should have a more specific name than the base model that's been fine-tuned.
|
||||
**[3] `gen_ai.output.type`:** This attribute SHOULD be set to the output type requested by the client: - `json` for structured outputs with defined or undefined schema - `image` for image output - `speech` for speech output - `text` for plain text output
|
||||
The attribute specifies the output modality and not the actual output format. For example, if an image is requested, the actual output could be a URL pointing to an image file.
|
||||
Additional output format details may be recorded in the future in the `gen_ai.output.{type}.*` attributes.
|
||||
|
||||
**[4] `server.port`:** When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries, for example proxies, if it's available.
|
||||
**[4] `gen_ai.output.type`:** when applicable and if the request includes an output format.
|
||||
|
||||
**[5] `az.namespace`:** When `az.namespace` attribute is populated, it MUST be set to `Microsoft.CognitiveServices` for all operations performed by Azure AI Inference clients.
|
||||
**[5] `gen_ai.request.model`:** The name of the GenAI model a request is being made to. If the model is supplied by a vendor, then the value must be the exact name of the model requested. If the model is a fine-tuned custom model, the value should have a more specific name than the base model that's been fine-tuned.
|
||||
|
||||
**[6] `gen_ai.request.encoding_formats`:** In some GenAI systems the encoding formats are called embedding types. Also, some GenAI systems only accept a single format per request.
|
||||
**[6] `server.port`:** When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries, for example proxies, if it's available.
|
||||
|
||||
**[7] `gen_ai.response.model`:** If available. The name of the GenAI model that provided the response. If the model is supplied by a vendor, then the value must be the exact name of the model actually used. If the model is a fine-tuned custom model, the value should have a more specific name than the base model that's been fine-tuned.
|
||||
**[7] `az.namespace`:** When `az.namespace` attribute is populated, it MUST be set to `Microsoft.CognitiveServices` for all operations performed by Azure AI Inference clients.
|
||||
|
||||
**[8] `server.address`:** When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent the server address behind any intermediaries, for example proxies, if it's available.
|
||||
**[8] `gen_ai.request.encoding_formats`:** In some GenAI systems the encoding formats are called embedding types. Also, some GenAI systems only accept a single format per request.
|
||||
|
||||
**[9] `gen_ai.response.model`:** If available. The name of the GenAI model that provided the response. If the model is supplied by a vendor, then the value must be the exact name of the model actually used. If the model is a fine-tuned custom model, the value should have a more specific name than the base model that's been fine-tuned.
|
||||
|
||||
**[10] `server.address`:** When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent the server address behind any intermediaries, for example proxies, if it's available.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -79,6 +86,17 @@ Instrumentations SHOULD document the list of errors they report.
|
|||
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
|
||||
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
|
||||
|
||||
---
|
||||
|
||||
`gen_ai.output.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||
|
||||
| Value | Description | Stability |
|
||||
|---|---|---|
|
||||
| `image` | Image |  |
|
||||
| `json` | JSON object with known or unknown schema |  |
|
||||
| `speech` | Speech |  |
|
||||
| `text` | Plain text |  |
|
||||
|
||||
<!-- markdownlint-restore -->
|
||||
<!-- prettier-ignore-end -->
|
||||
<!-- END AUTOGENERATED TEXT -->
|
||||
|
|
|
|||
|
|
@ -51,10 +51,11 @@ Many of these attributes only apply to specific GenAI operations. For example, G
|
|||
| [`gen_ai.operation.name`](/docs/attributes-registry/gen-ai.md) | string | The name of the operation being performed. [1] | `chat`; `text_completion`; `embeddings` | `Required` |  |
|
||||
| [`gen_ai.system`](/docs/attributes-registry/gen-ai.md) | string | The Generative AI product as identified by the client or server instrumentation. [2] | `openai` | `Required` |  |
|
||||
| [`error.type`](/docs/attributes-registry/error.md) | string | Describes a class of error the operation ended with. [3] | `timeout`; `java.net.UnknownHostException`; `server_certificate_invalid`; `500` | `Conditionally Required` if the operation ended in an error |  |
|
||||
| [`gen_ai.request.model`](/docs/attributes-registry/gen-ai.md) | string | The name of the GenAI model a request is being made to. [4] | `gpt-4` | `Conditionally Required` If available. |  |
|
||||
| [`gen_ai.request.seed`](/docs/attributes-registry/gen-ai.md) | int | Requests with same seed value more likely to return same result. | `100` | `Conditionally Required` if appliable and if the request includes a seed |  |
|
||||
| [`server.port`](/docs/attributes-registry/server.md) | int | GenAI server port. [5] | `80`; `8080`; `443` | `Conditionally Required` If `server.address` is set. |  |
|
||||
| [`gen_ai.request.encoding_formats`](/docs/attributes-registry/gen-ai.md) | string[] | The encoding formats requested in an embeddings operation, if specified. [6] | `["base64"]`; `["float", "binary"]` | `Recommended` |  |
|
||||
| [`gen_ai.output.type`](/docs/attributes-registry/gen-ai.md) | string | Represents the content type requested by the client. [4] | `text`; `json`; `image` | `Conditionally Required` [5] |  |
|
||||
| [`gen_ai.request.model`](/docs/attributes-registry/gen-ai.md) | string | The name of the GenAI model a request is being made to. [6] | `gpt-4` | `Conditionally Required` If available. |  |
|
||||
| [`gen_ai.request.seed`](/docs/attributes-registry/gen-ai.md) | int | Requests with same seed value more likely to return same result. | `100` | `Conditionally Required` if applicable and if the request includes a seed |  |
|
||||
| [`server.port`](/docs/attributes-registry/server.md) | int | GenAI server port. [7] | `80`; `8080`; `443` | `Conditionally Required` If `server.address` is set. |  |
|
||||
| [`gen_ai.request.encoding_formats`](/docs/attributes-registry/gen-ai.md) | string[] | The encoding formats requested in an embeddings operation, if specified. [8] | `["base64"]`; `["float", "binary"]` | `Recommended` |  |
|
||||
| [`gen_ai.request.frequency_penalty`](/docs/attributes-registry/gen-ai.md) | double | The frequency penalty setting for the GenAI request. | `0.1` | `Recommended` |  |
|
||||
| [`gen_ai.request.max_tokens`](/docs/attributes-registry/gen-ai.md) | int | The maximum number of tokens the model generates for a request. | `100` | `Recommended` |  |
|
||||
| [`gen_ai.request.presence_penalty`](/docs/attributes-registry/gen-ai.md) | double | The presence penalty setting for the GenAI request. | `0.1` | `Recommended` |  |
|
||||
|
|
@ -64,10 +65,10 @@ Many of these attributes only apply to specific GenAI operations. For example, G
|
|||
| [`gen_ai.request.top_p`](/docs/attributes-registry/gen-ai.md) | double | The top_p sampling setting for the GenAI request. | `1.0` | `Recommended` |  |
|
||||
| [`gen_ai.response.finish_reasons`](/docs/attributes-registry/gen-ai.md) | string[] | Array of reasons the model stopped generating tokens, corresponding to each generation received. | `["stop"]`; `["stop", "length"]` | `Recommended` |  |
|
||||
| [`gen_ai.response.id`](/docs/attributes-registry/gen-ai.md) | string | The unique identifier for the completion. | `chatcmpl-123` | `Recommended` |  |
|
||||
| [`gen_ai.response.model`](/docs/attributes-registry/gen-ai.md) | string | The name of the model that generated the response. [7] | `gpt-4-0613` | `Recommended` |  |
|
||||
| [`gen_ai.response.model`](/docs/attributes-registry/gen-ai.md) | string | The name of the model that generated the response. [9] | `gpt-4-0613` | `Recommended` |  |
|
||||
| [`gen_ai.usage.input_tokens`](/docs/attributes-registry/gen-ai.md) | int | The number of tokens used in the GenAI input (prompt). | `100` | `Recommended` |  |
|
||||
| [`gen_ai.usage.output_tokens`](/docs/attributes-registry/gen-ai.md) | int | The number of tokens used in the GenAI response (completion). | `180` | `Recommended` |  |
|
||||
| [`server.address`](/docs/attributes-registry/server.md) | string | GenAI server address. [8] | `example.com`; `10.1.2.80`; `/tmp/my.sock` | `Recommended` |  |
|
||||
| [`server.address`](/docs/attributes-registry/server.md) | string | GenAI server address. [10] | `example.com`; `10.1.2.80`; `/tmp/my.sock` | `Recommended` |  |
|
||||
|
||||
**[1] `gen_ai.operation.name`:** If one of the predefined values applies, but specific system uses a different name it's RECOMMENDED to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries SHOULD use applicable predefined value.
|
||||
|
||||
|
|
@ -87,15 +88,21 @@ If none of these options apply, the `gen_ai.system` SHOULD be set to `_OTHER`.
|
|||
the canonical name of exception that occurred, or another low-cardinality error identifier.
|
||||
Instrumentations SHOULD document the list of errors they report.
|
||||
|
||||
**[4] `gen_ai.request.model`:** The name of the GenAI model a request is being made to. If the model is supplied by a vendor, then the value must be the exact name of the model requested. If the model is a fine-tuned custom model, the value should have a more specific name than the base model that's been fine-tuned.
|
||||
**[4] `gen_ai.output.type`:** This attribute SHOULD be used when the client requests output of a specific type. The model may return zero or more outputs of this type.
|
||||
This attribute specifies the output modality and not the actual output format. For example, if an image is requested, the actual output could be a URL pointing to an image file.
|
||||
Additional output format details may be recorded in the future in the `gen_ai.output.{type}.*` attributes.
|
||||
|
||||
**[5] `server.port`:** When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries, for example proxies, if it's available.
|
||||
**[5] `gen_ai.output.type`:** when applicable and if the request includes an output format.
|
||||
|
||||
**[6] `gen_ai.request.encoding_formats`:** In some GenAI systems the encoding formats are called embedding types. Also, some GenAI systems only accept a single format per request.
|
||||
**[6] `gen_ai.request.model`:** The name of the GenAI model a request is being made to. If the model is supplied by a vendor, then the value must be the exact name of the model requested. If the model is a fine-tuned custom model, the value should have a more specific name than the base model that's been fine-tuned.
|
||||
|
||||
**[7] `gen_ai.response.model`:** If available. The name of the GenAI model that provided the response. If the model is supplied by a vendor, then the value must be the exact name of the model actually used. If the model is a fine-tuned custom model, the value should have a more specific name than the base model that's been fine-tuned.
|
||||
**[7] `server.port`:** When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries, for example proxies, if it's available.
|
||||
|
||||
**[8] `server.address`:** When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent the server address behind any intermediaries, for example proxies, if it's available.
|
||||
**[8] `gen_ai.request.encoding_formats`:** In some GenAI systems the encoding formats are called embedding types. Also, some GenAI systems only accept a single format per request.
|
||||
|
||||
**[9] `gen_ai.response.model`:** If available. The name of the GenAI model that provided the response. If the model is supplied by a vendor, then the value must be the exact name of the model actually used. If the model is a fine-tuned custom model, the value should have a more specific name than the base model that's been fine-tuned.
|
||||
|
||||
**[10] `server.address`:** When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent the server address behind any intermediaries, for example proxies, if it's available.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -117,6 +124,17 @@ Instrumentations SHOULD document the list of errors they report.
|
|||
|
||||
---
|
||||
|
||||
`gen_ai.output.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||
|
||||
| Value | Description | Stability |
|
||||
|---|---|---|
|
||||
| `image` | Image |  |
|
||||
| `json` | JSON object with known or unknown schema |  |
|
||||
| `speech` | Speech |  |
|
||||
| `text` | Plain text |  |
|
||||
|
||||
---
|
||||
|
||||
`gen_ai.system` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||
|
||||
| Value | Description | Stability |
|
||||
|
|
|
|||
|
|
@ -37,13 +37,13 @@ attributes and ones specific the OpenAI.
|
|||
| [`gen_ai.operation.name`](/docs/attributes-registry/gen-ai.md) | string | The name of the operation being performed. [1] | `chat`; `text_completion`; `embeddings` | `Required` |  |
|
||||
| [`gen_ai.request.model`](/docs/attributes-registry/gen-ai.md) | string | The name of the GenAI model a request is being made to. [2] | `gpt-4` | `Required` |  |
|
||||
| [`error.type`](/docs/attributes-registry/error.md) | string | Describes a class of error the operation ended with. [3] | `timeout`; `java.net.UnknownHostException`; `server_certificate_invalid`; `500` | `Conditionally Required` if the operation ended in an error |  |
|
||||
| [`gen_ai.openai.request.response_format`](/docs/attributes-registry/gen-ai.md) | string | The response format that is requested. | `json` | `Conditionally Required` if the request includes a response_format |  |
|
||||
| [`gen_ai.openai.request.service_tier`](/docs/attributes-registry/gen-ai.md) | string | The service tier requested. May be a specific tier, default, or auto. | `auto`; `default` | `Conditionally Required` [4] |  |
|
||||
| [`gen_ai.openai.response.service_tier`](/docs/attributes-registry/gen-ai.md) | string | The service tier used for the response. | `scale`; `default` | `Conditionally Required` [5] |  |
|
||||
| [`gen_ai.request.seed`](/docs/attributes-registry/gen-ai.md) | int | Requests with same seed value more likely to return same result. | `100` | `Conditionally Required` if appliable and if the request includes a seed |  |
|
||||
| [`server.port`](/docs/attributes-registry/server.md) | int | GenAI server port. [6] | `80`; `8080`; `443` | `Conditionally Required` If `server.address` is set. |  |
|
||||
| [`gen_ai.output.type`](/docs/attributes-registry/gen-ai.md) | string | Represents the content type requested by the client. [6] | `text`; `json`; `image` | `Conditionally Required` [7] |  |
|
||||
| [`gen_ai.request.seed`](/docs/attributes-registry/gen-ai.md) | int | Requests with same seed value more likely to return same result. | `100` | `Conditionally Required` if applicable and if the request includes a seed |  |
|
||||
| [`server.port`](/docs/attributes-registry/server.md) | int | GenAI server port. [8] | `80`; `8080`; `443` | `Conditionally Required` If `server.address` is set. |  |
|
||||
| [`gen_ai.openai.response.system_fingerprint`](/docs/attributes-registry/gen-ai.md) | string | A fingerprint to track any eventual change in the Generative AI environment. | `fp_44709d6fcb` | `Recommended` |  |
|
||||
| [`gen_ai.request.encoding_formats`](/docs/attributes-registry/gen-ai.md) | string[] | The encoding formats requested in an embeddings operation, if specified. [7] | `["base64"]`; `["float", "binary"]` | `Recommended` |  |
|
||||
| [`gen_ai.request.encoding_formats`](/docs/attributes-registry/gen-ai.md) | string[] | The encoding formats requested in an embeddings operation, if specified. [9] | `["base64"]`; `["float", "binary"]` | `Recommended` |  |
|
||||
| [`gen_ai.request.frequency_penalty`](/docs/attributes-registry/gen-ai.md) | double | The frequency penalty setting for the GenAI request. | `0.1` | `Recommended` |  |
|
||||
| [`gen_ai.request.max_tokens`](/docs/attributes-registry/gen-ai.md) | int | The maximum number of tokens the model generates for a request. | `100` | `Recommended` |  |
|
||||
| [`gen_ai.request.presence_penalty`](/docs/attributes-registry/gen-ai.md) | double | The presence penalty setting for the GenAI request. | `0.1` | `Recommended` |  |
|
||||
|
|
@ -52,10 +52,10 @@ attributes and ones specific the OpenAI.
|
|||
| [`gen_ai.request.top_p`](/docs/attributes-registry/gen-ai.md) | double | The top_p sampling setting for the GenAI request. | `1.0` | `Recommended` |  |
|
||||
| [`gen_ai.response.finish_reasons`](/docs/attributes-registry/gen-ai.md) | string[] | Array of reasons the model stopped generating tokens, corresponding to each generation received. | `["stop"]`; `["stop", "length"]` | `Recommended` |  |
|
||||
| [`gen_ai.response.id`](/docs/attributes-registry/gen-ai.md) | string | The unique identifier for the completion. | `chatcmpl-123` | `Recommended` |  |
|
||||
| [`gen_ai.response.model`](/docs/attributes-registry/gen-ai.md) | string | The name of the model that generated the response. [8] | `gpt-4-0613` | `Recommended` |  |
|
||||
| [`gen_ai.response.model`](/docs/attributes-registry/gen-ai.md) | string | The name of the model that generated the response. [10] | `gpt-4-0613` | `Recommended` |  |
|
||||
| [`gen_ai.usage.input_tokens`](/docs/attributes-registry/gen-ai.md) | int | The number of tokens used in the prompt sent to OpenAI. | `100` | `Recommended` |  |
|
||||
| [`gen_ai.usage.output_tokens`](/docs/attributes-registry/gen-ai.md) | int | The number of tokens used in the completions from OpenAI. | `180` | `Recommended` |  |
|
||||
| [`server.address`](/docs/attributes-registry/server.md) | string | GenAI server address. [9] | `example.com`; `10.1.2.80`; `/tmp/my.sock` | `Recommended` |  |
|
||||
| [`server.address`](/docs/attributes-registry/server.md) | string | GenAI server address. [11] | `example.com`; `10.1.2.80`; `/tmp/my.sock` | `Recommended` |  |
|
||||
|
||||
**[1] `gen_ai.operation.name`:** If one of the predefined values applies, but specific system uses a different name it's RECOMMENDED to document it in the semantic conventions for specific GenAI system and use system-specific name in the instrumentation. If a different name is not documented, instrumentation libraries SHOULD use applicable predefined value.
|
||||
|
||||
|
|
@ -69,13 +69,19 @@ Instrumentations SHOULD document the list of errors they report.
|
|||
|
||||
**[5] `gen_ai.openai.response.service_tier`:** if the response was received and includes a service_tier
|
||||
|
||||
**[6] `server.port`:** When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries, for example proxies, if it's available.
|
||||
**[6] `gen_ai.output.type`:** This attribute SHOULD be set to the output type requested by the client: - `json` for structured outputs with defined or undefined schema - `image` for image output - `speech` for speech output - `text` for plain text output
|
||||
The attribute specifies the output modality and not the actual output format. For example, if an image is requested, the actual output could be a URL pointing to an image file.
|
||||
Additional output format details may be recorded in the future in the `gen_ai.output.{type}.*` attributes.
|
||||
|
||||
**[7] `gen_ai.request.encoding_formats`:** In some GenAI systems the encoding formats are called embedding types. Also, some GenAI systems only accept a single format per request.
|
||||
**[7] `gen_ai.output.type`:** when applicable and if the request includes an output format.
|
||||
|
||||
**[8] `gen_ai.response.model`:** If available. The name of the GenAI model that provided the response. If the model is supplied by a vendor, then the value must be the exact name of the model actually used. If the model is a fine-tuned custom model, the value should have a more specific name than the base model that's been fine-tuned.
|
||||
**[8] `server.port`:** When observed from the client side, and when communicating through an intermediary, `server.port` SHOULD represent the server port behind any intermediaries, for example proxies, if it's available.
|
||||
|
||||
**[9] `server.address`:** When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent the server address behind any intermediaries, for example proxies, if it's available.
|
||||
**[9] `gen_ai.request.encoding_formats`:** In some GenAI systems the encoding formats are called embedding types. Also, some GenAI systems only accept a single format per request.
|
||||
|
||||
**[10] `gen_ai.response.model`:** If available. The name of the GenAI model that provided the response. If the model is supplied by a vendor, then the value must be the exact name of the model actually used. If the model is a fine-tuned custom model, the value should have a more specific name than the base model that's been fine-tuned.
|
||||
|
||||
**[11] `server.address`:** When observed from the client side, and when communicating through an intermediary, `server.address` SHOULD represent the server address behind any intermediaries, for example proxies, if it's available.
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -87,16 +93,6 @@ Instrumentations SHOULD document the list of errors they report.
|
|||
|
||||
---
|
||||
|
||||
`gen_ai.openai.request.response_format` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||
|
||||
| Value | Description | Stability |
|
||||
|---|---|---|
|
||||
| `json_object` | JSON object response format |  |
|
||||
| `json_schema` | JSON schema response format |  |
|
||||
| `text` | Text response format |  |
|
||||
|
||||
---
|
||||
|
||||
`gen_ai.openai.request.service_tier` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||
|
||||
| Value | Description | Stability |
|
||||
|
|
@ -114,6 +110,17 @@ Instrumentations SHOULD document the list of errors they report.
|
|||
| `embeddings` | Embeddings operation such as [OpenAI Create embeddings API](https://platform.openai.com/docs/api-reference/embeddings/create) |  |
|
||||
| `text_completion` | Text completions operation such as [OpenAI Completions API (Legacy)](https://platform.openai.com/docs/api-reference/completions) |  |
|
||||
|
||||
---
|
||||
|
||||
`gen_ai.output.type` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
|
||||
|
||||
| Value | Description | Stability |
|
||||
|---|---|---|
|
||||
| `image` | Image |  |
|
||||
| `json` | JSON object with known or unknown schema |  |
|
||||
| `speech` | Speech |  |
|
||||
| `text` | Plain text |  |
|
||||
|
||||
<!-- markdownlint-restore -->
|
||||
<!-- prettier-ignore-end -->
|
||||
<!-- END AUTOGENERATED TEXT -->
|
||||
|
|
|
|||
|
|
@ -39,3 +39,22 @@ groups:
|
|||
deprecated: Replaced by `gen_ai.request.seed` attribute.
|
||||
brief: "Deprecated, use `gen_ai.request.seed`."
|
||||
examples: [100]
|
||||
- id: gen_ai.openai.request.response_format
|
||||
stability: experimental
|
||||
type:
|
||||
members:
|
||||
- id: text
|
||||
value: "text"
|
||||
brief: 'Text response format'
|
||||
stability: experimental
|
||||
- id: json_object
|
||||
value: "json_object"
|
||||
brief: 'JSON object response format'
|
||||
stability: experimental
|
||||
- id: json_schema
|
||||
value: "json_schema"
|
||||
brief: 'JSON schema response format'
|
||||
stability: experimental
|
||||
brief: >
|
||||
Deprecated, use `gen_ai.output.type`.
|
||||
deprecated: "Replaced by `gen_ai.output.type`."
|
||||
|
|
|
|||
|
|
@ -164,15 +164,20 @@ groups:
|
|||
brief: The number of tokens used in the GenAI response (completion).
|
||||
examples: [180]
|
||||
- id: gen_ai.token.type
|
||||
stability: experimental
|
||||
stability: development
|
||||
type:
|
||||
members:
|
||||
- id: input
|
||||
stability: experimental
|
||||
stability: development
|
||||
value: "input"
|
||||
brief: 'Input tokens (prompt, input, etc.)'
|
||||
- id: completion
|
||||
stability: experimental
|
||||
stability: development
|
||||
value: "output"
|
||||
deprecated: "Replaced by `output`."
|
||||
brief: 'Output tokens (completion, response, etc.)'
|
||||
- id: output
|
||||
stability: development
|
||||
value: "output"
|
||||
brief: 'Output tokens (completion, response, etc.)'
|
||||
brief: The type of token being counted.
|
||||
|
|
@ -198,30 +203,46 @@ groups:
|
|||
If one of the predefined values applies, but specific system uses a different name it's RECOMMENDED to document it in the semantic
|
||||
conventions for specific GenAI system and use system-specific name in the instrumentation.
|
||||
If a different name is not documented, instrumentation libraries SHOULD use applicable predefined value.
|
||||
- id: registry.gen_ai.openai
|
||||
type: attribute_group
|
||||
display_name: OpenAI Attributes
|
||||
brief: >
|
||||
Thie group defines attributes for OpenAI.
|
||||
attributes:
|
||||
- id: gen_ai.openai.request.response_format
|
||||
stability: experimental
|
||||
- id: gen_ai.output.type
|
||||
stability: development
|
||||
type:
|
||||
members:
|
||||
- id: text
|
||||
value: "text"
|
||||
brief: 'Text response format'
|
||||
stability: experimental
|
||||
- id: json_object
|
||||
value: "json_object"
|
||||
brief: 'JSON object response format'
|
||||
stability: experimental
|
||||
- id: json_schema
|
||||
value: "json_schema"
|
||||
brief: 'JSON schema response format'
|
||||
stability: experimental
|
||||
brief: The response format that is requested.
|
||||
examples: ['json']
|
||||
brief: 'Plain text'
|
||||
stability: development
|
||||
- id: json
|
||||
value: "json"
|
||||
brief: 'JSON object with known or unknown schema'
|
||||
stability: development
|
||||
- id: image
|
||||
value: "image"
|
||||
brief: 'Image'
|
||||
stability: development
|
||||
- id: speech
|
||||
value: "speech"
|
||||
brief: 'Speech'
|
||||
stability: development
|
||||
# we might need to record requested and actual output types on the same span/event
|
||||
# at some point. In this case, we might need to add a new attribute.
|
||||
# we may also need to record an array of types if multiple are requested/returned.
|
||||
brief: Represents the content type requested by the client.
|
||||
note: >
|
||||
This attribute SHOULD be used when the client requests output of a
|
||||
specific type. The model may return zero or more outputs of this type.
|
||||
|
||||
This attribute specifies the output modality and not the actual output format.
|
||||
For example, if an image is requested, the actual output could be a
|
||||
URL pointing to an image file.
|
||||
|
||||
Additional output format details may be recorded in the future in the
|
||||
`gen_ai.output.{type}.*` attributes.
|
||||
- id: registry.gen_ai.openai
|
||||
type: attribute_group
|
||||
display_name: OpenAI Attributes
|
||||
brief: >
|
||||
This group defines attributes for OpenAI.
|
||||
attributes:
|
||||
- id: gen_ai.openai.request.service_tier
|
||||
stability: experimental
|
||||
type:
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
groups:
|
||||
- id: trace.gen_ai.client.common_attributes
|
||||
type: attribute_group
|
||||
stability: experimental
|
||||
stability: development
|
||||
brief: >
|
||||
Describes GenAI operation span.
|
||||
attributes:
|
||||
|
|
@ -28,9 +28,12 @@ groups:
|
|||
requirement_level: recommended
|
||||
- ref: gen_ai.request.seed
|
||||
requirement_level:
|
||||
conditionally_required: if appliable and if the request includes a seed
|
||||
conditionally_required: if applicable and if the request includes a seed
|
||||
- ref: gen_ai.request.encoding_formats
|
||||
requirement_level: recommended
|
||||
- ref: gen_ai.output.type
|
||||
requirement_level:
|
||||
conditionally_required: when applicable and if the request includes an output format.
|
||||
- ref: gen_ai.response.id
|
||||
requirement_level: recommended
|
||||
- ref: gen_ai.response.model
|
||||
|
|
@ -61,7 +64,7 @@ groups:
|
|||
Instrumentations SHOULD document the list of errors they report.
|
||||
- id: span.gen_ai.client
|
||||
type: span
|
||||
stability: experimental
|
||||
stability: development
|
||||
span_kind: client
|
||||
brief: >
|
||||
Describes GenAI operation span.
|
||||
|
|
@ -76,18 +79,37 @@ groups:
|
|||
- gen_ai.content.prompt
|
||||
- gen_ai.content.completion
|
||||
|
||||
- id: span.gen_ai.openai.client
|
||||
- id: attributes.gen_ai.openai_based
|
||||
extends: trace.gen_ai.client.common_attributes
|
||||
stability: experimental
|
||||
type: attribute_group
|
||||
stability: development
|
||||
brief: >
|
||||
Describes attributes that are common to OpenAI-based Generative AI services.
|
||||
attributes:
|
||||
- ref: gen_ai.output.type
|
||||
note: >
|
||||
This attribute SHOULD be set to the output type requested by the client:
|
||||
- `json` for structured outputs with defined or undefined schema
|
||||
- `image` for image output
|
||||
- `speech` for speech output
|
||||
- `text` for plain text output
|
||||
|
||||
The attribute specifies the output modality and not the actual output format.
|
||||
For example, if an image is requested, the actual output could be a
|
||||
URL pointing to an image file.
|
||||
|
||||
Additional output format details may be recorded in the future in the
|
||||
`gen_ai.output.{type}.*` attributes.
|
||||
- id: span.gen_ai.openai.client
|
||||
extends: attributes.gen_ai.openai_based
|
||||
stability: development
|
||||
span_kind: client
|
||||
type: span
|
||||
brief: >
|
||||
Describes an OpenAI operation span.
|
||||
attributes:
|
||||
- ref: gen_ai.request.model
|
||||
requirement_level: required
|
||||
- ref: gen_ai.openai.request.response_format
|
||||
requirement_level:
|
||||
conditionally_required: if the request includes a response_format
|
||||
- ref: gen_ai.openai.request.service_tier
|
||||
requirement_level:
|
||||
conditionally_required: if the request includes a service_tier and the value is not 'auto'
|
||||
|
|
@ -101,10 +123,12 @@ groups:
|
|||
- ref: gen_ai.usage.output_tokens
|
||||
brief: The number of tokens used in the completions from OpenAI.
|
||||
|
||||
- id: trace.gen_ai.az.ai.inference.client
|
||||
extends: trace.gen_ai.client.common_attributes
|
||||
stability: experimental
|
||||
type: attribute_group
|
||||
|
||||
- id: span.gen_ai.az.ai.inference.client
|
||||
extends: attributes.gen_ai.openai_based
|
||||
stability: development
|
||||
type: span
|
||||
span_kind: client
|
||||
brief: >
|
||||
Describes Azure AI Inference span attributes.
|
||||
attributes:
|
||||
|
|
|
|||
Loading…
Reference in New Issue