@traceloop/instrumentation-anthropic 0.11.1 → 0.12.0
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 +20 -19
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +20 -19
- package/package.json +11 -11
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.
|
|
8
|
+
var version = "0.12.0";
|
|
9
9
|
|
|
10
10
|
class AnthropicInstrumentation extends instrumentation.InstrumentationBase {
|
|
11
11
|
constructor(config = {}) {
|
|
@@ -37,7 +37,7 @@ class AnthropicInstrumentation extends instrumentation.InstrumentationBase {
|
|
|
37
37
|
patchAnthropic(type) {
|
|
38
38
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
39
39
|
const plugin = this;
|
|
40
|
-
// eslint-disable-next-line
|
|
40
|
+
// eslint-disable-next-line
|
|
41
41
|
return (original) => {
|
|
42
42
|
return function method(...args) {
|
|
43
43
|
const span = type === "chat"
|
|
@@ -131,10 +131,10 @@ class AnthropicInstrumentation extends instrumentation.InstrumentationBase {
|
|
|
131
131
|
attributes,
|
|
132
132
|
});
|
|
133
133
|
}
|
|
134
|
-
_streamingWrapPromise(
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
var
|
|
134
|
+
_streamingWrapPromise(_a) {
|
|
135
|
+
return tslib.__asyncGenerator(this, arguments, function* _streamingWrapPromise_1({ span, type, promise, }) {
|
|
136
|
+
var _b, e_1, _c, _d, _e, e_2, _f, _g;
|
|
137
|
+
var _h, _j, _k, _l;
|
|
138
138
|
if (type === "chat") {
|
|
139
139
|
const result = {
|
|
140
140
|
id: "0",
|
|
@@ -147,10 +147,10 @@ class AnthropicInstrumentation extends instrumentation.InstrumentationBase {
|
|
|
147
147
|
content: [],
|
|
148
148
|
};
|
|
149
149
|
try {
|
|
150
|
-
for (var
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
const chunk =
|
|
150
|
+
for (var _m = true, _o = tslib.__asyncValues(yield tslib.__await(promise)), _p; _p = yield tslib.__await(_o.next()), _b = _p.done, !_b; _m = true) {
|
|
151
|
+
_d = _p.value;
|
|
152
|
+
_m = false;
|
|
153
|
+
const chunk = _d;
|
|
154
154
|
yield yield tslib.__await(chunk);
|
|
155
155
|
try {
|
|
156
156
|
switch (chunk.type) {
|
|
@@ -174,14 +174,14 @@ class AnthropicInstrumentation extends instrumentation.InstrumentationBase {
|
|
|
174
174
|
}
|
|
175
175
|
catch (e) {
|
|
176
176
|
this._diag.debug(e);
|
|
177
|
-
(
|
|
177
|
+
(_j = (_h = this._config).exceptionLogger) === null || _j === void 0 ? void 0 : _j.call(_h, e);
|
|
178
178
|
}
|
|
179
179
|
}
|
|
180
180
|
}
|
|
181
181
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
182
182
|
finally {
|
|
183
183
|
try {
|
|
184
|
-
if (!
|
|
184
|
+
if (!_m && !_b && (_c = _o.return)) yield tslib.__await(_c.call(_o));
|
|
185
185
|
}
|
|
186
186
|
finally { if (e_1) throw e_1.error; }
|
|
187
187
|
}
|
|
@@ -196,10 +196,10 @@ class AnthropicInstrumentation extends instrumentation.InstrumentationBase {
|
|
|
196
196
|
stop_reason: null,
|
|
197
197
|
};
|
|
198
198
|
try {
|
|
199
|
-
for (var
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
const chunk =
|
|
199
|
+
for (var _q = true, _r = tslib.__asyncValues(yield tslib.__await(promise)), _s; _s = yield tslib.__await(_r.next()), _e = _s.done, !_e; _q = true) {
|
|
200
|
+
_g = _s.value;
|
|
201
|
+
_q = false;
|
|
202
|
+
const chunk = _g;
|
|
203
203
|
yield yield tslib.__await(chunk);
|
|
204
204
|
try {
|
|
205
205
|
result.id = chunk.id;
|
|
@@ -216,14 +216,14 @@ class AnthropicInstrumentation extends instrumentation.InstrumentationBase {
|
|
|
216
216
|
}
|
|
217
217
|
catch (e) {
|
|
218
218
|
this._diag.debug(e);
|
|
219
|
-
(
|
|
219
|
+
(_l = (_k = this._config).exceptionLogger) === null || _l === void 0 ? void 0 : _l.call(_k, e);
|
|
220
220
|
}
|
|
221
221
|
}
|
|
222
222
|
}
|
|
223
223
|
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
224
224
|
finally {
|
|
225
225
|
try {
|
|
226
|
-
if (!
|
|
226
|
+
if (!_q && !_e && (_f = _r.return)) yield tslib.__await(_f.call(_r));
|
|
227
227
|
}
|
|
228
228
|
finally { if (e_2) throw e_2.error; }
|
|
229
229
|
}
|
|
@@ -273,8 +273,9 @@ class AnthropicInstrumentation extends instrumentation.InstrumentationBase {
|
|
|
273
273
|
span.setAttribute(aiSemanticConventions.SpanAttributes.LLM_USAGE_COMPLETION_TOKENS, (_c = result.usage) === null || _c === void 0 ? void 0 : _c.output_tokens);
|
|
274
274
|
span.setAttribute(aiSemanticConventions.SpanAttributes.LLM_USAGE_PROMPT_TOKENS, (_d = result.usage) === null || _d === void 0 ? void 0 : _d.input_tokens);
|
|
275
275
|
}
|
|
276
|
-
result.stop_reason
|
|
276
|
+
if (result.stop_reason) {
|
|
277
277
|
span.setAttribute(`${aiSemanticConventions.SpanAttributes.LLM_COMPLETIONS}.0.finish_reason`, result.stop_reason);
|
|
278
|
+
}
|
|
278
279
|
if (this._shouldSendPrompts()) {
|
|
279
280
|
if (type === "chat") {
|
|
280
281
|
span.setAttribute(`${aiSemanticConventions.SpanAttributes.LLM_COMPLETIONS}.0.role`, "assistant");
|
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 context,\n trace,\n Span,\n Attributes,\n SpanKind,\n SpanStatusCode,\n} from \"@opentelemetry/api\";\nimport {\n InstrumentationBase,\n InstrumentationModuleDefinition,\n InstrumentationNodeModuleDefinition,\n safeExecuteInTheMiddle,\n} from \"@opentelemetry/instrumentation\";\nimport {\n CONTEXT_KEY_ALLOW_TRACE_CONTENT,\n SpanAttributes,\n} from \"@traceloop/ai-semantic-conventions\";\nimport { AnthropicInstrumentationConfig } from \"./types\";\nimport { version } from \"../package.json\";\nimport type * as anthropic from \"@anthropic-ai/sdk\";\nimport type {\n CompletionCreateParamsNonStreaming,\n CompletionCreateParamsStreaming,\n Completion,\n} from \"@anthropic-ai/sdk/resources/completions\";\nimport type {\n MessageCreateParamsNonStreaming,\n MessageCreateParamsStreaming,\n Message,\n MessageStreamEvent,\n} from \"@anthropic-ai/sdk/resources/messages\";\nimport type { Stream } from \"@anthropic-ai/sdk/streaming\";\n\nexport class AnthropicInstrumentation extends InstrumentationBase {\n protected declare _config: AnthropicInstrumentationConfig;\n\n constructor(config: AnthropicInstrumentationConfig = {}) {\n super(\"@traceloop/instrumentation-anthropic\", version, config);\n }\n\n public override setConfig(config: AnthropicInstrumentationConfig = {}) {\n super.setConfig(config);\n }\n\n public manuallyInstrument(module: typeof anthropic) {\n this._diag.debug(`Patching @anthropic-ai/sdk manually`);\n\n this._wrap(\n module.Anthropic.Completions.prototype,\n \"create\",\n this.patchAnthropic(\"completion\"),\n );\n this._wrap(\n module.Anthropic.Messages.prototype,\n \"create\",\n this.patchAnthropic(\"chat\"),\n );\n }\n\n protected init(): InstrumentationModuleDefinition {\n const module = new InstrumentationNodeModuleDefinition(\n \"@anthropic-ai/sdk\",\n [\">=0.9.1\"],\n this.patch.bind(this),\n this.unpatch.bind(this),\n );\n return module;\n }\n\n private patch(moduleExports: typeof anthropic, moduleVersion?: string) {\n this._diag.debug(`Patching @anthropic-ai/sdk@${moduleVersion}`);\n\n this._wrap(\n moduleExports.Anthropic.Completions.prototype,\n \"create\",\n this.patchAnthropic(\"completion\"),\n );\n this._wrap(\n moduleExports.Anthropic.Messages.prototype,\n \"create\",\n this.patchAnthropic(\"chat\"),\n );\n return moduleExports;\n }\n\n private unpatch(\n moduleExports: typeof anthropic,\n moduleVersion?: string,\n ): void {\n this._diag.debug(`Unpatching @azure/openai@${moduleVersion}`);\n\n this._unwrap(moduleExports.Anthropic.Completions.prototype, \"create\");\n this._unwrap(moduleExports.Anthropic.Messages.prototype, \"create\");\n }\n\n private patchAnthropic(type: \"chat\" | \"completion\") {\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: unknown[]) {\n const span =\n type === \"chat\"\n ? plugin.startSpan({\n type,\n params: args[0] as MessageCreateParamsNonStreaming & {\n extraAttributes?: Record<string, any>;\n },\n })\n : plugin.startSpan({\n type,\n params: args[0] as CompletionCreateParamsNonStreaming & {\n extraAttributes?: Record<string, any>;\n },\n });\n\n const execContext = trace.setSpan(context.active(), span);\n const execPromise = safeExecuteInTheMiddle(\n () => {\n return context.with(execContext, () => {\n if ((args?.[0] as any)?.extraAttributes) {\n delete (args[0] as any).extraAttributes;\n }\n return original.apply(this, args);\n });\n },\n (e) => {\n if (e) {\n plugin._diag.error(\"Error in Anthropic instrumentation\", e);\n }\n },\n );\n\n if (\n (\n args[0] as\n | MessageCreateParamsStreaming\n | CompletionCreateParamsStreaming\n ).stream &&\n type === \"completion\" // For some reason, this causes an exception with chat, so disabled for now\n ) {\n return context.bind(\n execContext,\n plugin._streamingWrapPromise({\n span,\n type,\n promise: execPromise,\n }),\n );\n }\n\n const wrappedPromise = plugin._wrapPromise(type, span, execPromise);\n\n return context.bind(execContext, wrappedPromise as any);\n };\n };\n }\n\n private startSpan({\n type,\n params,\n }:\n | {\n type: \"chat\";\n params: MessageCreateParamsNonStreaming & {\n extraAttributes?: Record<string, any>;\n };\n }\n | {\n type: \"completion\";\n params: CompletionCreateParamsNonStreaming & {\n extraAttributes?: Record<string, any>;\n };\n }): Span {\n const attributes: Attributes = {\n [SpanAttributes.LLM_SYSTEM]: \"Anthropic\",\n [SpanAttributes.LLM_REQUEST_TYPE]: type,\n };\n\n try {\n attributes[SpanAttributes.LLM_REQUEST_MODEL] = params.model;\n attributes[SpanAttributes.LLM_REQUEST_TEMPERATURE] = params.temperature;\n attributes[SpanAttributes.LLM_REQUEST_TOP_P] = params.top_p;\n attributes[SpanAttributes.LLM_TOP_K] = params.top_k;\n\n if (type === \"completion\") {\n attributes[SpanAttributes.LLM_REQUEST_MAX_TOKENS] =\n params.max_tokens_to_sample;\n } else {\n attributes[SpanAttributes.LLM_REQUEST_MAX_TOKENS] = params.max_tokens;\n }\n\n if (\n params.extraAttributes !== undefined &&\n typeof params.extraAttributes === \"object\"\n ) {\n Object.keys(params.extraAttributes).forEach((key: string) => {\n attributes[key] = params.extraAttributes![key];\n });\n }\n\n if (this._shouldSendPrompts()) {\n if (type === \"chat\") {\n params.messages.forEach((message, index) => {\n attributes[`${SpanAttributes.LLM_PROMPTS}.${index}.role`] =\n message.role;\n if (typeof message.content === \"string\") {\n attributes[`${SpanAttributes.LLM_PROMPTS}.${index}.content`] =\n (message.content as string) || \"\";\n } else {\n attributes[`${SpanAttributes.LLM_PROMPTS}.${index}.content`] =\n JSON.stringify(message.content);\n }\n });\n } else {\n attributes[`${SpanAttributes.LLM_PROMPTS}.0.role`] = \"user\";\n attributes[`${SpanAttributes.LLM_PROMPTS}.0.content`] = params.prompt;\n }\n }\n } catch (e) {\n this._diag.debug(e);\n this._config.exceptionLogger?.(e);\n }\n\n return this.tracer.startSpan(`anthropic.${type}`, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n }\n\n private async *_streamingWrapPromise({\n span,\n type,\n promise,\n }:\n | {\n span: Span;\n type: \"chat\";\n promise: Promise<Stream<MessageStreamEvent>>;\n }\n | {\n span: Span;\n type: \"completion\";\n promise: Promise<Stream<Completion>>;\n }) {\n if (type === \"chat\") {\n const result: Message = {\n id: \"0\",\n type: \"message\",\n model: \"\",\n role: \"assistant\",\n stop_reason: null,\n stop_sequence: null,\n usage: { input_tokens: 0, output_tokens: 0 },\n content: [],\n };\n for await (const chunk of await promise) {\n yield chunk;\n\n try {\n switch (chunk.type) {\n case \"content_block_start\":\n if (result.content.length <= chunk.index) {\n result.content.push(chunk.content_block);\n }\n break;\n\n case \"content_block_delta\":\n if (chunk.index < result.content.length) {\n const current = result.content[chunk.index];\n if (\n current.type === \"text\" &&\n chunk.delta.type === \"text_delta\"\n ) {\n result.content[chunk.index] = {\n type: \"text\",\n text: current.text + chunk.delta.text,\n };\n }\n }\n }\n } catch (e) {\n this._diag.debug(e);\n this._config.exceptionLogger?.(e);\n }\n }\n\n this._endSpan({ span, type, result });\n } else {\n const result: Completion = {\n id: \"0\",\n type: \"completion\",\n model: \"\",\n completion: \"\",\n stop_reason: null,\n };\n for await (const chunk of await promise) {\n yield chunk;\n\n try {\n result.id = chunk.id;\n result.model = chunk.model;\n\n if (chunk.stop_reason) {\n result.stop_reason = chunk.stop_reason;\n }\n if (chunk.model) {\n result.model = chunk.model;\n }\n if (chunk.completion) {\n result.completion += chunk.completion;\n }\n } catch (e) {\n this._diag.debug(e);\n this._config.exceptionLogger?.(e);\n }\n }\n\n this._endSpan({ span, type, result });\n }\n }\n\n private _wrapPromise<T>(\n type: \"chat\" | \"completion\",\n span: Span,\n promise: Promise<T>,\n ): Promise<T> {\n return promise\n .then((result) => {\n return new Promise<T>((resolve) => {\n if (type === \"chat\") {\n this._endSpan({\n type,\n span,\n result: result as Message,\n });\n } else {\n this._endSpan({\n type,\n span,\n result: result as Completion,\n });\n }\n\n resolve(result);\n });\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 _endSpan({\n span,\n type,\n result,\n }:\n | { span: Span; type: \"chat\"; result: Message }\n | {\n span: Span;\n type: \"completion\";\n result: Completion;\n }) {\n try {\n span.setAttribute(SpanAttributes.LLM_RESPONSE_MODEL, result.model);\n if (type === \"chat\" && result.usage) {\n span.setAttribute(\n SpanAttributes.LLM_USAGE_TOTAL_TOKENS,\n result.usage?.input_tokens + result.usage?.output_tokens,\n );\n span.setAttribute(\n SpanAttributes.LLM_USAGE_COMPLETION_TOKENS,\n result.usage?.output_tokens,\n );\n span.setAttribute(\n SpanAttributes.LLM_USAGE_PROMPT_TOKENS,\n result.usage?.input_tokens,\n );\n }\n\n result.stop_reason &&\n span.setAttribute(\n `${SpanAttributes.LLM_COMPLETIONS}.0.finish_reason`,\n result.stop_reason,\n );\n\n if (this._shouldSendPrompts()) {\n if (type === \"chat\") {\n span.setAttribute(\n `${SpanAttributes.LLM_COMPLETIONS}.0.role`,\n \"assistant\",\n );\n span.setAttribute(\n `${SpanAttributes.LLM_COMPLETIONS}.0.content`,\n JSON.stringify(result.content),\n );\n } else {\n span.setAttribute(\n `${SpanAttributes.LLM_COMPLETIONS}.0.role`,\n \"assistant\",\n );\n span.setAttribute(\n `${SpanAttributes.LLM_COMPLETIONS}.0.content`,\n result.completion,\n );\n }\n }\n } catch (e) {\n this._diag.debug(e);\n this._config.exceptionLogger?.(e);\n }\n\n span.end();\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","SpanAttributes","SpanKind","__asyncValues","__await","SpanStatusCode","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 context,\n trace,\n Span,\n Attributes,\n SpanKind,\n SpanStatusCode,\n} from \"@opentelemetry/api\";\nimport {\n InstrumentationBase,\n InstrumentationModuleDefinition,\n InstrumentationNodeModuleDefinition,\n safeExecuteInTheMiddle,\n} from \"@opentelemetry/instrumentation\";\nimport {\n CONTEXT_KEY_ALLOW_TRACE_CONTENT,\n SpanAttributes,\n} from \"@traceloop/ai-semantic-conventions\";\nimport { AnthropicInstrumentationConfig } from \"./types\";\nimport { version } from \"../package.json\";\nimport type * as anthropic from \"@anthropic-ai/sdk\";\nimport type {\n CompletionCreateParamsNonStreaming,\n CompletionCreateParamsStreaming,\n Completion,\n} from \"@anthropic-ai/sdk/resources/completions\";\nimport type {\n MessageCreateParamsNonStreaming,\n MessageCreateParamsStreaming,\n Message,\n MessageStreamEvent,\n} from \"@anthropic-ai/sdk/resources/messages\";\nimport type { Stream } from \"@anthropic-ai/sdk/streaming\";\n\nexport class AnthropicInstrumentation extends InstrumentationBase {\n declare protected _config: AnthropicInstrumentationConfig;\n\n constructor(config: AnthropicInstrumentationConfig = {}) {\n super(\"@traceloop/instrumentation-anthropic\", version, config);\n }\n\n public override setConfig(config: AnthropicInstrumentationConfig = {}) {\n super.setConfig(config);\n }\n\n public manuallyInstrument(module: typeof anthropic) {\n this._diag.debug(`Patching @anthropic-ai/sdk manually`);\n\n this._wrap(\n module.Anthropic.Completions.prototype,\n \"create\",\n this.patchAnthropic(\"completion\"),\n );\n this._wrap(\n module.Anthropic.Messages.prototype,\n \"create\",\n this.patchAnthropic(\"chat\"),\n );\n }\n\n protected init(): InstrumentationModuleDefinition {\n const module = new InstrumentationNodeModuleDefinition(\n \"@anthropic-ai/sdk\",\n [\">=0.9.1\"],\n this.patch.bind(this),\n this.unpatch.bind(this),\n );\n return module;\n }\n\n private patch(moduleExports: typeof anthropic, moduleVersion?: string) {\n this._diag.debug(`Patching @anthropic-ai/sdk@${moduleVersion}`);\n\n this._wrap(\n moduleExports.Anthropic.Completions.prototype,\n \"create\",\n this.patchAnthropic(\"completion\"),\n );\n this._wrap(\n moduleExports.Anthropic.Messages.prototype,\n \"create\",\n this.patchAnthropic(\"chat\"),\n );\n return moduleExports;\n }\n\n private unpatch(\n moduleExports: typeof anthropic,\n moduleVersion?: string,\n ): void {\n this._diag.debug(`Unpatching @azure/openai@${moduleVersion}`);\n\n this._unwrap(moduleExports.Anthropic.Completions.prototype, \"create\");\n this._unwrap(moduleExports.Anthropic.Messages.prototype, \"create\");\n }\n\n private patchAnthropic(type: \"chat\" | \"completion\") {\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: unknown[]) {\n const span =\n type === \"chat\"\n ? plugin.startSpan({\n type,\n params: args[0] as MessageCreateParamsNonStreaming & {\n extraAttributes?: Record<string, any>;\n },\n })\n : plugin.startSpan({\n type,\n params: args[0] as CompletionCreateParamsNonStreaming & {\n extraAttributes?: Record<string, any>;\n },\n });\n\n const execContext = trace.setSpan(context.active(), span);\n const execPromise = safeExecuteInTheMiddle(\n () => {\n return context.with(execContext, () => {\n if ((args?.[0] as any)?.extraAttributes) {\n delete (args[0] as any).extraAttributes;\n }\n return original.apply(this, args);\n });\n },\n (e) => {\n if (e) {\n plugin._diag.error(\"Error in Anthropic instrumentation\", e);\n }\n },\n );\n\n if (\n (\n args[0] as\n | MessageCreateParamsStreaming\n | CompletionCreateParamsStreaming\n ).stream &&\n type === \"completion\" // For some reason, this causes an exception with chat, so disabled for now\n ) {\n return context.bind(\n execContext,\n plugin._streamingWrapPromise({\n span,\n type,\n promise: execPromise,\n }),\n );\n }\n\n const wrappedPromise = plugin._wrapPromise(type, span, execPromise);\n\n return context.bind(execContext, wrappedPromise as any);\n };\n };\n }\n\n private startSpan({\n type,\n params,\n }:\n | {\n type: \"chat\";\n params: MessageCreateParamsNonStreaming & {\n extraAttributes?: Record<string, any>;\n };\n }\n | {\n type: \"completion\";\n params: CompletionCreateParamsNonStreaming & {\n extraAttributes?: Record<string, any>;\n };\n }): Span {\n const attributes: Attributes = {\n [SpanAttributes.LLM_SYSTEM]: \"Anthropic\",\n [SpanAttributes.LLM_REQUEST_TYPE]: type,\n };\n\n try {\n attributes[SpanAttributes.LLM_REQUEST_MODEL] = params.model;\n attributes[SpanAttributes.LLM_REQUEST_TEMPERATURE] = params.temperature;\n attributes[SpanAttributes.LLM_REQUEST_TOP_P] = params.top_p;\n attributes[SpanAttributes.LLM_TOP_K] = params.top_k;\n\n if (type === \"completion\") {\n attributes[SpanAttributes.LLM_REQUEST_MAX_TOKENS] =\n params.max_tokens_to_sample;\n } else {\n attributes[SpanAttributes.LLM_REQUEST_MAX_TOKENS] = params.max_tokens;\n }\n\n if (\n params.extraAttributes !== undefined &&\n typeof params.extraAttributes === \"object\"\n ) {\n Object.keys(params.extraAttributes).forEach((key: string) => {\n attributes[key] = params.extraAttributes![key];\n });\n }\n\n if (this._shouldSendPrompts()) {\n if (type === \"chat\") {\n params.messages.forEach((message, index) => {\n attributes[`${SpanAttributes.LLM_PROMPTS}.${index}.role`] =\n message.role;\n if (typeof message.content === \"string\") {\n attributes[`${SpanAttributes.LLM_PROMPTS}.${index}.content`] =\n (message.content as string) || \"\";\n } else {\n attributes[`${SpanAttributes.LLM_PROMPTS}.${index}.content`] =\n JSON.stringify(message.content);\n }\n });\n } else {\n attributes[`${SpanAttributes.LLM_PROMPTS}.0.role`] = \"user\";\n attributes[`${SpanAttributes.LLM_PROMPTS}.0.content`] = params.prompt;\n }\n }\n } catch (e) {\n this._diag.debug(e);\n this._config.exceptionLogger?.(e);\n }\n\n return this.tracer.startSpan(`anthropic.${type}`, {\n kind: SpanKind.CLIENT,\n attributes,\n });\n }\n\n private async *_streamingWrapPromise({\n span,\n type,\n promise,\n }:\n | {\n span: Span;\n type: \"chat\";\n promise: Promise<Stream<MessageStreamEvent>>;\n }\n | {\n span: Span;\n type: \"completion\";\n promise: Promise<Stream<Completion>>;\n }) {\n if (type === \"chat\") {\n const result: Message = {\n id: \"0\",\n type: \"message\",\n model: \"\",\n role: \"assistant\",\n stop_reason: null,\n stop_sequence: null,\n usage: { input_tokens: 0, output_tokens: 0 },\n content: [],\n };\n for await (const chunk of await promise) {\n yield chunk;\n\n try {\n switch (chunk.type) {\n case \"content_block_start\":\n if (result.content.length <= chunk.index) {\n result.content.push(chunk.content_block);\n }\n break;\n\n case \"content_block_delta\":\n if (chunk.index < result.content.length) {\n const current = result.content[chunk.index];\n if (\n current.type === \"text\" &&\n chunk.delta.type === \"text_delta\"\n ) {\n result.content[chunk.index] = {\n type: \"text\",\n text: current.text + chunk.delta.text,\n };\n }\n }\n }\n } catch (e) {\n this._diag.debug(e);\n this._config.exceptionLogger?.(e);\n }\n }\n\n this._endSpan({ span, type, result });\n } else {\n const result: Completion = {\n id: \"0\",\n type: \"completion\",\n model: \"\",\n completion: \"\",\n stop_reason: null,\n };\n for await (const chunk of await promise) {\n yield chunk;\n\n try {\n result.id = chunk.id;\n result.model = chunk.model;\n\n if (chunk.stop_reason) {\n result.stop_reason = chunk.stop_reason;\n }\n if (chunk.model) {\n result.model = chunk.model;\n }\n if (chunk.completion) {\n result.completion += chunk.completion;\n }\n } catch (e) {\n this._diag.debug(e);\n this._config.exceptionLogger?.(e);\n }\n }\n\n this._endSpan({ span, type, result });\n }\n }\n\n private _wrapPromise<T>(\n type: \"chat\" | \"completion\",\n span: Span,\n promise: Promise<T>,\n ): Promise<T> {\n return promise\n .then((result) => {\n return new Promise<T>((resolve) => {\n if (type === \"chat\") {\n this._endSpan({\n type,\n span,\n result: result as Message,\n });\n } else {\n this._endSpan({\n type,\n span,\n result: result as Completion,\n });\n }\n\n resolve(result);\n });\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 _endSpan({\n span,\n type,\n result,\n }:\n | { span: Span; type: \"chat\"; result: Message }\n | {\n span: Span;\n type: \"completion\";\n result: Completion;\n }) {\n try {\n span.setAttribute(SpanAttributes.LLM_RESPONSE_MODEL, result.model);\n if (type === \"chat\" && result.usage) {\n span.setAttribute(\n SpanAttributes.LLM_USAGE_TOTAL_TOKENS,\n result.usage?.input_tokens + result.usage?.output_tokens,\n );\n span.setAttribute(\n SpanAttributes.LLM_USAGE_COMPLETION_TOKENS,\n result.usage?.output_tokens,\n );\n span.setAttribute(\n SpanAttributes.LLM_USAGE_PROMPT_TOKENS,\n result.usage?.input_tokens,\n );\n }\n\n if (result.stop_reason) {\n span.setAttribute(\n `${SpanAttributes.LLM_COMPLETIONS}.0.finish_reason`,\n result.stop_reason,\n );\n }\n\n if (this._shouldSendPrompts()) {\n if (type === \"chat\") {\n span.setAttribute(\n `${SpanAttributes.LLM_COMPLETIONS}.0.role`,\n \"assistant\",\n );\n span.setAttribute(\n `${SpanAttributes.LLM_COMPLETIONS}.0.content`,\n JSON.stringify(result.content),\n );\n } else {\n span.setAttribute(\n `${SpanAttributes.LLM_COMPLETIONS}.0.role`,\n \"assistant\",\n );\n span.setAttribute(\n `${SpanAttributes.LLM_COMPLETIONS}.0.content`,\n result.completion,\n );\n }\n }\n } catch (e) {\n this._diag.debug(e);\n this._config.exceptionLogger?.(e);\n }\n\n span.end();\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","SpanAttributes","SpanKind","__asyncGenerator","__asyncValues","__await","SpanStatusCode","CONTEXT_KEY_ALLOW_TRACE_CONTENT"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -3,7 +3,7 @@ import { trace, context, SpanKind, SpanStatusCode } from '@opentelemetry/api';
|
|
|
3
3
|
import { InstrumentationBase, InstrumentationNodeModuleDefinition, safeExecuteInTheMiddle } from '@opentelemetry/instrumentation';
|
|
4
4
|
import { SpanAttributes, CONTEXT_KEY_ALLOW_TRACE_CONTENT } from '@traceloop/ai-semantic-conventions';
|
|
5
5
|
|
|
6
|
-
var version = "0.
|
|
6
|
+
var version = "0.12.0";
|
|
7
7
|
|
|
8
8
|
class AnthropicInstrumentation extends InstrumentationBase {
|
|
9
9
|
constructor(config = {}) {
|
|
@@ -35,7 +35,7 @@ class AnthropicInstrumentation extends InstrumentationBase {
|
|
|
35
35
|
patchAnthropic(type) {
|
|
36
36
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
37
37
|
const plugin = this;
|
|
38
|
-
// eslint-disable-next-line
|
|
38
|
+
// eslint-disable-next-line
|
|
39
39
|
return (original) => {
|
|
40
40
|
return function method(...args) {
|
|
41
41
|
const span = type === "chat"
|
|
@@ -129,10 +129,10 @@ class AnthropicInstrumentation extends InstrumentationBase {
|
|
|
129
129
|
attributes,
|
|
130
130
|
});
|
|
131
131
|
}
|
|
132
|
-
_streamingWrapPromise(
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
var
|
|
132
|
+
_streamingWrapPromise(_a) {
|
|
133
|
+
return __asyncGenerator(this, arguments, function* _streamingWrapPromise_1({ span, type, promise, }) {
|
|
134
|
+
var _b, e_1, _c, _d, _e, e_2, _f, _g;
|
|
135
|
+
var _h, _j, _k, _l;
|
|
136
136
|
if (type === "chat") {
|
|
137
137
|
const result = {
|
|
138
138
|
id: "0",
|
|
@@ -145,10 +145,10 @@ class AnthropicInstrumentation extends InstrumentationBase {
|
|
|
145
145
|
content: [],
|
|
146
146
|
};
|
|
147
147
|
try {
|
|
148
|
-
for (var
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
const chunk =
|
|
148
|
+
for (var _m = true, _o = __asyncValues(yield __await(promise)), _p; _p = yield __await(_o.next()), _b = _p.done, !_b; _m = true) {
|
|
149
|
+
_d = _p.value;
|
|
150
|
+
_m = false;
|
|
151
|
+
const chunk = _d;
|
|
152
152
|
yield yield __await(chunk);
|
|
153
153
|
try {
|
|
154
154
|
switch (chunk.type) {
|
|
@@ -172,14 +172,14 @@ class AnthropicInstrumentation extends InstrumentationBase {
|
|
|
172
172
|
}
|
|
173
173
|
catch (e) {
|
|
174
174
|
this._diag.debug(e);
|
|
175
|
-
(
|
|
175
|
+
(_j = (_h = this._config).exceptionLogger) === null || _j === void 0 ? void 0 : _j.call(_h, e);
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
178
|
}
|
|
179
179
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
180
180
|
finally {
|
|
181
181
|
try {
|
|
182
|
-
if (!
|
|
182
|
+
if (!_m && !_b && (_c = _o.return)) yield __await(_c.call(_o));
|
|
183
183
|
}
|
|
184
184
|
finally { if (e_1) throw e_1.error; }
|
|
185
185
|
}
|
|
@@ -194,10 +194,10 @@ class AnthropicInstrumentation extends InstrumentationBase {
|
|
|
194
194
|
stop_reason: null,
|
|
195
195
|
};
|
|
196
196
|
try {
|
|
197
|
-
for (var
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
const chunk =
|
|
197
|
+
for (var _q = true, _r = __asyncValues(yield __await(promise)), _s; _s = yield __await(_r.next()), _e = _s.done, !_e; _q = true) {
|
|
198
|
+
_g = _s.value;
|
|
199
|
+
_q = false;
|
|
200
|
+
const chunk = _g;
|
|
201
201
|
yield yield __await(chunk);
|
|
202
202
|
try {
|
|
203
203
|
result.id = chunk.id;
|
|
@@ -214,14 +214,14 @@ class AnthropicInstrumentation extends InstrumentationBase {
|
|
|
214
214
|
}
|
|
215
215
|
catch (e) {
|
|
216
216
|
this._diag.debug(e);
|
|
217
|
-
(
|
|
217
|
+
(_l = (_k = this._config).exceptionLogger) === null || _l === void 0 ? void 0 : _l.call(_k, e);
|
|
218
218
|
}
|
|
219
219
|
}
|
|
220
220
|
}
|
|
221
221
|
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
222
222
|
finally {
|
|
223
223
|
try {
|
|
224
|
-
if (!
|
|
224
|
+
if (!_q && !_e && (_f = _r.return)) yield __await(_f.call(_r));
|
|
225
225
|
}
|
|
226
226
|
finally { if (e_2) throw e_2.error; }
|
|
227
227
|
}
|
|
@@ -271,8 +271,9 @@ class AnthropicInstrumentation extends InstrumentationBase {
|
|
|
271
271
|
span.setAttribute(SpanAttributes.LLM_USAGE_COMPLETION_TOKENS, (_c = result.usage) === null || _c === void 0 ? void 0 : _c.output_tokens);
|
|
272
272
|
span.setAttribute(SpanAttributes.LLM_USAGE_PROMPT_TOKENS, (_d = result.usage) === null || _d === void 0 ? void 0 : _d.input_tokens);
|
|
273
273
|
}
|
|
274
|
-
result.stop_reason
|
|
274
|
+
if (result.stop_reason) {
|
|
275
275
|
span.setAttribute(`${SpanAttributes.LLM_COMPLETIONS}.0.finish_reason`, result.stop_reason);
|
|
276
|
+
}
|
|
276
277
|
if (this._shouldSendPrompts()) {
|
|
277
278
|
if (type === "chat") {
|
|
278
279
|
span.setAttribute(`${SpanAttributes.LLM_COMPLETIONS}.0.role`, "assistant");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@traceloop/instrumentation-anthropic",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.0",
|
|
4
4
|
"description": "Anthropic Instrumentaion",
|
|
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 .
|
|
12
|
-
"lint:fix": "eslint . --
|
|
11
|
+
"lint": "eslint .",
|
|
12
|
+
"lint:fix": "eslint . --fix",
|
|
13
13
|
"test": "ts-mocha -p tsconfig.json 'test/**/*.test.ts'"
|
|
14
14
|
},
|
|
15
15
|
"keywords": [
|
|
@@ -38,20 +38,20 @@
|
|
|
38
38
|
"access": "public"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@opentelemetry/core": "^1.
|
|
42
|
-
"@opentelemetry/instrumentation": "^0.
|
|
43
|
-
"@opentelemetry/semantic-conventions": "^1.
|
|
44
|
-
"@traceloop/ai-semantic-conventions": "^0.
|
|
45
|
-
"tslib": "^2.
|
|
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.12.0",
|
|
45
|
+
"tslib": "^2.8.1"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@anthropic-ai/sdk": "^0.
|
|
48
|
+
"@anthropic-ai/sdk": "^0.32.1",
|
|
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
|
-
"@types/mocha": "^10.0.
|
|
52
|
+
"@types/mocha": "^10.0.10",
|
|
53
53
|
"ts-mocha": "^10.0.0"
|
|
54
54
|
},
|
|
55
55
|
"homepage": "https://github.com/traceloop/openllmetry-js/tree/main/packages/instrumentation-anthropic",
|
|
56
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "485ab84e0db44223854fa858d0439d6d2408c2e2"
|
|
57
57
|
}
|