Skip to content

Commit 2333555

Browse files
matejminarDav1ddevgrozdanic
authored
feat(ai): Mark some AI attributes as PII maybe (#4860)
The default scrubbers are too eager on these fields, rendering the experience often unusable. We're moving the specified attributes to PII maybe which means that we'll be not scrubbing them by default, but people will be able to add it to scrubbing in settings if they wish to do so. This will be properly documented in product docs. --------- Co-authored-by: David Herberth <david.herberth@sentry.io> Co-authored-by: Vjeran Grozdanic <vjeran.grozdanic@sentry.io>
1 parent 6994d0e commit 2333555

File tree

4 files changed

+78
-0
lines changed

4 files changed

+78
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
- Use the `FiniteF64` type for measurements. ([#4828](https://github.com/getsentry/relay/pull/4828))
1717
- Derive a `sentry.description` attribute for V2 spans ([#4832](https://github.com/getsentry/relay/pull/4832))
1818
- Consider `gen_ai` also as AI span op prefix. ([#4859](https://github.com/getsentry/relay/pull/4859))
19+
- Change pii scrubbing on some AI attributes to optional ([#4860](https://github.com/getsentry/relay/pull/4860))
1920

2021
## 25.6.1
2122

relay-event-schema/src/protocol/span.rs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -502,6 +502,34 @@ pub struct SpanData {
502502
#[metastructure(field = "gen_ai.usage.total_cost", legacy_alias = "ai.total_cost")]
503503
pub gen_ai_usage_total_cost: Annotated<Value>,
504504

505+
/// Prompt passed to LLM (Vercel AI SDK)
506+
#[metastructure(field = "gen_ai.prompt", pii = "maybe")]
507+
pub gen_ai_prompt: Annotated<Value>,
508+
509+
/// Prompt passed to LLM
510+
#[metastructure(field = "gen_ai.request.messages", pii = "maybe")]
511+
pub gen_ai_request_messages: Annotated<Value>,
512+
513+
/// Tool call arguments
514+
#[metastructure(field = "gen_ai.tool.input", pii = "maybe")]
515+
pub gen_ai_tool_input: Annotated<Value>,
516+
517+
/// Tool call result
518+
#[metastructure(field = "gen_ai.tool.output", pii = "maybe")]
519+
pub gen_ai_tool_output: Annotated<Value>,
520+
521+
/// LLM decisions to use calls
522+
#[metastructure(field = "gen_ai.response.tool_calls", pii = "maybe")]
523+
pub gen_ai_response_tool_calls: Annotated<Value>,
524+
525+
/// LLM response text (Vercel AI, generateText)
526+
#[metastructure(field = "gen_ai.response.text", pii = "maybe")]
527+
pub gen_ai_response_text: Annotated<Value>,
528+
529+
/// LLM response object (Vercel AI, generateObject)
530+
#[metastructure(field = "gen_ai.response.object", pii = "maybe")]
531+
pub gen_ai_response_object: Annotated<Value>,
532+
505533
/// The client's browser name.
506534
#[metastructure(field = "browser.name")]
507535
pub browser_name: Annotated<String>,
@@ -1292,6 +1320,13 @@ mod tests {
12921320
gen_ai_response_model: ~,
12931321
gen_ai_request_model: ~,
12941322
gen_ai_usage_total_cost: ~,
1323+
gen_ai_prompt: ~,
1324+
gen_ai_request_messages: ~,
1325+
gen_ai_tool_input: ~,
1326+
gen_ai_tool_output: ~,
1327+
gen_ai_response_tool_calls: ~,
1328+
gen_ai_response_text: ~,
1329+
gen_ai_response_object: ~,
12951330
browser_name: ~,
12961331
code_filepath: String(
12971332
"task.py",

relay-event-schema/src/protocol/span/convert.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,13 @@ mod tests {
164164
gen_ai_response_model: ~,
165165
gen_ai_request_model: ~,
166166
gen_ai_usage_total_cost: ~,
167+
gen_ai_prompt: ~,
168+
gen_ai_request_messages: ~,
169+
gen_ai_tool_input: ~,
170+
gen_ai_tool_output: ~,
171+
gen_ai_response_tool_calls: ~,
172+
gen_ai_response_text: ~,
173+
gen_ai_response_object: ~,
167174
browser_name: "Chrome",
168175
code_filepath: ~,
169176
code_lineno: ~,

relay-server/src/metrics_extraction/snapshots/relay_server__metrics_extraction__event__tests__extract_span_metrics_mobile.snap

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,13 @@ expression: "(&event.value().unwrap().spans, metrics.project_metrics)"
146146
gen_ai_response_model: ~,
147147
gen_ai_request_model: ~,
148148
gen_ai_usage_total_cost: ~,
149+
gen_ai_prompt: ~,
150+
gen_ai_request_messages: ~,
151+
gen_ai_tool_input: ~,
152+
gen_ai_tool_output: ~,
153+
gen_ai_response_tool_calls: ~,
154+
gen_ai_response_text: ~,
155+
gen_ai_response_object: ~,
149156
browser_name: ~,
150157
code_filepath: ~,
151158
code_lineno: ~,
@@ -809,6 +816,13 @@ expression: "(&event.value().unwrap().spans, metrics.project_metrics)"
809816
gen_ai_response_model: ~,
810817
gen_ai_request_model: ~,
811818
gen_ai_usage_total_cost: ~,
819+
gen_ai_prompt: ~,
820+
gen_ai_request_messages: ~,
821+
gen_ai_tool_input: ~,
822+
gen_ai_tool_output: ~,
823+
gen_ai_response_tool_calls: ~,
824+
gen_ai_response_text: ~,
825+
gen_ai_response_object: ~,
812826
browser_name: ~,
813827
code_filepath: ~,
814828
code_lineno: ~,
@@ -999,6 +1013,13 @@ expression: "(&event.value().unwrap().spans, metrics.project_metrics)"
9991013
gen_ai_response_model: ~,
10001014
gen_ai_request_model: ~,
10011015
gen_ai_usage_total_cost: ~,
1016+
gen_ai_prompt: ~,
1017+
gen_ai_request_messages: ~,
1018+
gen_ai_tool_input: ~,
1019+
gen_ai_tool_output: ~,
1020+
gen_ai_response_tool_calls: ~,
1021+
gen_ai_response_text: ~,
1022+
gen_ai_response_object: ~,
10021023
browser_name: ~,
10031024
code_filepath: ~,
10041025
code_lineno: ~,
@@ -1298,6 +1319,13 @@ expression: "(&event.value().unwrap().spans, metrics.project_metrics)"
12981319
gen_ai_response_model: ~,
12991320
gen_ai_request_model: ~,
13001321
gen_ai_usage_total_cost: ~,
1322+
gen_ai_prompt: ~,
1323+
gen_ai_request_messages: ~,
1324+
gen_ai_tool_input: ~,
1325+
gen_ai_tool_output: ~,
1326+
gen_ai_response_tool_calls: ~,
1327+
gen_ai_response_text: ~,
1328+
gen_ai_response_object: ~,
13011329
browser_name: ~,
13021330
code_filepath: ~,
13031331
code_lineno: ~,
@@ -1488,6 +1516,13 @@ expression: "(&event.value().unwrap().spans, metrics.project_metrics)"
14881516
gen_ai_response_model: ~,
14891517
gen_ai_request_model: ~,
14901518
gen_ai_usage_total_cost: ~,
1519+
gen_ai_prompt: ~,
1520+
gen_ai_request_messages: ~,
1521+
gen_ai_tool_input: ~,
1522+
gen_ai_tool_output: ~,
1523+
gen_ai_response_tool_calls: ~,
1524+
gen_ai_response_text: ~,
1525+
gen_ai_response_object: ~,
14911526
browser_name: ~,
14921527
code_filepath: ~,
14931528
code_lineno: ~,

0 commit comments

Comments
 (0)