@@ -41,19 +41,27 @@ export class BedrockRuntimeServiceExtension implements ServiceExtension {
4141 config : AwsSdkInstrumentationConfig ,
4242 diag : DiagLogger
4343 ) : RequestMetadata {
44- let spanName : string | undefined ;
45- const spanAttributes : Attributes = {
46- [ ATTR_GEN_AI_SYSTEM ] : GEN_AI_SYSTEM_VALUE_AWS_BEDROCK ,
47- } ;
48-
4944 switch ( request . commandName ) {
5045 case 'Converse' :
51- spanAttributes [ ATTR_GEN_AI_OPERATION_NAME ] =
52- GEN_AI_OPERATION_NAME_VALUE_CHAT ;
53- spanName = GEN_AI_OPERATION_NAME_VALUE_CHAT ;
54- break ;
46+ return this . requestPreSpanHookConverse ( request , config , diag ) ;
5547 }
5648
49+ return {
50+ isIncoming : false ,
51+ } ;
52+ }
53+
54+ private requestPreSpanHookConverse (
55+ request : NormalizedRequest ,
56+ config : AwsSdkInstrumentationConfig ,
57+ diag : DiagLogger
58+ ) : RequestMetadata {
59+ let spanName = GEN_AI_OPERATION_NAME_VALUE_CHAT ;
60+ const spanAttributes : Attributes = {
61+ [ ATTR_GEN_AI_SYSTEM ] : GEN_AI_SYSTEM_VALUE_AWS_BEDROCK ,
62+ [ ATTR_GEN_AI_OPERATION_NAME ] : GEN_AI_OPERATION_NAME_VALUE_CHAT ,
63+ } ;
64+
5765 const modelId = request . commandInput . modelId ;
5866 if ( modelId ) {
5967 spanAttributes [ ATTR_GEN_AI_REQUEST_MODEL ] = modelId ;
@@ -96,6 +104,18 @@ export class BedrockRuntimeServiceExtension implements ServiceExtension {
96104 return ;
97105 }
98106
107+ switch ( response . request . commandName ) {
108+ case 'Converse' :
109+ return this . responseHookConverse ( response , span , tracer , config ) ;
110+ }
111+ }
112+
113+ private responseHookConverse (
114+ response : NormalizedResponse ,
115+ span : Span ,
116+ tracer : Tracer ,
117+ config : AwsSdkInstrumentationConfig
118+ ) {
99119 const { stopReason, usage } = response . data ;
100120 if ( usage ) {
101121 const { inputTokens, outputTokens } = usage ;
0 commit comments