@traceloop/instrumentation-bedrock 0.11.0 → 0.11.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ var api = require('@opentelemetry/api');
5
5
  var instrumentation = require('@opentelemetry/instrumentation');
6
6
  var aiSemanticConventions = require('@traceloop/ai-semantic-conventions');
7
7
 
8
- var version = "0.11.0";
8
+ var version = "0.11.6";
9
9
 
10
10
  class BedrockInstrumentation extends instrumentation.InstrumentationBase {
11
11
  constructor(config = {}) {
@@ -34,7 +34,7 @@ class BedrockInstrumentation extends instrumentation.InstrumentationBase {
34
34
  wrapperMethod() {
35
35
  // eslint-disable-next-line @typescript-eslint/no-this-alias
36
36
  const plugin = this;
37
- // eslint-disable-next-line @typescript-eslint/ban-types
37
+ // eslint-disable-next-line
38
38
  return (original) => {
39
39
  return function method(...args) {
40
40
  const span = plugin._startSpan({
@@ -80,8 +80,9 @@ class BedrockInstrumentation extends instrumentation.InstrumentationBase {
80
80
  var _a, _b;
81
81
  let attributes = {};
82
82
  try {
83
- const [vendor, model] = params.input.modelId
84
- ? params.input.modelId.split(".")
83
+ const input = params.input;
84
+ const [vendor, model] = input.modelId
85
+ ? input.modelId.split(".")
85
86
  : ["", ""];
86
87
  attributes = {
87
88
  [aiSemanticConventions.SpanAttributes.LLM_SYSTEM]: vendor,
@@ -89,8 +90,8 @@ class BedrockInstrumentation extends instrumentation.InstrumentationBase {
89
90
  [aiSemanticConventions.SpanAttributes.LLM_RESPONSE_MODEL]: model,
90
91
  [aiSemanticConventions.SpanAttributes.LLM_REQUEST_TYPE]: aiSemanticConventions.LLMRequestTypeValues.COMPLETION,
91
92
  };
92
- if (typeof params.input.body === "string") {
93
- const requestBody = JSON.parse(params.input.body);
93
+ if (typeof input.body === "string") {
94
+ const requestBody = JSON.parse(input.body);
94
95
  attributes = Object.assign(Object.assign({}, attributes), this._setRequestAttributes(vendor, requestBody));
95
96
  }
96
97
  }
@@ -103,10 +104,10 @@ class BedrockInstrumentation extends instrumentation.InstrumentationBase {
103
104
  attributes,
104
105
  });
105
106
  }
106
- _endSpan({ span, result, }) {
107
- var _a, e_1, _b, _c;
108
- var _d, _e, _f;
109
- return tslib.__awaiter(this, void 0, void 0, function* () {
107
+ _endSpan(_a) {
108
+ return tslib.__awaiter(this, arguments, void 0, function* ({ span, result, }) {
109
+ var _b, e_1, _c, _d;
110
+ var _e, _f, _g;
110
111
  try {
111
112
  if ("body" in result) {
112
113
  const attributes = "attributes" in span
@@ -117,12 +118,12 @@ class BedrockInstrumentation extends instrumentation.InstrumentationBase {
117
118
  const rawRes = result.body;
118
119
  let streamedContent = "";
119
120
  try {
120
- for (var _g = true, rawRes_1 = tslib.__asyncValues(rawRes), rawRes_1_1; rawRes_1_1 = yield rawRes_1.next(), _a = rawRes_1_1.done, !_a; _g = true) {
121
- _c = rawRes_1_1.value;
122
- _g = false;
123
- const value = _c;
121
+ for (var _h = true, rawRes_1 = tslib.__asyncValues(rawRes), rawRes_1_1; rawRes_1_1 = yield rawRes_1.next(), _b = rawRes_1_1.done, !_b; _h = true) {
122
+ _d = rawRes_1_1.value;
123
+ _h = false;
124
+ const value = _d;
124
125
  // Convert it to a JSON String
125
- const jsonString = new TextDecoder().decode((_d = value.chunk) === null || _d === void 0 ? void 0 : _d.bytes);
126
+ const jsonString = new TextDecoder().decode((_e = value.chunk) === null || _e === void 0 ? void 0 : _e.bytes);
126
127
  // Parse the JSON string
127
128
  const parsedResponse = JSON.parse(jsonString);
128
129
  if ("amazon-bedrock-invocationMetrics" in parsedResponse) {
@@ -146,7 +147,7 @@ class BedrockInstrumentation extends instrumentation.InstrumentationBase {
146
147
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
147
148
  finally {
148
149
  try {
149
- if (!_g && !_a && (_b = rawRes_1.return)) yield _b.call(rawRes_1);
150
+ if (!_h && !_b && (_c = rawRes_1.return)) yield _c.call(rawRes_1);
150
151
  }
151
152
  finally { if (e_1) throw e_1.error; }
152
153
  }
@@ -164,7 +165,7 @@ class BedrockInstrumentation extends instrumentation.InstrumentationBase {
164
165
  }
165
166
  catch (e) {
166
167
  this._diag.debug(e);
167
- (_f = (_e = this._config).exceptionLogger) === null || _f === void 0 ? void 0 : _f.call(_e, e);
168
+ (_g = (_f = this._config).exceptionLogger) === null || _g === void 0 ? void 0 : _g.call(_f, e);
168
169
  }
169
170
  span.setStatus({ code: api.SpanStatusCode.OK });
170
171
  span.end();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/instrumentation.ts"],"sourcesContent":["/*\n * Copyright Traceloop\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n Span,\n Attributes,\n SpanKind,\n SpanStatusCode,\n context,\n trace,\n} from \"@opentelemetry/api\";\nimport {\n InstrumentationBase,\n InstrumentationModuleDefinition,\n InstrumentationNodeModuleDefinition,\n safeExecuteInTheMiddle,\n} from \"@opentelemetry/instrumentation\";\nimport { BedrockInstrumentationConfig } from \"./types\";\nimport type * as bedrock from \"@aws-sdk/client-bedrock-runtime\";\nimport {\n CONTEXT_KEY_ALLOW_TRACE_CONTENT,\n LLMRequestTypeValues,\n SpanAttributes,\n} from \"@traceloop/ai-semantic-conventions\";\nimport { version } from \"../package.json\";\n\nexport class BedrockInstrumentation extends InstrumentationBase {\n protected declare _config: BedrockInstrumentationConfig;\n\n constructor(config: BedrockInstrumentationConfig = {}) {\n super(\"@traceloop/instrumentation-bedrock\", version, config);\n }\n\n public override setConfig(config: BedrockInstrumentationConfig = {}) {\n super.setConfig(config);\n }\n\n protected init(): InstrumentationModuleDefinition {\n const module = new InstrumentationNodeModuleDefinition(\n \"@aws-sdk/client-bedrock-runtime\",\n [\">=3.499.0\"],\n this.wrap.bind(this),\n this.unwrap.bind(this),\n );\n\n return module;\n }\n\n public manuallyInstrument(module: typeof bedrock) {\n this._diag.debug(`Patching @aws-sdk/client-bedrock-runtime manually`);\n\n this._wrap(\n module.BedrockRuntimeClient.prototype,\n \"send\",\n this.wrapperMethod(),\n );\n }\n\n private wrap(module: typeof bedrock, moduleVersion?: string) {\n this._diag.debug(\n `Patching @aws-sdk/client-bedrock-runtime@${moduleVersion}`,\n );\n\n this._wrap(\n module.BedrockRuntimeClient.prototype,\n \"send\",\n this.wrapperMethod(),\n );\n\n return module;\n }\n\n private unwrap(module: typeof bedrock, moduleVersion?: string) {\n this._diag.debug(\n `Unpatching @aws-sdk/client-bedrock-runtime@${moduleVersion}`,\n );\n\n this._unwrap(module.BedrockRuntimeClient.prototype, \"send\");\n }\n\n private wrapperMethod() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const plugin = this;\n // eslint-disable-next-line @typescript-eslint/ban-types\n return (original: Function) => {\n return function method(this: any, ...args: any) {\n const span = plugin._startSpan({\n params: args[0],\n });\n const execContext = trace.setSpan(context.active(), span);\n const execPromise = safeExecuteInTheMiddle(\n () => {\n return context.with(execContext, () => {\n return original.apply(this, args);\n });\n },\n (e) => {\n if (e) {\n plugin._diag.error(`Error in bedrock instrumentation`, e);\n }\n },\n );\n const wrappedPromise = plugin._wrapPromise(span, execPromise);\n return context.bind(execContext, wrappedPromise);\n };\n };\n }\n private _wrapPromise<T>(span: Span, promise: Promise<T>): Promise<T> {\n return promise\n .then(async (result) => {\n await this._endSpan({\n span,\n result: result as\n | bedrock.InvokeModelCommandOutput\n | bedrock.InvokeModelWithResponseStreamCommandOutput,\n });\n\n return new Promise<T>((resolve) => resolve(result));\n })\n .catch((error: Error) => {\n return new Promise<T>((_, reject) => {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n span.recordException(error);\n span.end();\n\n reject(error);\n });\n });\n }\n\n private _startSpan({\n params,\n }: {\n params: Parameters<bedrock.BedrockRuntimeClient[\"send\"]>[0];\n }): Span {\n let attributes: Attributes = {};\n\n try {\n const [vendor, model] = params.input.modelId\n ? params.input.modelId.split(\".\")\n : [\"\", \"\"];\n\n attributes = {\n [SpanAttributes.LLM_SYSTEM]: vendor,\n [SpanAttributes.LLM_REQUEST_MODEL]: model,\n [SpanAttributes.LLM_RESPONSE_MODEL]: model,\n [SpanAttributes.LLM_REQUEST_TYPE]: LLMRequestTypeValues.COMPLETION,\n };\n\n if (typeof params.input.body === \"string\") {\n const requestBody = JSON.parse(params.input.body);\n\n attributes = {\n ...attributes,\n ...this._setRequestAttributes(vendor, requestBody),\n };\n }\n } catch (e) {\n this._diag.debug(e);\n this._config.exceptionLogger?.(e);\n }\n\n return this.tracer.startSpan(`bedrock.completion`, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n }\n\n private async _endSpan({\n span,\n result,\n }: {\n span: Span;\n result:\n | bedrock.InvokeModelCommandOutput\n | bedrock.InvokeModelWithResponseStreamCommandOutput;\n }) {\n try {\n if (\"body\" in result) {\n const attributes =\n \"attributes\" in span\n ? (span[\"attributes\"] as Record<string, any>)\n : {};\n\n if (SpanAttributes.LLM_SYSTEM in attributes) {\n if (!(result.body instanceof Object.getPrototypeOf(Uint8Array))) {\n const rawRes = result.body as AsyncIterable<bedrock.ResponseStream>;\n\n let streamedContent = \"\";\n for await (const value of rawRes) {\n // Convert it to a JSON String\n const jsonString = new TextDecoder().decode(value.chunk?.bytes);\n // Parse the JSON string\n const parsedResponse = JSON.parse(jsonString);\n\n if (\"amazon-bedrock-invocationMetrics\" in parsedResponse) {\n span.setAttribute(\n SpanAttributes.LLM_USAGE_PROMPT_TOKENS,\n parsedResponse[\"amazon-bedrock-invocationMetrics\"][\n \"inputTokenCount\"\n ],\n );\n span.setAttribute(\n SpanAttributes.LLM_USAGE_COMPLETION_TOKENS,\n parsedResponse[\"amazon-bedrock-invocationMetrics\"][\n \"outputTokenCount\"\n ],\n );\n\n span.setAttribute(\n SpanAttributes.LLM_USAGE_TOTAL_TOKENS,\n parsedResponse[\"amazon-bedrock-invocationMetrics\"][\n \"inputTokenCount\"\n ] +\n parsedResponse[\"amazon-bedrock-invocationMetrics\"][\n \"outputTokenCount\"\n ],\n );\n }\n\n let responseAttributes = this._setResponseAttributes(\n attributes[SpanAttributes.LLM_SYSTEM],\n parsedResponse,\n true,\n );\n\n // ! NOTE: This make sure the content always have all streamed chunks\n if (this._shouldSendPrompts()) {\n // Update local value with attribute value that was set by _setResponseAttributes\n streamedContent +=\n responseAttributes[\n `${SpanAttributes.LLM_COMPLETIONS}.0.content`\n ];\n // re-assign the new value to responseAttributes\n responseAttributes = {\n ...responseAttributes,\n [`${SpanAttributes.LLM_COMPLETIONS}.0.content`]:\n streamedContent,\n };\n }\n\n span.setAttributes(responseAttributes);\n }\n } else if (result.body instanceof Object.getPrototypeOf(Uint8Array)) {\n // Convert it to a JSON String\n const jsonString = new TextDecoder().decode(\n result.body as Uint8Array,\n );\n // Parse the JSON string\n const parsedResponse = JSON.parse(jsonString);\n\n const responseAttributes = this._setResponseAttributes(\n attributes[SpanAttributes.LLM_SYSTEM],\n parsedResponse,\n );\n\n span.setAttributes(responseAttributes);\n }\n }\n }\n } catch (e) {\n this._diag.debug(e);\n this._config.exceptionLogger?.(e);\n }\n\n span.setStatus({ code: SpanStatusCode.OK });\n span.end();\n }\n\n private _setRequestAttributes(\n vendor: string,\n requestBody: Record<string, any>,\n ) {\n switch (vendor) {\n case \"ai21\": {\n return {\n [SpanAttributes.LLM_REQUEST_TOP_P]: requestBody[\"topP\"],\n [SpanAttributes.LLM_REQUEST_TEMPERATURE]: requestBody[\"temperature\"],\n [SpanAttributes.LLM_REQUEST_MAX_TOKENS]: requestBody[\"maxTokens\"],\n [SpanAttributes.LLM_PRESENCE_PENALTY]:\n requestBody[\"presencePenalty\"][\"scale\"],\n [SpanAttributes.LLM_FREQUENCY_PENALTY]:\n requestBody[\"frequencyPenalty\"][\"scale\"],\n\n // Prompt & Role\n ...(this._shouldSendPrompts()\n ? {\n [`${SpanAttributes.LLM_PROMPTS}.0.role`]: \"user\",\n [`${SpanAttributes.LLM_PROMPTS}.0.content`]:\n requestBody[\"prompt\"],\n }\n : {}),\n };\n }\n case \"amazon\": {\n return {\n [SpanAttributes.LLM_REQUEST_TOP_P]:\n requestBody[\"textGenerationConfig\"][\"topP\"],\n [SpanAttributes.LLM_REQUEST_TEMPERATURE]:\n requestBody[\"textGenerationConfig\"][\"temperature\"],\n [SpanAttributes.LLM_REQUEST_MAX_TOKENS]:\n requestBody[\"textGenerationConfig\"][\"maxTokenCount\"],\n\n // Prompt & Role\n ...(this._shouldSendPrompts()\n ? {\n [`${SpanAttributes.LLM_PROMPTS}.0.role`]: \"user\",\n [`${SpanAttributes.LLM_PROMPTS}.0.content`]:\n requestBody[\"inputText\"],\n }\n : {}),\n };\n }\n case \"anthropic\": {\n return {\n [SpanAttributes.LLM_REQUEST_TOP_P]: requestBody[\"top_p\"],\n [SpanAttributes.LLM_TOP_K]: requestBody[\"top_k\"],\n [SpanAttributes.LLM_REQUEST_TEMPERATURE]: requestBody[\"temperature\"],\n [SpanAttributes.LLM_REQUEST_MAX_TOKENS]:\n requestBody[\"max_tokens_to_sample\"],\n\n // Prompt & Role\n ...(this._shouldSendPrompts()\n ? {\n [`${SpanAttributes.LLM_PROMPTS}.0.role`]: \"user\",\n [`${SpanAttributes.LLM_PROMPTS}.0.content`]: requestBody[\n \"prompt\"\n ]\n // The format is removing when we are setting span attribute\n .replace(\"\\n\\nHuman:\", \"\")\n .replace(\"\\n\\nAssistant:\", \"\"),\n }\n : {}),\n };\n }\n case \"cohere\": {\n return {\n [SpanAttributes.LLM_REQUEST_TOP_P]: requestBody[\"p\"],\n [SpanAttributes.LLM_TOP_K]: requestBody[\"k\"],\n [SpanAttributes.LLM_REQUEST_TEMPERATURE]: requestBody[\"temperature\"],\n [SpanAttributes.LLM_REQUEST_MAX_TOKENS]: requestBody[\"max_tokens\"],\n\n // Prompt & Role\n ...(this._shouldSendPrompts()\n ? {\n [`${SpanAttributes.LLM_PROMPTS}.0.role`]: \"user\",\n [`${SpanAttributes.LLM_PROMPTS}.0.content`]:\n requestBody[\"prompt\"],\n }\n : {}),\n };\n }\n case \"meta\": {\n return {\n [SpanAttributes.LLM_REQUEST_TOP_P]: requestBody[\"top_p\"],\n [SpanAttributes.LLM_REQUEST_TEMPERATURE]: requestBody[\"temperature\"],\n [SpanAttributes.LLM_REQUEST_MAX_TOKENS]: requestBody[\"max_gen_len\"],\n\n // Prompt & Role\n ...(this._shouldSendPrompts()\n ? {\n [`${SpanAttributes.LLM_PROMPTS}.0.role`]: \"user\",\n [`${SpanAttributes.LLM_PROMPTS}.0.content`]:\n requestBody[\"prompt\"],\n }\n : {}),\n };\n }\n default:\n return {};\n }\n }\n\n private _setResponseAttributes(\n vendor: string,\n response: Record<string, any>,\n isStream = false,\n ) {\n switch (vendor) {\n case \"ai21\": {\n return {\n [`${SpanAttributes.LLM_COMPLETIONS}.0.finish_reason`]:\n response[\"completions\"][0][\"finishReason\"][\"reason\"],\n [`${SpanAttributes.LLM_COMPLETIONS}.0.role`]: \"assistant\",\n ...(this._shouldSendPrompts()\n ? {\n [`${SpanAttributes.LLM_COMPLETIONS}.0.content`]:\n response[\"completions\"][0][\"data\"][\"text\"],\n }\n : {}),\n };\n }\n case \"amazon\": {\n return {\n [`${SpanAttributes.LLM_COMPLETIONS}.0.finish_reason`]: isStream\n ? response[\"completionReason\"]\n : response[\"results\"][0][\"completionReason\"],\n [`${SpanAttributes.LLM_COMPLETIONS}.0.role`]: \"assistant\",\n [SpanAttributes.LLM_USAGE_PROMPT_TOKENS]:\n response[\"inputTextTokenCount\"],\n [SpanAttributes.LLM_USAGE_COMPLETION_TOKENS]: isStream\n ? response[\"totalOutputTextTokenCount\"]\n : response[\"results\"][0][\"tokenCount\"],\n [SpanAttributes.LLM_USAGE_TOTAL_TOKENS]: isStream\n ? response[\"inputTextTokenCount\"] +\n response[\"totalOutputTextTokenCount\"]\n : response[\"inputTextTokenCount\"] +\n response[\"results\"][0][\"tokenCount\"],\n ...(this._shouldSendPrompts()\n ? {\n [`${SpanAttributes.LLM_COMPLETIONS}.0.content`]: isStream\n ? response[\"outputText\"]\n : response[\"results\"][0][\"outputText\"],\n }\n : {}),\n };\n }\n case \"anthropic\": {\n return {\n [`${SpanAttributes.LLM_COMPLETIONS}.0.finish_reason`]:\n response[\"stop_reason\"],\n [`${SpanAttributes.LLM_COMPLETIONS}.0.role`]: \"assistant\",\n ...(this._shouldSendPrompts()\n ? {\n [`${SpanAttributes.LLM_COMPLETIONS}.0.content`]:\n response[\"completion\"],\n }\n : {}),\n };\n }\n case \"cohere\": {\n return {\n [`${SpanAttributes.LLM_COMPLETIONS}.0.finish_reason`]:\n response[\"generations\"][0][\"finish_reason\"],\n [`${SpanAttributes.LLM_COMPLETIONS}.0.role`]: \"assistant\",\n ...(this._shouldSendPrompts()\n ? {\n [`${SpanAttributes.LLM_COMPLETIONS}.0.content`]:\n response[\"generations\"][0][\"text\"],\n }\n : {}),\n };\n }\n case \"meta\": {\n return {\n [`${SpanAttributes.LLM_COMPLETIONS}.0.finish_reason`]:\n response[\"stop_reason\"],\n [`${SpanAttributes.LLM_COMPLETIONS}.0.role`]: \"assistant\",\n [SpanAttributes.LLM_USAGE_PROMPT_TOKENS]:\n response[\"prompt_token_count\"],\n [SpanAttributes.LLM_USAGE_COMPLETION_TOKENS]:\n response[\"generation_token_count\"],\n [SpanAttributes.LLM_USAGE_TOTAL_TOKENS]:\n response[\"prompt_token_count\"] + response[\"generation_token_count\"],\n ...(this._shouldSendPrompts()\n ? {\n [`${SpanAttributes.LLM_COMPLETIONS}.0.content`]:\n response[\"generation\"],\n }\n : {}),\n };\n }\n default:\n return {};\n }\n }\n\n private _shouldSendPrompts() {\n const contextShouldSendPrompts = context\n .active()\n .getValue(CONTEXT_KEY_ALLOW_TRACE_CONTENT);\n\n if (contextShouldSendPrompts !== undefined) {\n return contextShouldSendPrompts;\n }\n\n return this._config.traceContent !== undefined\n ? this._config.traceContent\n : true;\n }\n}\n"],"names":["InstrumentationBase","InstrumentationNodeModuleDefinition","trace","context","safeExecuteInTheMiddle","__awaiter","SpanStatusCode","SpanAttributes","LLMRequestTypeValues","SpanKind","__asyncValues","CONTEXT_KEY_ALLOW_TRACE_CONTENT"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/instrumentation.ts"],"sourcesContent":["/*\n * Copyright Traceloop\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n Span,\n Attributes,\n SpanKind,\n SpanStatusCode,\n context,\n trace,\n} from \"@opentelemetry/api\";\nimport {\n InstrumentationBase,\n InstrumentationModuleDefinition,\n InstrumentationNodeModuleDefinition,\n safeExecuteInTheMiddle,\n} from \"@opentelemetry/instrumentation\";\nimport { BedrockInstrumentationConfig } from \"./types\";\nimport type * as bedrock from \"@aws-sdk/client-bedrock-runtime\";\nimport {\n CONTEXT_KEY_ALLOW_TRACE_CONTENT,\n LLMRequestTypeValues,\n SpanAttributes,\n} from \"@traceloop/ai-semantic-conventions\";\nimport { version } from \"../package.json\";\n\nexport class BedrockInstrumentation extends InstrumentationBase {\n declare protected _config: BedrockInstrumentationConfig;\n\n constructor(config: BedrockInstrumentationConfig = {}) {\n super(\"@traceloop/instrumentation-bedrock\", version, config);\n }\n\n public override setConfig(config: BedrockInstrumentationConfig = {}) {\n super.setConfig(config);\n }\n\n protected init(): InstrumentationModuleDefinition {\n const module = new InstrumentationNodeModuleDefinition(\n \"@aws-sdk/client-bedrock-runtime\",\n [\">=3.499.0\"],\n this.wrap.bind(this),\n this.unwrap.bind(this),\n );\n\n return module;\n }\n\n public manuallyInstrument(module: typeof bedrock) {\n this._diag.debug(`Patching @aws-sdk/client-bedrock-runtime manually`);\n\n this._wrap(\n module.BedrockRuntimeClient.prototype,\n \"send\",\n this.wrapperMethod(),\n );\n }\n\n private wrap(module: typeof bedrock, moduleVersion?: string) {\n this._diag.debug(\n `Patching @aws-sdk/client-bedrock-runtime@${moduleVersion}`,\n );\n\n this._wrap(\n module.BedrockRuntimeClient.prototype,\n \"send\",\n this.wrapperMethod(),\n );\n\n return module;\n }\n\n private unwrap(module: typeof bedrock, moduleVersion?: string) {\n this._diag.debug(\n `Unpatching @aws-sdk/client-bedrock-runtime@${moduleVersion}`,\n );\n\n this._unwrap(module.BedrockRuntimeClient.prototype, \"send\");\n }\n\n private wrapperMethod() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const plugin = this;\n // eslint-disable-next-line\n return (original: Function) => {\n return function method(this: any, ...args: any) {\n const span = plugin._startSpan({\n params: args[0],\n });\n const execContext = trace.setSpan(context.active(), span);\n const execPromise = safeExecuteInTheMiddle(\n () => {\n return context.with(execContext, () => {\n return original.apply(this, args);\n });\n },\n (e) => {\n if (e) {\n plugin._diag.error(`Error in bedrock instrumentation`, e);\n }\n },\n );\n const wrappedPromise = plugin._wrapPromise(span, execPromise);\n return context.bind(execContext, wrappedPromise);\n };\n };\n }\n private _wrapPromise<T>(span: Span, promise: Promise<T>): Promise<T> {\n return promise\n .then(async (result) => {\n await this._endSpan({\n span,\n result: result as\n | bedrock.InvokeModelCommandOutput\n | bedrock.InvokeModelWithResponseStreamCommandOutput,\n });\n\n return new Promise<T>((resolve) => resolve(result));\n })\n .catch((error: Error) => {\n return new Promise<T>((_, reject) => {\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n });\n span.recordException(error);\n span.end();\n\n reject(error);\n });\n });\n }\n\n private _startSpan({\n params,\n }: {\n params: Parameters<bedrock.BedrockRuntimeClient[\"send\"]>[0];\n }): Span {\n let attributes: Attributes = {};\n\n try {\n const input = params.input as bedrock.InvokeModelCommandInput;\n const [vendor, model] = input.modelId\n ? input.modelId.split(\".\")\n : [\"\", \"\"];\n\n attributes = {\n [SpanAttributes.LLM_SYSTEM]: vendor,\n [SpanAttributes.LLM_REQUEST_MODEL]: model,\n [SpanAttributes.LLM_RESPONSE_MODEL]: model,\n [SpanAttributes.LLM_REQUEST_TYPE]: LLMRequestTypeValues.COMPLETION,\n };\n\n if (typeof input.body === \"string\") {\n const requestBody = JSON.parse(input.body);\n\n attributes = {\n ...attributes,\n ...this._setRequestAttributes(vendor, requestBody),\n };\n }\n } catch (e) {\n this._diag.debug(e);\n this._config.exceptionLogger?.(e);\n }\n\n return this.tracer.startSpan(`bedrock.completion`, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n }\n\n private async _endSpan({\n span,\n result,\n }: {\n span: Span;\n result:\n | bedrock.InvokeModelCommandOutput\n | bedrock.InvokeModelWithResponseStreamCommandOutput;\n }) {\n try {\n if (\"body\" in result) {\n const attributes =\n \"attributes\" in span\n ? (span[\"attributes\"] as Record<string, any>)\n : {};\n\n if (SpanAttributes.LLM_SYSTEM in attributes) {\n if (!(result.body instanceof Object.getPrototypeOf(Uint8Array))) {\n const rawRes = result.body as AsyncIterable<bedrock.ResponseStream>;\n\n let streamedContent = \"\";\n for await (const value of rawRes) {\n // Convert it to a JSON String\n const jsonString = new TextDecoder().decode(value.chunk?.bytes);\n // Parse the JSON string\n const parsedResponse = JSON.parse(jsonString);\n\n if (\"amazon-bedrock-invocationMetrics\" in parsedResponse) {\n span.setAttribute(\n SpanAttributes.LLM_USAGE_PROMPT_TOKENS,\n parsedResponse[\"amazon-bedrock-invocationMetrics\"][\n \"inputTokenCount\"\n ],\n );\n span.setAttribute(\n SpanAttributes.LLM_USAGE_COMPLETION_TOKENS,\n parsedResponse[\"amazon-bedrock-invocationMetrics\"][\n \"outputTokenCount\"\n ],\n );\n\n span.setAttribute(\n SpanAttributes.LLM_USAGE_TOTAL_TOKENS,\n parsedResponse[\"amazon-bedrock-invocationMetrics\"][\n \"inputTokenCount\"\n ] +\n parsedResponse[\"amazon-bedrock-invocationMetrics\"][\n \"outputTokenCount\"\n ],\n );\n }\n\n let responseAttributes = this._setResponseAttributes(\n attributes[SpanAttributes.LLM_SYSTEM],\n parsedResponse,\n true,\n );\n\n // ! NOTE: This make sure the content always have all streamed chunks\n if (this._shouldSendPrompts()) {\n // Update local value with attribute value that was set by _setResponseAttributes\n streamedContent +=\n responseAttributes[\n `${SpanAttributes.LLM_COMPLETIONS}.0.content`\n ];\n // re-assign the new value to responseAttributes\n responseAttributes = {\n ...responseAttributes,\n [`${SpanAttributes.LLM_COMPLETIONS}.0.content`]:\n streamedContent,\n };\n }\n\n span.setAttributes(responseAttributes);\n }\n } else if (result.body instanceof Object.getPrototypeOf(Uint8Array)) {\n // Convert it to a JSON String\n const jsonString = new TextDecoder().decode(\n result.body as Uint8Array,\n );\n // Parse the JSON string\n const parsedResponse = JSON.parse(jsonString);\n\n const responseAttributes = this._setResponseAttributes(\n attributes[SpanAttributes.LLM_SYSTEM],\n parsedResponse,\n );\n\n span.setAttributes(responseAttributes);\n }\n }\n }\n } catch (e) {\n this._diag.debug(e);\n this._config.exceptionLogger?.(e);\n }\n\n span.setStatus({ code: SpanStatusCode.OK });\n span.end();\n }\n\n private _setRequestAttributes(\n vendor: string,\n requestBody: Record<string, any>,\n ) {\n switch (vendor) {\n case \"ai21\": {\n return {\n [SpanAttributes.LLM_REQUEST_TOP_P]: requestBody[\"topP\"],\n [SpanAttributes.LLM_REQUEST_TEMPERATURE]: requestBody[\"temperature\"],\n [SpanAttributes.LLM_REQUEST_MAX_TOKENS]: requestBody[\"maxTokens\"],\n [SpanAttributes.LLM_PRESENCE_PENALTY]:\n requestBody[\"presencePenalty\"][\"scale\"],\n [SpanAttributes.LLM_FREQUENCY_PENALTY]:\n requestBody[\"frequencyPenalty\"][\"scale\"],\n\n // Prompt & Role\n ...(this._shouldSendPrompts()\n ? {\n [`${SpanAttributes.LLM_PROMPTS}.0.role`]: \"user\",\n [`${SpanAttributes.LLM_PROMPTS}.0.content`]:\n requestBody[\"prompt\"],\n }\n : {}),\n };\n }\n case \"amazon\": {\n return {\n [SpanAttributes.LLM_REQUEST_TOP_P]:\n requestBody[\"textGenerationConfig\"][\"topP\"],\n [SpanAttributes.LLM_REQUEST_TEMPERATURE]:\n requestBody[\"textGenerationConfig\"][\"temperature\"],\n [SpanAttributes.LLM_REQUEST_MAX_TOKENS]:\n requestBody[\"textGenerationConfig\"][\"maxTokenCount\"],\n\n // Prompt & Role\n ...(this._shouldSendPrompts()\n ? {\n [`${SpanAttributes.LLM_PROMPTS}.0.role`]: \"user\",\n [`${SpanAttributes.LLM_PROMPTS}.0.content`]:\n requestBody[\"inputText\"],\n }\n : {}),\n };\n }\n case \"anthropic\": {\n return {\n [SpanAttributes.LLM_REQUEST_TOP_P]: requestBody[\"top_p\"],\n [SpanAttributes.LLM_TOP_K]: requestBody[\"top_k\"],\n [SpanAttributes.LLM_REQUEST_TEMPERATURE]: requestBody[\"temperature\"],\n [SpanAttributes.LLM_REQUEST_MAX_TOKENS]:\n requestBody[\"max_tokens_to_sample\"],\n\n // Prompt & Role\n ...(this._shouldSendPrompts()\n ? {\n [`${SpanAttributes.LLM_PROMPTS}.0.role`]: \"user\",\n [`${SpanAttributes.LLM_PROMPTS}.0.content`]: requestBody[\n \"prompt\"\n ]\n // The format is removing when we are setting span attribute\n .replace(\"\\n\\nHuman:\", \"\")\n .replace(\"\\n\\nAssistant:\", \"\"),\n }\n : {}),\n };\n }\n case \"cohere\": {\n return {\n [SpanAttributes.LLM_REQUEST_TOP_P]: requestBody[\"p\"],\n [SpanAttributes.LLM_TOP_K]: requestBody[\"k\"],\n [SpanAttributes.LLM_REQUEST_TEMPERATURE]: requestBody[\"temperature\"],\n [SpanAttributes.LLM_REQUEST_MAX_TOKENS]: requestBody[\"max_tokens\"],\n\n // Prompt & Role\n ...(this._shouldSendPrompts()\n ? {\n [`${SpanAttributes.LLM_PROMPTS}.0.role`]: \"user\",\n [`${SpanAttributes.LLM_PROMPTS}.0.content`]:\n requestBody[\"prompt\"],\n }\n : {}),\n };\n }\n case \"meta\": {\n return {\n [SpanAttributes.LLM_REQUEST_TOP_P]: requestBody[\"top_p\"],\n [SpanAttributes.LLM_REQUEST_TEMPERATURE]: requestBody[\"temperature\"],\n [SpanAttributes.LLM_REQUEST_MAX_TOKENS]: requestBody[\"max_gen_len\"],\n\n // Prompt & Role\n ...(this._shouldSendPrompts()\n ? {\n [`${SpanAttributes.LLM_PROMPTS}.0.role`]: \"user\",\n [`${SpanAttributes.LLM_PROMPTS}.0.content`]:\n requestBody[\"prompt\"],\n }\n : {}),\n };\n }\n default:\n return {};\n }\n }\n\n private _setResponseAttributes(\n vendor: string,\n response: Record<string, any>,\n isStream = false,\n ) {\n switch (vendor) {\n case \"ai21\": {\n return {\n [`${SpanAttributes.LLM_COMPLETIONS}.0.finish_reason`]:\n response[\"completions\"][0][\"finishReason\"][\"reason\"],\n [`${SpanAttributes.LLM_COMPLETIONS}.0.role`]: \"assistant\",\n ...(this._shouldSendPrompts()\n ? {\n [`${SpanAttributes.LLM_COMPLETIONS}.0.content`]:\n response[\"completions\"][0][\"data\"][\"text\"],\n }\n : {}),\n };\n }\n case \"amazon\": {\n return {\n [`${SpanAttributes.LLM_COMPLETIONS}.0.finish_reason`]: isStream\n ? response[\"completionReason\"]\n : response[\"results\"][0][\"completionReason\"],\n [`${SpanAttributes.LLM_COMPLETIONS}.0.role`]: \"assistant\",\n [SpanAttributes.LLM_USAGE_PROMPT_TOKENS]:\n response[\"inputTextTokenCount\"],\n [SpanAttributes.LLM_USAGE_COMPLETION_TOKENS]: isStream\n ? response[\"totalOutputTextTokenCount\"]\n : response[\"results\"][0][\"tokenCount\"],\n [SpanAttributes.LLM_USAGE_TOTAL_TOKENS]: isStream\n ? response[\"inputTextTokenCount\"] +\n response[\"totalOutputTextTokenCount\"]\n : response[\"inputTextTokenCount\"] +\n response[\"results\"][0][\"tokenCount\"],\n ...(this._shouldSendPrompts()\n ? {\n [`${SpanAttributes.LLM_COMPLETIONS}.0.content`]: isStream\n ? response[\"outputText\"]\n : response[\"results\"][0][\"outputText\"],\n }\n : {}),\n };\n }\n case \"anthropic\": {\n return {\n [`${SpanAttributes.LLM_COMPLETIONS}.0.finish_reason`]:\n response[\"stop_reason\"],\n [`${SpanAttributes.LLM_COMPLETIONS}.0.role`]: \"assistant\",\n ...(this._shouldSendPrompts()\n ? {\n [`${SpanAttributes.LLM_COMPLETIONS}.0.content`]:\n response[\"completion\"],\n }\n : {}),\n };\n }\n case \"cohere\": {\n return {\n [`${SpanAttributes.LLM_COMPLETIONS}.0.finish_reason`]:\n response[\"generations\"][0][\"finish_reason\"],\n [`${SpanAttributes.LLM_COMPLETIONS}.0.role`]: \"assistant\",\n ...(this._shouldSendPrompts()\n ? {\n [`${SpanAttributes.LLM_COMPLETIONS}.0.content`]:\n response[\"generations\"][0][\"text\"],\n }\n : {}),\n };\n }\n case \"meta\": {\n return {\n [`${SpanAttributes.LLM_COMPLETIONS}.0.finish_reason`]:\n response[\"stop_reason\"],\n [`${SpanAttributes.LLM_COMPLETIONS}.0.role`]: \"assistant\",\n [SpanAttributes.LLM_USAGE_PROMPT_TOKENS]:\n response[\"prompt_token_count\"],\n [SpanAttributes.LLM_USAGE_COMPLETION_TOKENS]:\n response[\"generation_token_count\"],\n [SpanAttributes.LLM_USAGE_TOTAL_TOKENS]:\n response[\"prompt_token_count\"] + response[\"generation_token_count\"],\n ...(this._shouldSendPrompts()\n ? {\n [`${SpanAttributes.LLM_COMPLETIONS}.0.content`]:\n response[\"generation\"],\n }\n : {}),\n };\n }\n default:\n return {};\n }\n }\n\n private _shouldSendPrompts() {\n const contextShouldSendPrompts = context\n .active()\n .getValue(CONTEXT_KEY_ALLOW_TRACE_CONTENT);\n\n if (contextShouldSendPrompts !== undefined) {\n return contextShouldSendPrompts;\n }\n\n return this._config.traceContent !== undefined\n ? this._config.traceContent\n : true;\n }\n}\n"],"names":["InstrumentationBase","InstrumentationNodeModuleDefinition","trace","context","safeExecuteInTheMiddle","__awaiter","SpanStatusCode","SpanAttributes","LLMRequestTypeValues","SpanKind","__asyncValues","CONTEXT_KEY_ALLOW_TRACE_CONTENT"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -3,7 +3,7 @@ import { trace, context, SpanStatusCode, SpanKind } from '@opentelemetry/api';
3
3
  import { InstrumentationBase, InstrumentationNodeModuleDefinition, safeExecuteInTheMiddle } from '@opentelemetry/instrumentation';
4
4
  import { SpanAttributes, LLMRequestTypeValues, CONTEXT_KEY_ALLOW_TRACE_CONTENT } from '@traceloop/ai-semantic-conventions';
5
5
 
6
- var version = "0.11.0";
6
+ var version = "0.11.6";
7
7
 
8
8
  class BedrockInstrumentation extends InstrumentationBase {
9
9
  constructor(config = {}) {
@@ -32,7 +32,7 @@ class BedrockInstrumentation extends InstrumentationBase {
32
32
  wrapperMethod() {
33
33
  // eslint-disable-next-line @typescript-eslint/no-this-alias
34
34
  const plugin = this;
35
- // eslint-disable-next-line @typescript-eslint/ban-types
35
+ // eslint-disable-next-line
36
36
  return (original) => {
37
37
  return function method(...args) {
38
38
  const span = plugin._startSpan({
@@ -78,8 +78,9 @@ class BedrockInstrumentation extends InstrumentationBase {
78
78
  var _a, _b;
79
79
  let attributes = {};
80
80
  try {
81
- const [vendor, model] = params.input.modelId
82
- ? params.input.modelId.split(".")
81
+ const input = params.input;
82
+ const [vendor, model] = input.modelId
83
+ ? input.modelId.split(".")
83
84
  : ["", ""];
84
85
  attributes = {
85
86
  [SpanAttributes.LLM_SYSTEM]: vendor,
@@ -87,8 +88,8 @@ class BedrockInstrumentation extends InstrumentationBase {
87
88
  [SpanAttributes.LLM_RESPONSE_MODEL]: model,
88
89
  [SpanAttributes.LLM_REQUEST_TYPE]: LLMRequestTypeValues.COMPLETION,
89
90
  };
90
- if (typeof params.input.body === "string") {
91
- const requestBody = JSON.parse(params.input.body);
91
+ if (typeof input.body === "string") {
92
+ const requestBody = JSON.parse(input.body);
92
93
  attributes = Object.assign(Object.assign({}, attributes), this._setRequestAttributes(vendor, requestBody));
93
94
  }
94
95
  }
@@ -101,10 +102,10 @@ class BedrockInstrumentation extends InstrumentationBase {
101
102
  attributes,
102
103
  });
103
104
  }
104
- _endSpan({ span, result, }) {
105
- var _a, e_1, _b, _c;
106
- var _d, _e, _f;
107
- return __awaiter(this, void 0, void 0, function* () {
105
+ _endSpan(_a) {
106
+ return __awaiter(this, arguments, void 0, function* ({ span, result, }) {
107
+ var _b, e_1, _c, _d;
108
+ var _e, _f, _g;
108
109
  try {
109
110
  if ("body" in result) {
110
111
  const attributes = "attributes" in span
@@ -115,12 +116,12 @@ class BedrockInstrumentation extends InstrumentationBase {
115
116
  const rawRes = result.body;
116
117
  let streamedContent = "";
117
118
  try {
118
- for (var _g = true, rawRes_1 = __asyncValues(rawRes), rawRes_1_1; rawRes_1_1 = yield rawRes_1.next(), _a = rawRes_1_1.done, !_a; _g = true) {
119
- _c = rawRes_1_1.value;
120
- _g = false;
121
- const value = _c;
119
+ for (var _h = true, rawRes_1 = __asyncValues(rawRes), rawRes_1_1; rawRes_1_1 = yield rawRes_1.next(), _b = rawRes_1_1.done, !_b; _h = true) {
120
+ _d = rawRes_1_1.value;
121
+ _h = false;
122
+ const value = _d;
122
123
  // Convert it to a JSON String
123
- const jsonString = new TextDecoder().decode((_d = value.chunk) === null || _d === void 0 ? void 0 : _d.bytes);
124
+ const jsonString = new TextDecoder().decode((_e = value.chunk) === null || _e === void 0 ? void 0 : _e.bytes);
124
125
  // Parse the JSON string
125
126
  const parsedResponse = JSON.parse(jsonString);
126
127
  if ("amazon-bedrock-invocationMetrics" in parsedResponse) {
@@ -144,7 +145,7 @@ class BedrockInstrumentation extends InstrumentationBase {
144
145
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
145
146
  finally {
146
147
  try {
147
- if (!_g && !_a && (_b = rawRes_1.return)) yield _b.call(rawRes_1);
148
+ if (!_h && !_b && (_c = rawRes_1.return)) yield _c.call(rawRes_1);
148
149
  }
149
150
  finally { if (e_1) throw e_1.error; }
150
151
  }
@@ -162,7 +163,7 @@ class BedrockInstrumentation extends InstrumentationBase {
162
163
  }
163
164
  catch (e) {
164
165
  this._diag.debug(e);
165
- (_f = (_e = this._config).exceptionLogger) === null || _f === void 0 ? void 0 : _f.call(_e, e);
166
+ (_g = (_f = this._config).exceptionLogger) === null || _g === void 0 ? void 0 : _g.call(_f, e);
166
167
  }
167
168
  span.setStatus({ code: SpanStatusCode.OK });
168
169
  span.end();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@traceloop/instrumentation-bedrock",
3
- "version": "0.11.0",
3
+ "version": "0.11.6",
4
4
  "description": "Amazon Bedrock Instrumentation",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -8,8 +8,8 @@
8
8
  "repository": "traceloop/openllmetry-js",
9
9
  "scripts": {
10
10
  "build": "rollup -c",
11
- "lint": "eslint . --ext .ts",
12
- "lint:fix": "eslint . --ext .ts --fix",
11
+ "lint": "eslint .",
12
+ "lint:fix": "eslint . --fix",
13
13
  "test": "ts-mocha -p tsconfig.json 'tests/**/*.test.ts' --timeout 20000"
14
14
  },
15
15
  "keywords": [
@@ -38,18 +38,18 @@
38
38
  "access": "public"
39
39
  },
40
40
  "dependencies": {
41
- "@opentelemetry/core": "^1.25.0",
42
- "@opentelemetry/instrumentation": "^0.52.0",
43
- "@opentelemetry/semantic-conventions": "^1.25.0",
44
- "@traceloop/ai-semantic-conventions": "^0.11.0",
45
- "tslib": "^2.3.0"
41
+ "@opentelemetry/core": "^1.29.0",
42
+ "@opentelemetry/instrumentation": "^0.56.0",
43
+ "@opentelemetry/semantic-conventions": "^1.28.0",
44
+ "@traceloop/ai-semantic-conventions": "^0.11.6",
45
+ "tslib": "^2.8.1"
46
46
  },
47
47
  "devDependencies": {
48
- "@aws-sdk/client-bedrock-runtime": "^3.499.0",
48
+ "@aws-sdk/client-bedrock-runtime": "^3.709.0",
49
49
  "@pollyjs/adapter-node-http": "^6.0.6",
50
50
  "@pollyjs/core": "^6.0.6",
51
51
  "@pollyjs/persister-fs": "^6.0.6"
52
52
  },
53
53
  "homepage": "https://github.com/traceloop/openllmetry-js/tree/main/packages/instrumentation-openai",
54
- "gitHead": "77fe2d5853f90f5a9c1f1fedece8e3e8fc702adf"
54
+ "gitHead": "6196816b38d5438b2d71bdf5ea2275ac7cb6e14b"
55
55
  }