From 10e2c9e302d28a84bcdfd41845333ecae5f78353 Mon Sep 17 00:00:00 2001 From: Michael Hoffmann Date: Wed, 22 Apr 2026 18:45:17 +0200 Subject: [PATCH 1/2] feat(attributes): Add gen_ai.request.reasoning_effort attribute Adds a new attribute for tracking the reasoning effort parameter sent to reasoning-capable models. Supported values vary by provider (OpenAI, Anthropic, Google Gemini), so the brief documents per-provider levels rather than a fixed enum. Not in OTel. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../sentry-conventions/src/attributes.ts | 34 +++++++++++++++++++ .../gen_ai__request__reasoning_effort.json | 17 ++++++++++ python/src/sentry_conventions/attributes.py | 27 +++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 model/attributes/gen_ai/gen_ai__request__reasoning_effort.json diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 487b43d8..433767b0 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -4412,6 +4412,26 @@ export const GEN_AI_REQUEST_PRESENCE_PENALTY = 'gen_ai.request.presence_penalty' */ export type GEN_AI_REQUEST_PRESENCE_PENALTY_TYPE = number; +// Path: model/attributes/gen_ai/gen_ai__request__reasoning_effort.json + +/** + * Constrains the effort on reasoning for reasoning models. Supported values vary by provider: OpenAI supports `minimal`, `low`, `medium`, `high` (and `none`, `xhigh` on newer models); Anthropic supports `low`, `medium`, `high`; Google Gemini 3 supports `low`, `high`. `gen_ai.request.reasoning_effort` + * + * Attribute Value Type: `string` {@link GEN_AI_REQUEST_REASONING_EFFORT_TYPE} + * + * Contains PII: false + * + * Attribute defined in OTEL: No + * + * @example "high" + */ +export const GEN_AI_REQUEST_REASONING_EFFORT = 'gen_ai.request.reasoning_effort'; + +/** + * Type for {@link GEN_AI_REQUEST_REASONING_EFFORT} gen_ai.request.reasoning_effort + */ +export type GEN_AI_REQUEST_REASONING_EFFORT_TYPE = string; + // Path: model/attributes/gen_ai/gen_ai__request__seed.json /** @@ -11795,6 +11815,7 @@ export const ATTRIBUTE_TYPE: Record = { [GEN_AI_REQUEST_MESSAGES]: 'string', [GEN_AI_REQUEST_MODEL]: 'string', [GEN_AI_REQUEST_PRESENCE_PENALTY]: 'double', + [GEN_AI_REQUEST_REASONING_EFFORT]: 'string', [GEN_AI_REQUEST_SEED]: 'string', [GEN_AI_REQUEST_TEMPERATURE]: 'double', [GEN_AI_REQUEST_TOP_K]: 'integer', @@ -12347,6 +12368,7 @@ export type AttributeName = | typeof GEN_AI_REQUEST_MESSAGES | typeof GEN_AI_REQUEST_MODEL | typeof GEN_AI_REQUEST_PRESENCE_PENALTY + | typeof GEN_AI_REQUEST_REASONING_EFFORT | typeof GEN_AI_REQUEST_SEED | typeof GEN_AI_REQUEST_TEMPERATURE | typeof GEN_AI_REQUEST_TOP_K @@ -15392,6 +15414,17 @@ export const ATTRIBUTE_METADATA: Record = { { version: '0.1.0', prs: [57] }, ], }, + [GEN_AI_REQUEST_REASONING_EFFORT]: { + brief: + 'Constrains the effort on reasoning for reasoning models. Supported values vary by provider: OpenAI supports `minimal`, `low`, `medium`, `high` (and `none`, `xhigh` on newer models); Anthropic supports `low`, `medium`, `high`; Google Gemini 3 supports `low`, `high`.', + type: 'string', + pii: { + isPii: 'false', + }, + isInOtel: false, + example: 'high', + changelog: [{ version: 'next', prs: [334], description: 'Added gen_ai.request.reasoning_effort attribute' }], + }, [GEN_AI_REQUEST_SEED]: { brief: 'The seed, ideally models given the same seed and same other parameters will produce the exact same output.', type: 'string', @@ -19655,6 +19688,7 @@ export type Attributes = { [GEN_AI_REQUEST_MESSAGES]?: GEN_AI_REQUEST_MESSAGES_TYPE; [GEN_AI_REQUEST_MODEL]?: GEN_AI_REQUEST_MODEL_TYPE; [GEN_AI_REQUEST_PRESENCE_PENALTY]?: GEN_AI_REQUEST_PRESENCE_PENALTY_TYPE; + [GEN_AI_REQUEST_REASONING_EFFORT]?: GEN_AI_REQUEST_REASONING_EFFORT_TYPE; [GEN_AI_REQUEST_SEED]?: GEN_AI_REQUEST_SEED_TYPE; [GEN_AI_REQUEST_TEMPERATURE]?: GEN_AI_REQUEST_TEMPERATURE_TYPE; [GEN_AI_REQUEST_TOP_K]?: GEN_AI_REQUEST_TOP_K_TYPE; diff --git a/model/attributes/gen_ai/gen_ai__request__reasoning_effort.json b/model/attributes/gen_ai/gen_ai__request__reasoning_effort.json new file mode 100644 index 00000000..24719f13 --- /dev/null +++ b/model/attributes/gen_ai/gen_ai__request__reasoning_effort.json @@ -0,0 +1,17 @@ +{ + "key": "gen_ai.request.reasoning_effort", + "brief": "Constrains the effort on reasoning for reasoning models. Supported values vary by provider: OpenAI supports `minimal`, `low`, `medium`, `high` (and `none`, `xhigh` on newer models); Anthropic supports `low`, `medium`, `high`; Google Gemini 3 supports `low`, `high`.", + "type": "string", + "pii": { + "key": "false" + }, + "is_in_otel": false, + "example": "high", + "changelog": [ + { + "version": "next", + "prs": [334], + "description": "Added gen_ai.request.reasoning_effort attribute" + } + ] +} diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index 498aff28..3b5d2833 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -2596,6 +2596,18 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): Example: 0.5 """ + # Path: model/attributes/gen_ai/gen_ai__request__reasoning_effort.json + GEN_AI_REQUEST_REASONING_EFFORT: Literal["gen_ai.request.reasoning_effort"] = ( + "gen_ai.request.reasoning_effort" + ) + """Constrains the effort on reasoning for reasoning models. Supported values vary by provider: OpenAI supports `minimal`, `low`, `medium`, `high` (and `none`, `xhigh` on newer models); Anthropic supports `low`, `medium`, `high`; Google Gemini 3 supports `low`, `high`. + + Type: str + Contains PII: false + Defined in OTEL: No + Example: "high" + """ + # Path: model/attributes/gen_ai/gen_ai__request__seed.json GEN_AI_REQUEST_SEED: Literal["gen_ai.request.seed"] = "gen_ai.request.seed" """The seed, ideally models given the same seed and same other parameters will produce the exact same output. @@ -9355,6 +9367,20 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ChangelogEntry(version="0.1.0", prs=[57]), ], ), + "gen_ai.request.reasoning_effort": AttributeMetadata( + brief="Constrains the effort on reasoning for reasoning models. Supported values vary by provider: OpenAI supports `minimal`, `low`, `medium`, `high` (and `none`, `xhigh` on newer models); Anthropic supports `low`, `medium`, `high`; Google Gemini 3 supports `low`, `high`.", + type=AttributeType.STRING, + pii=PiiInfo(isPii=IsPii.FALSE), + is_in_otel=False, + example="high", + changelog=[ + ChangelogEntry( + version="next", + prs=[334], + description="Added gen_ai.request.reasoning_effort attribute", + ), + ], + ), "gen_ai.request.seed": AttributeMetadata( brief="The seed, ideally models given the same seed and same other parameters will produce the exact same output.", type=AttributeType.STRING, @@ -13674,6 +13700,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): "gen_ai.request.messages": str, "gen_ai.request.model": str, "gen_ai.request.presence_penalty": float, + "gen_ai.request.reasoning_effort": str, "gen_ai.request.seed": str, "gen_ai.request.temperature": float, "gen_ai.request.top_k": int, From 3e077685fddbbb7f5beba501671b451c17fe9e0b Mon Sep 17 00:00:00 2001 From: Michi Hoffmann Date: Mon, 27 Apr 2026 13:45:37 +0200 Subject: [PATCH 2/2] update description --- javascript/sentry-conventions/src/attributes.ts | 4 ++-- .../attributes/gen_ai/gen_ai__request__reasoning_effort.json | 2 +- python/src/sentry_conventions/attributes.py | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/javascript/sentry-conventions/src/attributes.ts b/javascript/sentry-conventions/src/attributes.ts index 433767b0..5b835f8b 100644 --- a/javascript/sentry-conventions/src/attributes.ts +++ b/javascript/sentry-conventions/src/attributes.ts @@ -4415,7 +4415,7 @@ export type GEN_AI_REQUEST_PRESENCE_PENALTY_TYPE = number; // Path: model/attributes/gen_ai/gen_ai__request__reasoning_effort.json /** - * Constrains the effort on reasoning for reasoning models. Supported values vary by provider: OpenAI supports `minimal`, `low`, `medium`, `high` (and `none`, `xhigh` on newer models); Anthropic supports `low`, `medium`, `high`; Google Gemini 3 supports `low`, `high`. `gen_ai.request.reasoning_effort` + * Constrains the effort on reasoning for reasoning models. Supported values vary by provider. `gen_ai.request.reasoning_effort` * * Attribute Value Type: `string` {@link GEN_AI_REQUEST_REASONING_EFFORT_TYPE} * @@ -15416,7 +15416,7 @@ export const ATTRIBUTE_METADATA: Record = { }, [GEN_AI_REQUEST_REASONING_EFFORT]: { brief: - 'Constrains the effort on reasoning for reasoning models. Supported values vary by provider: OpenAI supports `minimal`, `low`, `medium`, `high` (and `none`, `xhigh` on newer models); Anthropic supports `low`, `medium`, `high`; Google Gemini 3 supports `low`, `high`.', + 'Constrains the effort on reasoning for reasoning models. Supported values vary by provider.', type: 'string', pii: { isPii: 'false', diff --git a/model/attributes/gen_ai/gen_ai__request__reasoning_effort.json b/model/attributes/gen_ai/gen_ai__request__reasoning_effort.json index 24719f13..8f72d5f1 100644 --- a/model/attributes/gen_ai/gen_ai__request__reasoning_effort.json +++ b/model/attributes/gen_ai/gen_ai__request__reasoning_effort.json @@ -1,6 +1,6 @@ { "key": "gen_ai.request.reasoning_effort", - "brief": "Constrains the effort on reasoning for reasoning models. Supported values vary by provider: OpenAI supports `minimal`, `low`, `medium`, `high` (and `none`, `xhigh` on newer models); Anthropic supports `low`, `medium`, `high`; Google Gemini 3 supports `low`, `high`.", + "brief": "Constrains the effort on reasoning for reasoning models. Supported values vary by provider.", "type": "string", "pii": { "key": "false" diff --git a/python/src/sentry_conventions/attributes.py b/python/src/sentry_conventions/attributes.py index 3b5d2833..369351b9 100644 --- a/python/src/sentry_conventions/attributes.py +++ b/python/src/sentry_conventions/attributes.py @@ -2600,7 +2600,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): GEN_AI_REQUEST_REASONING_EFFORT: Literal["gen_ai.request.reasoning_effort"] = ( "gen_ai.request.reasoning_effort" ) - """Constrains the effort on reasoning for reasoning models. Supported values vary by provider: OpenAI supports `minimal`, `low`, `medium`, `high` (and `none`, `xhigh` on newer models); Anthropic supports `low`, `medium`, `high`; Google Gemini 3 supports `low`, `high`. + """Constrains the effort on reasoning for reasoning models. Supported values vary by provider. Type: str Contains PII: false @@ -9368,7 +9368,7 @@ class ATTRIBUTE_NAMES(metaclass=_AttributeNamesMeta): ], ), "gen_ai.request.reasoning_effort": AttributeMetadata( - brief="Constrains the effort on reasoning for reasoning models. Supported values vary by provider: OpenAI supports `minimal`, `low`, `medium`, `high` (and `none`, `xhigh` on newer models); Anthropic supports `low`, `medium`, `high`; Google Gemini 3 supports `low`, `high`.", + brief="Constrains the effort on reasoning for reasoning models. Supported values vary by provider.", type=AttributeType.STRING, pii=PiiInfo(isPii=IsPii.FALSE), is_in_otel=False,