Skip to content

Commit b8e3c16

Browse files
committed
Extract converse handler
1 parent 018cb5c commit b8e3c16

File tree

1 file changed

+29
-9
lines changed

1 file changed

+29
-9
lines changed

plugins/node/opentelemetry-instrumentation-aws-sdk/src/services/bedrock-runtime.ts

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)