Skip to content

Commit 0e597c2

Browse files
authored
ref(core): rename gen_ai.input.messages.original_length to sentry.sdk_meta.gen_ai.input.messages.original_length (#18970)
- renames the attribute - sets the attribute to 1 if the input is a string - adds more explicit checks for this attribute in the node integration tests (mostly for truncation tests to verify this works as expected) Closes #18918
1 parent 3e6d0dd commit 0e597c2

12 files changed

Lines changed: 39 additions & 13 deletions

File tree

dev-packages/node-integration-tests/suites/tracing/anthropic/test.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { afterAll, describe, expect } from 'vitest';
33
import {
44
ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE,
55
GEN_AI_INPUT_MESSAGES_ATTRIBUTE,
6+
GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,
67
GEN_AI_OPERATION_NAME_ATTRIBUTE,
78
GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,
89
GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,
@@ -666,6 +667,7 @@ describe('Anthropic integration', () => {
666667
[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.anthropic',
667668
[GEN_AI_SYSTEM_ATTRIBUTE]: 'anthropic',
668669
[GEN_AI_REQUEST_MODEL_ATTRIBUTE]: 'claude-3-haiku-20240307',
670+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 3,
669671
// Messages should be present (truncation happened) and should be a JSON array
670672
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: expect.stringMatching(/^\[\{"role":"user","content":"C+"\}\]$/),
671673
}),
@@ -682,6 +684,7 @@ describe('Anthropic integration', () => {
682684
[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.anthropic',
683685
[GEN_AI_SYSTEM_ATTRIBUTE]: 'anthropic',
684686
[GEN_AI_REQUEST_MODEL_ATTRIBUTE]: 'claude-3-haiku-20240307',
687+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 3,
685688
// Small message should be kept intact
686689
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: JSON.stringify([
687690
{ role: 'user', content: 'This is a small message that fits within the limit' },
@@ -716,6 +719,7 @@ describe('Anthropic integration', () => {
716719
[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.anthropic',
717720
[GEN_AI_SYSTEM_ATTRIBUTE]: 'anthropic',
718721
[GEN_AI_REQUEST_MODEL_ATTRIBUTE]: 'claude-3-haiku-20240307',
722+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 2,
719723
// Only the last message (with filtered media) should be kept
720724
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: JSON.stringify([
721725
{

dev-packages/node-integration-tests/suites/tracing/google-genai/test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '
22
import { afterAll, describe, expect } from 'vitest';
33
import {
44
GEN_AI_INPUT_MESSAGES_ATTRIBUTE,
5+
GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,
56
GEN_AI_OPERATION_NAME_ATTRIBUTE,
67
GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,
78
GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,
@@ -534,6 +535,7 @@ describe('Google GenAI integration', () => {
534535
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: expect.stringMatching(
535536
/^\[\{"role":"user","parts":\[\{"text":"C+"\}\]\}\]$/,
536537
),
538+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 3,
537539
}),
538540
description: 'generate_content gemini-1.5-flash',
539541
op: 'gen_ai.generate_content',
@@ -555,6 +557,7 @@ describe('Google GenAI integration', () => {
555557
parts: [{ text: 'This is a small message that fits within the limit' }],
556558
},
557559
]),
560+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 3,
558561
}),
559562
description: 'generate_content gemini-1.5-flash',
560563
op: 'gen_ai.generate_content',

dev-packages/node-integration-tests/suites/tracing/langchain/test.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '
22
import { afterAll, describe, expect } from 'vitest';
33
import {
44
GEN_AI_INPUT_MESSAGES_ATTRIBUTE,
5+
GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,
56
GEN_AI_OPERATION_NAME_ATTRIBUTE,
67
GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,
78
GEN_AI_REQUEST_MODEL_ATTRIBUTE,
@@ -224,6 +225,7 @@ describe('LangChain integration', () => {
224225
[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.langchain',
225226
[GEN_AI_SYSTEM_ATTRIBUTE]: 'anthropic',
226227
[GEN_AI_REQUEST_MODEL_ATTRIBUTE]: 'claude-3-5-sonnet-20241022',
228+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 1,
227229
// Messages should be present and should include truncated string input (contains only Cs)
228230
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: expect.stringMatching(/^\[\{"role":"user","content":"C+"\}\]$/),
229231
}),
@@ -240,6 +242,7 @@ describe('LangChain integration', () => {
240242
[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.langchain',
241243
[GEN_AI_SYSTEM_ATTRIBUTE]: 'anthropic',
242244
[GEN_AI_REQUEST_MODEL_ATTRIBUTE]: 'claude-3-5-sonnet-20241022',
245+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 3,
243246
// Messages should be present (truncation happened) and should be a JSON array of a single index (contains only Cs)
244247
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: expect.stringMatching(/^\[\{"role":"user","content":"C+"\}\]$/),
245248
}),
@@ -256,6 +259,7 @@ describe('LangChain integration', () => {
256259
[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.langchain',
257260
[GEN_AI_SYSTEM_ATTRIBUTE]: 'anthropic',
258261
[GEN_AI_REQUEST_MODEL_ATTRIBUTE]: 'claude-3-5-sonnet-20241022',
262+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 3,
259263
// Small message should be kept intact
260264
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: JSON.stringify([
261265
{ role: 'user', content: 'This is a small message that fits within the limit' },

dev-packages/node-integration-tests/suites/tracing/langchain/v1/test.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '
22
import { afterAll, expect } from 'vitest';
33
import {
44
GEN_AI_INPUT_MESSAGES_ATTRIBUTE,
5+
GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE,
56
GEN_AI_OPERATION_NAME_ATTRIBUTE,
67
GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,
78
GEN_AI_REQUEST_MODEL_ATTRIBUTE,
@@ -267,6 +268,7 @@ conditionalTest({ min: 20 })('LangChain integration (v1)', () => {
267268
[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.langchain',
268269
[GEN_AI_SYSTEM_ATTRIBUTE]: 'anthropic',
269270
[GEN_AI_REQUEST_MODEL_ATTRIBUTE]: 'claude-3-5-sonnet-20241022',
271+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 1,
270272
// Messages should be present and should include truncated string input (contains only Cs)
271273
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: expect.stringMatching(/^\[\{"role":"user","content":"C+"\}\]$/),
272274
}),
@@ -283,6 +285,7 @@ conditionalTest({ min: 20 })('LangChain integration (v1)', () => {
283285
[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.langchain',
284286
[GEN_AI_SYSTEM_ATTRIBUTE]: 'anthropic',
285287
[GEN_AI_REQUEST_MODEL_ATTRIBUTE]: 'claude-3-5-sonnet-20241022',
288+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 3,
286289
// Messages should be present (truncation happened) and should be a JSON array of a single index (contains only Cs)
287290
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: expect.stringMatching(/^\[\{"role":"user","content":"C+"\}\]$/),
288291
}),
@@ -299,6 +302,7 @@ conditionalTest({ min: 20 })('LangChain integration (v1)', () => {
299302
[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.langchain',
300303
[GEN_AI_SYSTEM_ATTRIBUTE]: 'anthropic',
301304
[GEN_AI_REQUEST_MODEL_ATTRIBUTE]: 'claude-3-5-sonnet-20241022',
305+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 3,
302306
// Small message should be kept intact
303307
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: JSON.stringify([
304308
{ role: 'user', content: 'This is a small message that fits within the limit' },

dev-packages/node-integration-tests/suites/tracing/openai/test.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ describe('OpenAI integration', () => {
214214
[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.openai',
215215
[GEN_AI_SYSTEM_ATTRIBUTE]: 'openai',
216216
[GEN_AI_REQUEST_MODEL_ATTRIBUTE]: 'gpt-3.5-turbo',
217+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 1,
217218
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: 'Translate this to French: Hello',
218219
[GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: 'Response to: Translate this to French: Hello',
219220
[GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: '["completed"]',
@@ -289,6 +290,7 @@ describe('OpenAI integration', () => {
289290
[GEN_AI_SYSTEM_ATTRIBUTE]: 'openai',
290291
[GEN_AI_REQUEST_MODEL_ATTRIBUTE]: 'gpt-4',
291292
[GEN_AI_REQUEST_STREAM_ATTRIBUTE]: true,
293+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 1,
292294
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: 'Test streaming responses API',
293295
[GEN_AI_RESPONSE_TEXT_ATTRIBUTE]:
294296
'Streaming response to: Test streaming responses APITest streaming responses API',
@@ -620,6 +622,7 @@ describe('OpenAI integration', () => {
620622
[GEN_AI_REQUEST_MODEL_ATTRIBUTE]: 'gpt-3.5-turbo',
621623
// Messages should be present (truncation happened) and should be a JSON array of a single index
622624
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: expect.stringMatching(/^\[\{"role":"user","content":"C+"\}\]$/),
625+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 3,
623626
}),
624627
description: 'chat gpt-3.5-turbo',
625628
op: 'gen_ai.chat',
@@ -638,6 +641,7 @@ describe('OpenAI integration', () => {
638641
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: JSON.stringify([
639642
{ role: 'user', content: 'This is a small message that fits within the limit' },
640643
]),
644+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 3,
641645
}),
642646
description: 'chat gpt-3.5-turbo',
643647
op: 'gen_ai.chat',
@@ -674,6 +678,7 @@ describe('OpenAI integration', () => {
674678
[GEN_AI_REQUEST_MODEL_ATTRIBUTE]: 'gpt-3.5-turbo',
675679
// Messages should be present and should include truncated string input (contains only As)
676680
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: expect.stringMatching(/^A+$/),
681+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 1,
677682
}),
678683
description: 'chat gpt-3.5-turbo',
679684
op: 'gen_ai.chat',

dev-packages/node-integration-tests/suites/tracing/openai/v6/test.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ describe('OpenAI integration (V6)', () => {
213213
[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.openai',
214214
[GEN_AI_SYSTEM_ATTRIBUTE]: 'openai',
215215
[GEN_AI_REQUEST_MODEL_ATTRIBUTE]: 'gpt-3.5-turbo',
216+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 1,
216217
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: 'Translate this to French: Hello',
217218
[GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: 'Response to: Translate this to French: Hello',
218219
[GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: '["completed"]',
@@ -288,6 +289,7 @@ describe('OpenAI integration (V6)', () => {
288289
[GEN_AI_SYSTEM_ATTRIBUTE]: 'openai',
289290
[GEN_AI_REQUEST_MODEL_ATTRIBUTE]: 'gpt-4',
290291
[GEN_AI_REQUEST_STREAM_ATTRIBUTE]: true,
292+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 1,
291293
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: 'Test streaming responses API',
292294
[GEN_AI_RESPONSE_TEXT_ATTRIBUTE]:
293295
'Streaming response to: Test streaming responses APITest streaming responses API',
@@ -335,15 +337,15 @@ describe('OpenAI integration (V6)', () => {
335337
// Check that custom options are respected
336338
expect.objectContaining({
337339
data: expect.objectContaining({
338-
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: expect.any(Number),
340+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 2,
339341
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: expect.any(String), // Should include messages when recordInputs: true
340342
[GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: expect.any(String), // Should include response text when recordOutputs: true
341343
}),
342344
}),
343345
// Check that custom options are respected for streaming
344346
expect.objectContaining({
345347
data: expect.objectContaining({
346-
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: expect.any(Number),
348+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 2,
347349
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: expect.any(String), // Should include messages when recordInputs: true
348350
[GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: expect.any(String), // Should include response text when recordOutputs: true
349351
[GEN_AI_REQUEST_STREAM_ATTRIBUTE]: true, // Should be marked as stream

dev-packages/node-integration-tests/suites/tracing/vercelai/test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ describe('Vercel AI integration', () => {
119119
expect.objectContaining({
120120
data: {
121121
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: expect.any(String),
122-
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: expect.any(Number),
122+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 1,
123123
[GEN_AI_REQUEST_MODEL_ATTRIBUTE]: 'mock-model-id',
124124
[GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: ['stop'],
125125
[GEN_AI_RESPONSE_ID_ATTRIBUTE]: expect.any(String),
@@ -337,7 +337,7 @@ describe('Vercel AI integration', () => {
337337
expect.objectContaining({
338338
data: {
339339
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: expect.any(String),
340-
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: expect.any(Number),
340+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 1,
341341
[GEN_AI_REQUEST_MODEL_ATTRIBUTE]: 'mock-model-id',
342342
[GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: ['stop'],
343343
[GEN_AI_RESPONSE_ID_ATTRIBUTE]: expect.any(String),
@@ -411,7 +411,7 @@ describe('Vercel AI integration', () => {
411411
data: {
412412
[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE]: EXPECTED_AVAILABLE_TOOLS_JSON,
413413
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: expect.any(String),
414-
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: expect.any(Number),
414+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 1,
415415
[GEN_AI_REQUEST_MODEL_ATTRIBUTE]: 'mock-model-id',
416416
[GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: ['tool-calls'],
417417
[GEN_AI_RESPONSE_ID_ATTRIBUTE]: expect.any(String),

dev-packages/node-integration-tests/suites/tracing/vercelai/v5/test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ describe('Vercel AI integration (V5)', () => {
131131
'vercel.ai.response.id': expect.any(String),
132132
[GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: expect.any(String),
133133
'vercel.ai.response.timestamp': expect.any(String),
134-
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: expect.any(Number),
134+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 1,
135135
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: expect.any(String),
136136
[GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: ['stop'],
137137
[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: 10,
@@ -329,7 +329,7 @@ describe('Vercel AI integration (V5)', () => {
329329
'vercel.ai.response.id': expect.any(String),
330330
[GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: expect.any(String),
331331
'vercel.ai.response.timestamp': expect.any(String),
332-
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: expect.any(Number),
332+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 1,
333333
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: expect.any(String),
334334
[GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: ['stop'],
335335
[GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: 10,
@@ -378,7 +378,7 @@ describe('Vercel AI integration (V5)', () => {
378378
'vercel.ai.model.provider': 'mock-provider',
379379
'vercel.ai.operationId': 'ai.generateText.doGenerate',
380380
'vercel.ai.pipeline.name': 'generateText.doGenerate',
381-
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: expect.any(Number),
381+
[GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE]: 1,
382382
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: expect.any(String),
383383
'vercel.ai.prompt.toolChoice': expect.any(String),
384384
[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE]: EXPECTED_AVAILABLE_TOOLS_JSON,

packages/core/src/tracing/ai/gen-ai-attributes.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ export const GEN_AI_OPERATION_NAME_ATTRIBUTE = 'gen_ai.operation.name';
118118
/**
119119
* Original length of messages array, used to indicate truncations had occured
120120
*/
121-
export const GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE = 'gen_ai.input.messages.original_length';
121+
export const GEN_AI_INPUT_MESSAGES_ORIGINAL_LENGTH_ATTRIBUTE = 'sentry.sdk_meta.gen_ai.input.messages.original_length';
122122

123123
/**
124124
* The prompt messages

packages/core/src/tracing/anthropic-ai/utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export function shouldInstrument(methodPath: string): methodPath is AnthropicAiI
2020
* Set the messages and messages original length attributes.
2121
*/
2222
export function setMessagesAttribute(span: Span, messages: unknown): void {
23-
const length = Array.isArray(messages) ? messages.length : undefined;
23+
const length = Array.isArray(messages) ? messages.length : 1;
2424
if (length !== 0) {
2525
span.setAttributes({
2626
[GEN_AI_INPUT_MESSAGES_ATTRIBUTE]: getTruncatedJsonString(messages),

0 commit comments

Comments
 (0)