Semantic Conventions for OpenAI operations
Status: Experimental
The Semantic Conventions for OpenAI extend and override the semantic conventions for Gen AI Spans and Gen AI Metrics.
gen_ai.system
MUST be set to "openai"
.
OpenAI Span attributes
These attributes track input data and metadata for a request to an OpenAI model. The attributes include general Generative AI attributes and ones specific the OpenAI.
Attribute | Type | Description | Examples | Requirement Level | Stability |
---|---|---|---|---|---|
gen_ai.operation.name | string | The name of the operation being performed. [1] | chat ; text_completion | Required | |
gen_ai.request.model | string | The name of the GenAI model a request is being made to. [2] | gpt-4 | Required | |
gen_ai.system | string | The Generative AI product as identified by the client or server instrumentation. [3] | openai | Required | |
error.type | string | Describes a class of error the operation ended with. [4] | timeout ; java.net.UnknownHostException ; server_certificate_invalid ; 500 | Conditionally Required if the operation ended in an error | |
gen_ai.openai.request.response_format | string | The response format that is requested. | json | Conditionally Required if the request includes a response_format | |
gen_ai.openai.request.seed | int | Requests with same seed value more likely to return same result. | 100 | Conditionally Required if the request includes a seed | |
gen_ai.openai.request.service_tier | string | The service tier requested. May be a specific tier, detault, or auto. | auto ; default | Conditionally Required [5] | |
gen_ai.openai.response.service_tier | string | The service tier used for the response. | scale ; detault | Conditionally Required [6] | |
server.port | int | GenAI server port. [7] | 80 ; 8080 ; 443 | Conditionally Required If server.address is set. | |
gen_ai.request.frequency_penalty | double | The frequency penalty setting for the GenAI request. | 0.1 | Recommended | |
gen_ai.request.max_tokens | int | The maximum number of tokens the model generates for a request. | 100 | Recommended | |
gen_ai.request.presence_penalty | double | The presence penalty setting for the GenAI request. | 0.1 | Recommended | |
gen_ai.request.stop_sequences | string[] | List of sequences that the model will use to stop generating further tokens. | ["forest", "lived"] | Recommended | |
gen_ai.request.temperature | double | The temperature setting for the GenAI request. | 0.0 | Recommended | |
gen_ai.request.top_p | double | The top_p sampling setting for the GenAI request. | 1.0 | Recommended | |
gen_ai.response.finish_reasons | string[] | Array of reasons the model stopped generating tokens, corresponding to each generation received. | ["stop"] ; ["stop", "length"] | Recommended | |
gen_ai.response.id | string | The unique identifier for the completion. | chatcmpl-123 | Recommended | |
gen_ai.response.model | string | The name of the model that generated the response. [8] | gpt-4-0613 | Recommended | |
gen_ai.usage.input_tokens | int | The number of tokens used in the prompt sent to OpenAI. | 100 | Recommended | |
gen_ai.usage.output_tokens | int | The number of tokens used in the completions from OpenAI. | 180 | Recommended | |
server.address | string | GenAI server address. [9] | example.com ; 10.1.2.80 ; /tmp/my.sock | Recommended |
[1]: 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]: 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]: 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.
For example, when using OpenAI client libraries to communicate with Mistral, the gen_ai.system
is set to openai
based on the instrumentation’s best knowledge.
For custom model, a custom friendly name SHOULD be used.
If none of these options apply, the gen_ai.system
SHOULD be set to _OTHER
.
[4]: The error.type
SHOULD match the error code returned by the Generative AI provider or the client library,
the canonical name of exception that occurred, or another low-cardinality error identifier.
Instrumentations SHOULD document the list of errors they report.
[5]: if the request includes a service_tier and the value is not ‘auto’
[6]: if the response was received and includes a service_tier
[7]: 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]: 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.
[9]: 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.
error.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 |
---|---|---|
_OTHER | A fallback error value to be used when the instrumentation doesn’t define a custom value. |
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 |
---|---|---|
auto | The system will utilize scale tier credits until they are exhausted. | |
default | The system will utilize the default scale tier. |
gen_ai.operation.name
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 |
---|---|---|
chat | Chat completion operation such as OpenAI Chat API | |
text_completion | Text completions operation such as OpenAI Completions API (Legacy) |
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 |
---|---|---|
anthropic | Anthropic | |
cohere | Cohere | |
openai | OpenAI | |
vertex_ai | Vertex AI |
OpenAI Metric attributes
OpenAI metrics follow Generative AI metrics with the noted additional attributes. Individual systems may include additional system-specific attributes. It is recommended to check system-specific documentation, if available.
Metric: gen_ai.client.token.usage
Reports the usage of tokens following the common gen_ai.client.token.usage definition.
Additional attributes:
Attribute | Type | Description | Examples | Requirement Level | Stability |
---|---|---|---|---|---|
gen_ai.openai.response.service_tier | string | The service tier used for the response. | scale ; detault | Recommended |
Metric: gen_ai.client.operation.duration
Measures the to complete an operation following the common gen_ai.client.operation.duration definition.
Additional attributes:
Attribute | Type | Description | Examples | Requirement Level | Stability |
---|---|---|---|---|---|
gen_ai.openai.response.service_tier | string | The service tier used for the response. | scale ; detault | Recommended |
Feedback
Was this page helpful?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!