@@ -23,6 +23,7 @@ import {
23
23
GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE ,
24
24
GEN_AI_SYSTEM_ATTRIBUTE ,
25
25
} from '../ai/gen-ai-attributes' ;
26
+ import { truncateGenAiMessages } from '../ai/messageTruncation' ;
26
27
import { buildMethodPath , getFinalOperationName , getSpanOperation , setTokenUsageAttributes } from '../ai/utils' ;
27
28
import { handleCallbackErrors } from '../handleCallbackErrors' ;
28
29
import { instrumentAsyncIterableStream , instrumentMessageStream } from './streaming' ;
@@ -71,16 +72,16 @@ function extractRequestAttributes(args: unknown[], methodPath: string): Record<s
71
72
return attributes ;
72
73
}
73
74
74
- /**
75
- * Add private request attributes to spans.
76
- * This is only recorded if recordInputs is true.
77
- */
78
75
function addPrivateRequestAttributes ( span : Span , params : Record < string , unknown > ) : void {
79
76
if ( 'messages' in params ) {
80
- span . setAttributes ( { [ GEN_AI_REQUEST_MESSAGES_ATTRIBUTE ] : JSON . stringify ( params . messages ) } ) ;
77
+ const messages = params . messages ;
78
+ const truncatedMessages = truncateGenAiMessages ( messages as unknown [ ] ) ;
79
+ span . setAttributes ( { [ GEN_AI_REQUEST_MESSAGES_ATTRIBUTE ] : JSON . stringify ( truncatedMessages ) } ) ;
81
80
}
82
81
if ( 'input' in params ) {
83
- span . setAttributes ( { [ GEN_AI_REQUEST_MESSAGES_ATTRIBUTE ] : JSON . stringify ( params . input ) } ) ;
82
+ const input = params . input ;
83
+ const truncatedInput = truncateGenAiMessages ( input as unknown [ ] ) ;
84
+ span . setAttributes ( { [ GEN_AI_REQUEST_MESSAGES_ATTRIBUTE ] : JSON . stringify ( truncatedInput ) } ) ;
84
85
}
85
86
if ( 'prompt' in params ) {
86
87
span . setAttributes ( { [ GEN_AI_PROMPT_ATTRIBUTE ] : JSON . stringify ( params . prompt ) } ) ;
0 commit comments